2013-07-29 69 views
1
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); 
       } 
     } 
} 

但它每次都會打開一個新窗口。我怎樣才能做到這一點?C++在已打開的窗口中執行「打開」

回答

0

您通過的hwnd父母窗口。一般來說,你不能隨意選擇窗口來做你想做的任何事情。你給他們發送一條消息,如果他們理解了這條消息,他們會對此作出反應。例如。 WM_CLOSE幾乎總是被理解,WM_COPYDATA較少。

在這種情況下,它有點複雜。您需要通過IShellWindows找到shell窗口。然後設法調用其IExplorerBrowser::BrowseToObject方法。但是這裏有點太複雜,無法解釋。