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);
}
}
}
Но он каждый раз открывает новое окно. Как мне этого добиться?
hwnd
который вы передаете это родитель окно. В общем, вы не можете получить случайные окна, чтобы делать то, что вы от них хотите. Вы отправляете им сообщение, и если они поймут это сообщение, они отреагируют на него. Например. WM_CLOSE
почти всегда понимают, WM_COPYDATA
менее часто.
В этом случае это немного сложнее. Вам нужно найти окно оболочки через IShellWindows
, а потом умудриться позвонить IExplorerBrowser::BrowseToObject
метод. Но это слишком сложно, чтобы объяснить здесь.
Других решений пока нет …