Ver Mensaje Individual
  #1  
Antiguo 03-04-2017
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Reputación: 0
Snaked Va por buen camino
No consigo que simule pulsacion del boton en aplicacion externa

Código PHP:


void __fastcall TForm1
::Button1Click(TObject *Sender)
{
  
Memo1->Lines->Clear();
  
DETECTA_REDES();
  
ShellExecute(NULL,  // Handle de la fenêtre parent
                 
"open", // Action à effectuer
                 
"JumpLittle.exe", // Fichier
                 
"", // Paramètres
                 
"", // Répertoire par défaut
                 
SW_SHOWDEFAULT);

  
ClickBotonIzquierdo(660, 475);

}



void ClickBotonIzquierdo(int X, int Y)
{
// Esta rutina sirve para hacer un click en las coordenadas
// X-Y de la pantalla.
int ClientX = 0; int ClientY = 0;
HWND Window; HWND Parent;
TRect WindowRect;

// Primero situa el cursor del ratón en la posición deseada
SetCursorPos(X, Y);

// Averiguamos el identificador del objeto que se encuentra
// en dichas coordenadas. (No funciona para ventanas ocultas
// o deshabilitadas)
Window = WindowFromPoint(Point(X, Y));

// Si el identificador devuelto es distinto de 0 es que
// realmente hay un objeto en dichas coordenadas
if (Window < 0 || Window > 0)
{
// Averiguamos las coordenadas del objeto
GetWindowRect(Window, &WindowRect);

// y trasladomos las coordenadas del punto donde se desea
// hacer click a las coordenadas del objeto encontrado
ClientX = X - WindowRect.Left;
ClientY = Y - WindowRect.Top;

// Ahora averiguamos si el objeto tiene padre, por ejemplo,
// si el objeto es un botón o una lista
Parent = GetAncestor(Window, GA_ROOT);

// Si el objeto no tiene padre, es que es una ventana. Si
// tiene padre (una ventana), utilizamos este, ya que el
// mensaje debe pasarse a una ventana.
if (Parent == 0) Parent = Window;

// Comprobamos que la ventana esta en primer plano, es decir,
// que es la ventana activa. Si no es así, la activamos
if (Parent < GetForegroundWindow() || Parent > GetForegroundWindow())
{
SetForegroundWindow(Parent);
}

// Y ahora le enviamos a la ventana los mensajes correspondientes
// para obtener un click del ratón
//SendMessage(Window, WM_LBUTTONDOWN, MK_LBUTTON, X);
//SendMessage(Window, WM_LBUTTONUP, 0, X);

SendMessage(Window,WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARAM(ClientX,ClientY));
SendMessage(Window,WM_LBUTTONUP,MK_LBUTTON,MAKELPARAM(ClientX,ClientY));

 }
} 
tengo este codigo que parece estar bien, no da ningun error pero no pulsa el boton en la aplicacion que invoco (externa a Form1)(simular pulsado con SendMessage())

que puede pasar??? alguien lo sabe?

Última edición por Snaked fecha: 03-04-2017 a las 17:19:32.
Responder Con Cita