Ver Mensaje Individual
  #6  
Antiguo 22-10-2003
cso2000 cso2000 is offline
Miembro
 
Registrado: may 2003
Ubicación: Guadalajara, Jalisco
Posts: 108
Reputación: 22
cso2000 Va por buen camino
Hola Amigos del Foro:


Recurri a este hilo ( no se si es correcto ) porque tengo un pequeño problema Respecto a la solucion de mi problema:


Siguiendo la recomendacion de roman cambie el valor que utilizo para traer la ventana al frente oteniendo por separado el hanle de esta y funciona correctamente el problema es que para algunos programas no funciona Ejemp. el Internet Explorer o el explorador de Windows, o Excel, word...

Haber si me pueden echar la mano el codigo que utilizo para obtener el hilo y el hanle es el sig.

Código:
procedure TForm1.Button1Click(Sender: TObject);
 
    function SacaExe(MangoW:HWND):string;
    {Obtiene el EXE de una tarea}
    {get EXE of a task}
    var 
      Datos    :TProcessEntry32;
      hID       : DWord;
      Snap    : Integer;
    begin 
      GetWindowThreadProcessId(MangoW,@hID);
      Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      try
        Datos.dwSize:=SizeOf(Datos);
        if(Process32First(Snap,Datos))then
        begin 
          repeat 
            if Datos.th32ProcessID=hID then 
            begin 
              Result:=StrPas(Datos.szExeFile);
              Break;
            end; 
          until not(Process32Next(Snap,Datos));
        end; 
      finally
        Windows.CloseHandle(Snap);
      end; 
    end; 
 
 
   function ObtieneVentanas(Mango: HWND;
            Nada: Pointer): Boolean; stdcall;
   var 
      sTemp:string;
   begin 
     Result := True;
     {Mango es el handle de la tarea encontrada}
     {Añadimos el .EXE si no está ya añadido...}
     sTemp:=SacaExe(Mango);
      with Form1.ListBox1.Items do
        if IndexOf(sTemp) = - 1 then begin
            Add(sTemp);
            Form1.lstTh.add( inttostr( GetWindowThreadProcessId(Mango,NIL) ) ); 
            Arreglo_HWND[ Form1.lstTh.count - 1 ] := Mango; 
        end;
   end; 
 
begin 
  EnumWindows( @ObtieneVentanas, 0 );
end;

Espero que alguien me pueda dar una pista, de antemano Garcias a Todos.
Responder Con Cita