在 C++ 中使用 Ole 试用 Microsoft Word Builder:如何将Word置于前台
我有一个代码(工作正常),用于使用 C++ Builder 来引导单词。 它对于访问文档中的不同书签很有用。
Variant vNom, vWDocuments, vWDocument, vMSWord, vSignets, vSignet;
vNom = WideString("blabla.doc");
try
{
vMSWord = Variant::GetActiveObject("Word.Application");
}
catch(...)
{
vMSWord = Variant::CreateObject("Word.Application");
}
vMSWord.OlePropertySet("Visible", true);
vWDocuments = vMSWord.OlePropertyGet("Documents");
vWDocument = vWDocuments.OleFunction("Open", vNom);
vSignets = vWDocument.OlePropertyGet("BookMarks");
if (vSignets.OleFunction("Exists", signet))
{
vSignet = vSignets.OleFunction("Item", signet);
vSignet.OleFunction("Select");
}
但是,一旦打开文档,用户就无法再看到何时到达其他书签,因为应用程序停留在后台。
有谁知道如何让Word显示在前台,或者点亮任务栏中的文档?
I've got a code (which works fine) for piloting word with C++ Builder.
It's useful for reaching different bookmarks in the document.
Variant vNom, vWDocuments, vWDocument, vMSWord, vSignets, vSignet;
vNom = WideString("blabla.doc");
try
{
vMSWord = Variant::GetActiveObject("Word.Application");
}
catch(...)
{
vMSWord = Variant::CreateObject("Word.Application");
}
vMSWord.OlePropertySet("Visible", true);
vWDocuments = vMSWord.OlePropertyGet("Documents");
vWDocument = vWDocuments.OleFunction("Open", vNom);
vSignets = vWDocument.OlePropertyGet("BookMarks");
if (vSignets.OleFunction("Exists", signet))
{
vSignet = vSignets.OleFunction("Item", signet);
vSignet.OleFunction("Select");
}
But once the document is opened, the user can no longer see when an other bookmark has been reached, since the application stays in background.
Does anyone know how i can do to make Word displayed in the foreground, or to light-up the document in the taskbar?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有一个简单的技巧可以做到这一点(使用 Win32 API):
您必须使用 EnumWindows函数。
There is a simple trick to do that (using Win32 API):
You must find the hwnd of word using the EnumWindows function.
我使用“FindWindow”方法:
I use the "FindWindow" method: