Czy kto wie jak znaleć uchwyt programu, nie znajšc nazwy jego okna (czyli FindWindow odpada). Może co po nazwie execa?
FindWindow nie musi mieć nazwy okna. Wystarczy mu nazwa klasy.
http://4programmers.net/Forum/search.html?q=findwindow&sort=post_time&sort_by=DESC&f=0
Jeśli to też odpada, to możesz przeszukać wszystkie procesy i porównać ścieżkę do programu:
CreateToolhelp32Snapshot
http://4programmers.net/Forum/search.html?q=CreateToolhelp32Snapshot&sort=post_time&sort_by=DESC&f=0&x=33&y=11
W MSDN-ie wpisz "HOWTO: Get the Filename Given a Window Handle"
i tutaj masz fajny programik znajdujacy nazwe pliku na podstawie hWnd.
Ofcoz trza go zmodyfikowac i zamiast FindWIndow uzyc EnumWindows
i dla kazdego zwroconego przez nia hWnd odpalac DisplayFilename( dwActiveProcessId );
z tego progsa i patrzyc czy otrzymasz nazwe swojego pliku !!
Jemu chodzi o cos odwrotnego, zna nazwe pliku, a nie ma handle do głównego okna
Ojej :> ale nadal to co napisalem pasuje do znalezienia hWnd !!!!
Czytaj dokladnie !!!! [diabel] Listujesz wszystkie hWnd (do tego wcale nie potrzebujesz hWnd - EnumWindow !!!!!) pobierasz za pomoca wyzej pokazanej procedury nazwe pliku exe i jesli sie zgadza z szukana nazwa to masz szukane hWnd !!!! [diabel] Proste tylko troszke pomyslec :-8
//primo - napisałem to samo, ale z użyciem innych funkcji
//secundo - oszczędzaj emotki "!!" - zbyt często jej nadużywasz - nie sądzisz, że post traci na czytelności? :-P - m.M
A może coś takiego?
function GetWindowHandle(ProcID : integer) : THandle;
var pHandle : THandle;
begin
Result := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,FALSE, ProcID);
end;
Jeśli nie ma takiego procesu funkcja zwróci 0. Proste i sam to wykombinowałem! :> :p
Jeśli nie ma takiego procesu funkcja zwróci 0. Proste i sam to wykombinowałem! :> :p
Świetnie, gratulacje! Tylko czy to ma jakiś związek z problemem...?