c ++ ShellExecute在已打开的窗口中“打开”

时间:2013-07-29 13:15:46

标签: c++ shellexecute hwnd

I'm trying to open a new folder in the same window that is already opened. This is the code:

if (DirectoryExists(myfolder)) {
    HWND currenthwnd,hwnd;

    hwnd=NULL;
    currenthwnd=GetForegroundWindow();
        if (currenthwnd!=hwnd)
        {
        hwnd=currenthwnd;
            if (hwnd!=NULL) 
                {
                ShellExecute(hwnd, "open", myfolder, NULL, NULL, SW_SHOW);
                }
        }
}

但它每次都会打开一个新窗口。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您传递的hwnd窗口。一般来说,你无法获得随机窗口来做你想要的任何事情。你给他们发了一条消息,如果他们理解了这些消息,他们就会对此做出反应。例如。 WM_CLOSE几乎总是被理解,WM_COPYDATA不太常见。

在这种情况下,它有点复杂。您需要通过IShellWindows找到shell窗口。然后设法调用其IExplorerBrowser::BrowseToObject方法。但这有点太复杂了,不能在这里解释。