?
hustbaer schrieb:
Anmerkung: wenn die Applikation den nicht den "main Thread" verwendet um die GUI anzuzeigen wird das so nicht mehr funktionieren.
In dem Fall müsste man dann erstmal alle Threads des Prozesses ermitteln, und dann für jeden einzelnen mit EnumThreadWindows nach Fenstern suchen.
Ich denke ich weiss was du meist, auf das Problem bin ich glaub ich gestossen, hab das so gelöst:
HWND MyFindWnd(DWORD myProcessId, DWORD myThreadId){
HWND hFind = 0;
DWORD dwProcessId, dwThreadId;
hFind = GetWindow(GetDesktopWindow(), GW_CHILD);
while(hFind){
dwProcessId = 0;
dwThreadId = GetWindowThreadProcessId(hFind, &dwProcessId);
if((dwThreadId == myThreadId) && (dwProcessId == myProcessId)){
char ClassName[256];
GetClassName(hFind, ClassName, sizeof(ClassName));
if(!_stricmp(ClassName, "DPWindowClass")){
return hFind;
}
}
hFind = GetWindow(hFind, GW_HWNDNEXT);
}
return 0;
}
Wobei ich myProcessId und myThreadId beim Erstellen mit CreateProcess erhalten hatte. Den Classnme hatte ich zuvor mit Winspy++ bestimmt.