2013-07-29 6 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++ ShellExecute 이미 열려있는 창에서 "열림"

답변

0

hwnd부모 창입니다. 일반적으로 임의의 창을 통해 원하는 모든 작업을 수행 할 수 없습니다. 당신은 그들에게 메시지를 보내고, 그들이 메시지를 이해한다면 그들은 그것에 반응 할 것입니다. 예 : WM_CLOSE은 거의 항상 이해되며 WM_COPYDATA은 자주 발생하지 않습니다.

이 경우에는 다소 복잡합니다. 셸 창은 IShellWindows을 통해 찾아야합니다. 그 다음 IExplorerBrowser::BrowseToObject 메서드를 호출 할 수 있습니다. 하지만 여기서 설명하기에는 너무 복잡합니다.