Ver Mensaje Individual
  #6  
Antiguo 18-06-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Quizás esto te de pistas:

Código Delphi [-]
procedure ListWinInfoFromPId(PId: DWORD; Strings: TStrings);
type
  TWinParam = record
    Handle: THandle;
    PId: DWORD;
  end;
  PWinParam = ^TWinParam;
var
  WinParam: TWinParam;
  Buffer: array [1..255] of char;

  function EnumWindowsProc(Handle: Thandle; lParam: LPARAM): BOOL; stdcall;
  var
    PId: DWORD;
  begin
    Result:= true;
    PId:= 0;
    GetWindowThreadProcessId(Handle, PId);
    if PWinParam(lParam).PId = PId then
    begin
      PWinParam(lParam).Handle:= Handle;
      Result:= false;
    end;
  end;

begin
  WinParam.PId:= PId;
  EnumWindows(@EnumWindowsProc, LPARAM(@WinParam));
  Strings.Clear;
  repeat
    Strings.Add('hWnd: ' + IntToHex(WinParam.Handle, 8));
    GetWindowText(WinParam.Handle, @Buffer, 255);
    Strings.Add('Caption: ' + Buffer);
    GetClassName(WinParam.Handle, @Buffer, 255);
    Strings.Add('Clase: ' + Buffer);
    Strings.Add('-----------------------------------------------');
    WinParam.Handle:= Windows.GetParent(WinParam.Handle);
  until WinParam.Handle = 0;
end;

Ejemplo de uso:
Código Delphi [-]
ListWinInfoFromPId(4800, Memo1.Lines);


Saludos.
Responder Con Cita