Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Presionar "n" veces una tecla con click derecho (https://www.clubdelphi.com/foros/showthread.php?t=87343)

Olenkaguilar 17-12-2014 09:51:56

Presionar "n" veces una tecla con click derecho
 
Buenas tengo 3 Edit y un button, como puedo hacer si la diferencia entre Edit1 -Edit2 = Edit3, el resultado que salga presione la tecla "w" el número de veces que sale como respuesta(Edit3), no dentro del form si no fuera(en mi segunda aplicación), por eso pensé en un button para guardar y con click derecho ejecutar fuera del form. Graciass

Ñuño Martínez 17-12-2014 10:52:39

No me he enterado de nada. :confused:

¿Mostrar el número de veces que se a pulsado la tecla "w" las veces que diga Edit3 como diferencia de Edit1 y Edit2 dentro de Form no pero fuera de él en una segunda aplicación que hace qué?

Olenkaguilar 17-12-2014 12:46:23

sorry
 
Segunda aplicación me refiero a mi escritorio o cualquier página web, menos el form
Oh bueno, como puedo presionar una tecla, la cantidad que me indique un Edit.text... si el Edit tiene como valor 5, presionar 5 veces la tecla "w" fuera del programa.

ecfisa 17-12-2014 19:14:43

Hola Olenkaguilar.
Cita:

Empezado por Olenkaguilar (Mensaje 486754)
Segunda aplicación me refiero a mi escritorio o cualquier página web, menos el form
Oh bueno, como puedo presionar una tecla, la cantidad que me indique un Edit.text... si el Edit tiene como valor 5, presionar 5 veces la tecla "w" fuera del programa.

Te pongo un ejemplo que envía la pulsación de una tecla al Bloc de notas:
Código Delphi [-]
...
implementation

const
  APPNAME =  'Sin título: Bloc de notas';

procedure VKeyPress(const aKey: Word);
var
  ti: TInput;
begin
  ZeroMemory(@ti, SizeOf(ti));
  ti.Itype     := INPUT_KEYBOARD;
  ti.ki.wVk    := aKey;
  ti.ki.dwFlags:= 0;
  SendInput(1, ti, SizeOf(ti));
end;

// Ejemplo de llamada
procedure TForm1.Button1Click(Sender: TObject);
var
  h: HWND;
  i,c: Integer;
begin
  h:= FindWindow(nil, PChar(APPNAME));
  c:= StrToIntDef(Edit1.Text,0);
  if (h <> 0) and (c > 0) then
  begin
    BringWindowToTop(h);
    for i:= 1 to c do
      VKeyPress($57 {'w'});
  end;
end;

Saludos :)

Olenkaguilar 18-12-2014 04:59:38

ecfisa muchas gracias me funciona perfecto con un notepad, pero como puedo hacerlo con una ventana de chrome, por ejemplo tengo Facebook abierto
Código Delphi [-]
const
  APPNAME =  'Facebook';

Pero nada, o es la dirección de chrome c:\archivos de programas....

ecfisa 18-12-2014 05:34:39

Hola

La función FindWindow devuelve el handle de una ventana cuando coincide con los argumentos enviados en los parametros (uno, otro o ambos) o el valor cero de lo contrario.

En mi caso, que uso Mozilla Firefox, la cadena sería:
Código Delphi [-]
const
  APPNAME =  'Facebook - Mozilla Firefox'

Con toda seguridad el nombre sea otro y la condición no se cumpla, con un simple else te avisará si está sucediendo eso:
Código Delphi [-]
var
  h: HWND;
  i,c: Integer;
begin
  h:= FindWindow(nil, PChar(APPNAME));
  c:= StrToIntDef(Edit1.Text,0);
  if (h <> 0) and (c > 0) then
  begin
    BringWindowToTop(h);
    for i:= 1 to c do
      VKeyPress($57 {'w'});
  end
  else 
    ShowMessage('Ventana no encontrada');
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 05:55:43.

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