在 C++ 中使用 Ole 试用 Microsoft Word Builder:如何将Word置于前台

发布于 2024-08-24 12:05:40 字数 815 浏览 6 评论 0原文

我有一个代码(工作正常),用于使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

囍笑 2024-08-31 12:05:40

有一个简单的技巧可以做到这一点(使用 Win32 API):

ShowWindow(hwnd, SW_MINIMIZE);
ShowWindow(hwnd, SW_RESTORE);

您必须使用 EnumWindows函数。

There is a simple trick to do that (using Win32 API):

ShowWindow(hwnd, SW_MINIMIZE);
ShowWindow(hwnd, SW_RESTORE);

You must find the hwnd of word using the EnumWindows function.

梦在深巷 2024-08-31 12:05:40

我使用“FindWindow”方法:

HWND hwnd = FindWindowA(NULL,"blabla.doc - Microsoft Word");
    ShowWindow(hwnd, SW_MINIMIZE);
    ShowWindow(hwnd, SW_RESTORE);

I use the "FindWindow" method:

HWND hwnd = FindWindowA(NULL,"blabla.doc - Microsoft Word");
    ShowWindow(hwnd, SW_MINIMIZE);
    ShowWindow(hwnd, SW_RESTORE);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文