대부분의 활성 Windows 탐색기 인스턴스의 전체 경로를 검색해야합니다.Windows 탐색기의 주소 표시 줄에 핸들 가져 오기 편집 컨트롤
그래서 Explorer.exe에 대한 핸들을 가지고 있습니다. HWND l_pExplorerhwnd = :: GetForegroundWindow();
검색된이 핸들을 사용하여 주소 표시 줄 편집 컨트롤을 가져와야합니다. Spy ++를 사용하고 ToolbarWindow32로 편집 컨트롤의 클래스 이름을 가져 왔습니다.
이제 다음 코드 스 니펫을 사용하여 FindWindowEx를 사용하여 창을 찾으려고했습니다. 그러나 나는 그것을 회수 할 수 없다.
HWND l_pExplorerhwnd = ::GetForegroundWindow();
TCHAR l_szTempName[MAX_PATH];
if(l_pExplorerhwnd)
{
::GetWindowModuleFileName(l_pExplorerhwnd, l_szTempName, MAX_PATH);
MessageBox(0, l_szTempName, 0, 0);
if(::FindWindowEx(l_pExplorerhwnd, NULL, L"ToolbarWindow32", NULL))
{
::GetWindowText(::FindWindowEx(l_pExplorerhwnd, NULL, L"ToolbarWindow32", NULL), l_szTempName, MAX_PATH);
MessageBox(0, l_szTempName, 0, 0);
}
else
{
MessageBox(0, L"Error Error ", 0, 0);
}
}
else
{
MessageBox(0, L"Error Error Error", 0, 0);
}
결코 다른 프로세스의 창 계층을 혼란시키지 마십시오. 언제든지 변경 될 수 있으며 무례한 것입니다. 'shdocvw'에'ShellWindowsClass'와 같은 API가 있습니다. 당신이 필요로하는 것을 할 수도 있지만, 그런 종류의 일은 싫은 일이 있습니다. 당신이하려고하는 것에 대한 합법적 인 이유가 거의 없습니다. –
아마도 주소 표시 줄로하려는 의도를 설명 할 수 있습니다. 아마 더 좋은 방법이있을 것입니다. 예를 들어 탐색기 창을보고 싶은지 또는보고있는 내용을 변경하려는 경우 [자동화 인터페이스 사용] (http://blogs.msdn.com/b/)을 참조하십시오. oldnewthing/archive/2004/07/20/188696.aspx) Explorer에 프로그램을 통합하려면 [ExplorerBrowser 객체 사용] (http://blogs.msdn.com/b/oldnewthing/archive/2011 /03/25/10145644.aspx).) –