Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2017
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 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(660475);

}



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

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

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

// Si el identificador devuelto es distinto de 0 es que
// realmente hay un objeto en dichas coordenadas
if (Window || 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 WindowRect.Left;
ClientY WindowRect.Top;

// Ahora averiguamos si el objeto tiene padre, por ejemplo,
// si el objeto es un botón o una lista
Parent GetAncestor(WindowGA_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 == 0Parent 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
  #2  
Antiguo 03-04-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Snaked.

El código funciona bién, ¿ Seguro que el botón se encuentra en las coordenadas que indicas ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 03-04-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cómo dice ecfisa debes tener claras las coordenadas.
Yo prefiero una simulación de cluck a bajo nivel:
Código PHP:
int MouseClick(int xint y)
{
  
TPoint P;
  
GetCursorPos(&P); // Guardo las coordenadas del mouse

  
SetCursorPos(xy);

  
INPUT Input[2];
    ::
ZeroMemory(Inputsizeof(Input));
  
Input[0].type INPUT_MOUSE;
  
Input[0].mi.dx x;
  
Input[0].mi.dy y;
  
Input[0].mi.dwFlags MOUSEEVENTF_LEFTDOWN;

  
Input[1].type INPUT_MOUSE;
  
Input[1].mi.dx x;
  
Input[1].mi.dy y;
  
Input[1].mi.dwFlags MOUSEEVENTF_LEFTUP;
  
int a SendInput(2Inputsizeof(INPUT));

  
SetCursorPos(P.xP.y); // Restauro las coordenadas del Mouse

  
return a;  // Retorno el número de eventos enviados

Siendo X e Y coordenadas absolutas en pantalla.

Saludos.
Responder Con Cita
  #4  
Antiguo 03-04-2017
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
gracias a los 2 por la rapida contestacion......

milagro milagro!!!.... el codigo de scafandra funciona a la perfeccion X-D

te debo unas tapitas y una cerveza escafandra......8)
Responder Con Cita
  #5  
Antiguo 04-04-2017
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
y la pulsacion de una tecla del teclado??

he intentado hacer por mi cuenta la pulsacion de teclado pero me arroja un par de errores que dicen que espera un TagInput * en vez de TagInput

podriais revisar este codigo???

Cita:
INPUT Input;
Sleep(3000);

for(int cont = 0; cont < 8; cont++)
{
char TECLA;
TECLA = PIN[cont];

Input.type = INPUT_KEYBOARD;
Input.ki.wVk = 1; // Tecla a simular

// Presionar tecla
SendInput(1, &Input, sizeof(INPUT));

// Soltar tecla
Input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &Input, sizeof(INPUT));

}
Responder Con Cita
  #6  
Antiguo 04-04-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Revisa este tema donde publico una función que simula pulsación y liberación de teclas.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con Aplicacion Externa!!! AndrecitoPz Varios 4 20-11-2012 01:01:54
Presionar botón de aplicacion externa pedrosan API de Windows 7 24-11-2009 13:35:59
Aplicacion externa a c++ alloger C++ Builder 1 28-10-2006 00:37:09
Controlar pulsacion de una tecla desde toda la aplicacion Sick boy OOP 5 21-05-2004 17:30:48
Cómo hacer para que la aplicación detecte la pulsación de 2 teclas ¿? Slaughter Varios 5 13-02-2004 15:37:28


La franja horaria es GMT +2. Ahora son las 11:31:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi