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);
}
}
}
但它每次都会打开一个新窗口。我怎样才能做到这一点?
答案 0 :(得分:0)
您传递的hwnd
是父窗口。一般来说,你无法获得随机窗口来做你想要的任何事情。你给他们发了一条消息,如果他们理解了这些消息,他们就会对此做出反应。例如。 WM_CLOSE
几乎总是被理解,WM_COPYDATA
不太常见。
在这种情况下,它有点复杂。您需要通过IShellWindows
找到shell窗口。然后设法调用其IExplorerBrowser::BrowseToObject
方法。但这有点太复杂了,不能在这里解释。