Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 19
rauros Va por buen camino
Sí, me vale lo de las teclas. Estoy provando con una cosa pero me faltan algunas variables por declarar. El ejemplo es este:

http://www.clubdelphi.com/foros/showthread.php?t=31113

Pero no sé que tipo es hwndWinamp ni rtrim.

¿Y en ese ejemplo donde tengo que poner la manera de llegar a esa aplicación?
¿O tiene que ser la que está delante de todas?

He visto FindWindow(nil,pchar(rtrim(gWindowName))), ¿El nombre va en el campo nil?
Responder Con Cita
  #2  
Antiguo 21-06-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 19
rauros Va por buen camino
Qué cojones es esto?
Responder Con Cita
  #3  
Antiguo 22-06-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
FindWindow(nil,pchar(rtrim(gWindowName)))
No he podido ver el hilo que comentas, pero FindWindow debe ser una funcion para devolver el handle de una ventana dando su nombre

gWindowName es un string.
RTrim es una función que corta los espacios en blanco de la derecha de la cadena
pchar() convierte a un string en una cadena como las que se utilizan en C.
En Pascal y Delphi los string se definían como un byte que dice qué longitud tiene y luego los caracteres que lo componen.
En C, los string son caracteres que terminan en un caracter especial que marca el final.

El handle es finalmente un entero.

Con esto podrás saber cual es el handle de una ventan de la cual sabes el nombre. Luego, utilizando ese handle podrás enviarle información a esa ventana (teclas en tu caso).
Responder Con Cita
  #4  
Antiguo 22-06-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 19
rauros Va por buen camino
¿Entonces RTrim no es necesario si no escribo espacios? Es que delphi me dice que no tengo RTrim declarado...

¿Y en GWindowName pongo el nombre de la aplicación, no?

Código Delphi [-]
 hwndWinamp := FindWindow(nil,pchar(rtrim(gWindowName))); //localizamos la ventana

  IF hwndWinamp = 0 THEN BEGIN
     hwndWinamp := FindWindow(pchar(rtrim(gWindowName)),nil); //gWindowName es una variable que contiene 
//el handle de la ventana sobre la que debemos actuar
     IF hwndWinamp = 0 THEN BEGIN
       ShowMessage(gWindowName + ' Ventana NO ENCONTRADA');
       exit;
     end;
  END;
  SetForegroundWindow(hwndWinamp); //pasamos a esa ventana
  SetForegroundWindow(hwndWinamp);
  //Aqui tienes varios ejemplos de envio de pulsaciones de teclas
  PostKeyEx32(VK_HOME, [], TRUE);          
  PostKeyEx32(VK_END, [SSsHIFT], TRUE);
  PostKeyEx32(VK_INSERT, [ssCtrl], TRUE); 
  SetForegroundWindow(Handle); //De esta manera volvemos a nuestra aplicacion    
  PostKeyEx32(ord('V'), [SSCTRL], TRUE);

Ahí está el ejemplo. Lo pongo porque no se como debo declarar HwndWinamp.
He probado con HwndWinamp: handle; pero no funciona porque lo más seguro es que me lo haya inventado xD.
Responder Con Cita
  #5  
Antiguo 22-06-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Supongo que si declaras HWndWinamp como integer y gWindowName com string será suficiente.
De todos modos, supongo que si te pones sobre la función FindWindow y presionas F1, te dará algo de información sobre esta API. (No tengo el Delphi para probar ahora)

mira este hilo que creo que solucionará todas tus dudas
Responder Con Cita
  #6  
Antiguo 26-06-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 19
rauros Va por buen camino
He conseguido compilar pero no encuentra ninguna ventana... Os puedo dejar el código para que me lo corrijan? (no es mucho)

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  gWindowName:='firefox.exe';
  hwndWinamp := FindWindow(nil,pchar(trim(gWindowName))) ; //localizamos la ventana

  IF hwndWinamp = 0 THEN BEGIN
     hwndWinamp := FindWindow(pchar(trim(gWindowName)),nil) ; //gWindowName es una variable que contiene
//el handle de la ventana sobre la que debemos actuar
     IF hwndWinamp = 0 THEN BEGIN
       ShowMessage(gWindowName + ' Ventana NO ENCONTRADA');
       exit;
     end;
  END;
  SetForegroundWindow(hwndWinamp); //pasamos a esa ventana
  SetForegroundWindow(hwndWinamp);
  //Aqui tienes varios ejemplos de envio de pulsaciones de teclas
  PostKeyEx32(VK_HOME, [], TRUE);
  PostKeyEx32(VK_END, [SSsHIFT], TRUE);
  PostKeyEx32(VK_INSERT, [ssCtrl], TRUE);
  SetForegroundWindow(Handle); //De esta manera volvemos a nuestra aplicacion
  PostKeyEx32(ord('V'), [SSCTRL], TRUE);
end;

He empezado provando con firefox pero siempre me dice
firefox.exe VENTANA NO ENCONTRADA
Responder Con Cita
  #7  
Antiguo 26-06-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Prueba cambiando el primer parámetro del FindWindow por:

PChar('MozillaUIWindowClass')

Que es la clase para la ventana principal de FF; Deja el segundo parámetro a nil.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 26-06-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 19
rauros Va por buen camino
Vale pero eso era para hacer una prueba. ¿y si necesito usar el proceso de un videojuego como puedo saber el tipo de clase para la ventana? Gracias a todos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Editar sobre DBGrid Ignacio Varios 7 25-07-2012 18:13:20
Duda editar sobre grid hugohiram Conexión con bases de datos 1 07-01-2008 17:24:20
Sobre los procesos Suriu Windows 1 07-05-2007 22:11:40
"enditall" finalizar aplicacs y procesos innecesarios para por ejemplo...editar video images API de Windows 7 20-09-2004 09:55:14


La franja horaria es GMT +2. Ahora son las 23:16:25.


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