代码之家  ›  专栏  ›  技术社区  ›  Getz

在C++ Builder中用OLE引导微软Word:如何将Word放到前景中

  •  1
  • Getz  · 技术社区  · 16 年前

    它对于访问文档中的不同书签很有用。

    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显示在前台,或者点亮任务栏中的文档吗?

    2 回复  |  直到 11 年前
        1
  •  1
  •   RED SOFT ADAIR    16 年前

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

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

    EnumWindows 功能。

        2
  •  0
  •   Getz    16 年前

    我使用“FindWindow”方法:

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