Professional Documents
Culture Documents
Buscar...
Comunidad Delphiaccess
Foros
Miembros
Chat
Calendario
En este tema
Contenido nuevo
c0lo
#1
Advanced Member
Bueno ocurre que tengo una aplicacion que no tiene Caption... o titulo en si... lo cual no puedo usar
1. WHandle := FindWindow(nil, 'Caption');
Miembro Platino
241 mensajes
Location Lima-Peru
Ahora ocurre que si se la clase pero si en una PC o cliente X hay una clase similar... e ahi un problemita...
Lo que quiero es obtener el Window Handle de un Proceso cualquiera..
Sabiendo el nombre del proceso.. obtener el Handle .. se que para un proces existe X Windows Handle pero para un
Window Handle solo existe un proceso...
pdfcrowd.com
c0lo
#2
Advanced Member
http://www.delphitop...ncheng/219.html
http://delphi.ktop.c...id=79&tid=61654
Location Lima-Peru
pdfcrowd.com
escafandra
Advanced Member
#3
Escrito 10 March 2010 - 09:51 AM
mas de una instancia de un proceso o procesos con nombres similares. Debers saber cual es el que te interesa.
Mejor sera conociendo el Pid del proceso que te interesa, pues es un identificador nico.
Para conseguir lo que quieres sabiendo slo el nombre de un proceso, primero debes buscar el Pid del proceso. En
el ejemplo nos conformamos con el primero que encontremos. Despus enumeramos todas las ventanas hasta
encontrar una que pertenezca al proceso en cuestin y de esta calculamos su parent ltimo:
1.
2. struct WINDATA{
pdfcrowd.com
3.
HWND
hWin;
4.
DWORD ProcessId;
5. };
6.
7. BOOL CALLBACK EnumWindowsProc(HANDLE Handle, WINDATA* Data)
8. {
9.
DWORD ProcessId;
10.
GetWindowThreadProcessId(Handle, &ProcessId);
11.
if(Data->ProcessId == ProcessId){
12.
Data->hWin = Handle;
13.
return false;
14.
15.
return true;
16. }
17.
18. HWND GetWindow(char* FileName)
19. {
20.
21.
22.
23.
24.
25.
do{
26.
if(!stricmp(proc.szExeFile, FileName)){
27.
Data.ProcessId = proc.th32ProcessID;
28.
EnumWindows((PROC)EnumWindowsProc, LPARAM(&Data));
29.
break;
30.
31.
}while(Process32Next(hSysSnapshot, &proc));
32.
33.
CloseHandle(hSysSnapshot);
pdfcrowd.com
34.
35.
// Encontar MainWindow
36.
37.
do {
38.
Data.hWin = hParent;
39.
hParent = GetParent(Data.hWin);
40.
}while(hParent);
41.
42.
return Data.hWin;
43. }
44.
Ejemplo de uso:
1.
2. HWND hW = GetWindow("Notepad.exe");
3.
Espero que te aclare las ideas.
Saludos.
Reportar
c0lo
Advanced Member
#4
Escrito 10 March 2010 - 09:55 AM
pdfcrowd.com
Volver a API
Like
Espaol (ES)
Ayuda
Privacy Policy
Community Forum Softw are by IP.Board 3.4.7
pdfcrowd.com