Ver Mensaje Individual
  #2  
Antiguo 28-01-2008
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Reputación: 18
aeff Va camino a la fama
saludos!!

me parece que no te funciona porque ese código que ejecutas no se encuentra dentro de la dirección de memoria del programa "Instalador" o de otro cualquiera al que intentas clickearle el button,

para lograr esto de esa *forma que intentas*, creo que debes inyectarte dentro de ese otro programa, eso de inyecciones es un poco graaaande y trabajoso, te presento una forma mas cómoda y sin complicarnos con direcciones de memorias u otra cosa:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  hWnd, hBtn: Cardinal;
  btnPos: TWindowInfo;
  vCPosBefore: TPoint;
  X, Y: Integer;
begin

  hWnd := FindWindow(nil, 'Ejecutar');
  hBtn := FindWindowEx(hWnd, 0, 'Button', '&Examinar...');

  GetCursorPos(vCPosBefore);
  SetForegroundWindow(hWnd);

  if GetWindowInfo(hBtn, btnPos) = true then
    begin
      X := btnPos.rcClient.Left + ((btnPos.rcClient.Right - btnPos.rcClient.Left) div 2);
      Y := btnPos.rcClient.Top + ((btnPos.rcClient.Bottom - btnPos.rcClient.Top) div 2) ;
      SetCursorPos(X, Y);
      mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
      Sleep(0);
      mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    end;

  // Para regresar a nuestra ventanita, claro, si lo deseas...
  SetCursorPos(vCPosBefore.x, vCPosBefore.y);
  SetForegroundWindow(Handle);
end;

que crees? abre la ventanita "Ejecutar" de Windows y pruébalo!!!

de todas formas, lo que intentabas hacer presionando espacio en el button, creo que antes debes pasarle el foco, y aún así, yo no lo haría de esa forma, por ejemplo, te muestro como lo haría si quisiera mandar a clickear un button de mi formulario:

Código Delphi [-]
  SendMessage(Form1.Handle, WM_COMMAND, 0, Button1. Handle);

** claro, que este código se ejecuta dentro de la misma dirección de memoria de mi programa... por eso me funciona ok!**


espero que te funcione!!!

saludos,
Responder Con Cita