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.