Hola !
Abro una nueva aplicación con ShellExecuteEx a través de un TShellExecuteInfo y si no estoy errado, debería poder obtener el Handle de la aplicación recién creada con el valor hProcess, no ??
Código Delphi
[-]procedure TForm.LabelClick(Sender: TObject);
var
ExecInfo : TShellExecuteInfo;
begin
Screen.Cursor := crHourGlass;
ExecInfo.cbSize := SizeOf(ExecInfo);
ExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ExecInfo.Wnd := Handle;
ExecInfo.lpVerb := 'open';
ExecInfo.lpFile := PChar('PaginaWeb');
ExecInfo.lpParameters := nil;
ExecInfo.lpDirectory := nil;
ExecInfo.nShow := SW_SHOW;
ShellExecuteEx(@ExecInfo);
Aux_Handle := ExecInfo.hProcess;
WaitForSingleObject(ExecInfo.hProcess, INFINITE);
... después sigo con otros comandos.
La variable Aux_Handle debería contener el Handle del Browser de internet que esté configurado por defecto en el sistema y que acabo de abrir.
Lo que quiero conseguir es que más tarde, cuando se devuelva el foco a mi aplicación Delphi, se realicen una serie de operaciones y finalmente se devuelva el foco a la ventana del browser que acabo de abrir.
Para ello utilizo el evento OnActivate del Form en cuestión que previamente puse en otro sitio a Form.OnActivate := Form.ActivateParticular :
Código Delphi
[-]procedure TForm.ActivateParticular(Sender: TObject);
begin
Self.OnActivate := nil;
SendMessage(Aux_Handle, WM_SETFOCUS, 0, 0);
end;
Pero no me devuelve el foco a la ventana del explorador de internet anterior.
Qué estoy haciendo mal ?