Ver Mensaje Individual
  #7  
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
Y mejor de esta otra forma:

Código Delphi [-]
procedure ListWinInfoFromPId(PId: DWORD; Strings: TStrings);
type
  TWinParam = record
    PId: DWORD;
    S: TStrings;
  end;
  PWinParam = ^TWinParam;
var
  WinParam: TWinParam;

  function EnumWindowsProc(Handle: Thandle; lParam: LPARAM): BOOL; stdcall;
  var
    PId: DWORD;
    Buffer: array [1..255] of char;
  begin
    Result:= true;
    PId:= 0;
    GetWindowThreadProcessId(Handle, PId);
    if PWinParam(lParam).PId = PId then
    begin
      PWinParam(lParam).S.Add('hWnd: ' + IntToHex(Handle, 8)+'h');
      GetWindowText(Handle, @Buffer, 255);
      PWinParam(lParam).S.Add('Caption: ' + Buffer);
      GetClassName(Handle, @Buffer, 255);
      PWinParam(lParam).S.Add('Clase: ' + Buffer);
      PWinParam(lParam).S.Add('-----------------------------------------------');
      Result:= true;
    end;
  end;

begin
  Strings.Clear;
  WinParam.PId:= PId;
  WinParam.S:= Strings;
  EnumWindows(@EnumWindowsProc, LPARAM(@WinParam));
end;

Con el mismo ejemplo de uso:

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


Saludos.

Última edición por escafandra fecha: 18-06-2012 a las 12:27:05.
Responder Con Cita