Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2018
Canela1990 Canela1990 is offline
Registrado
NULL
 
Registrado: ene 2018
Posts: 3
Poder: 0
Canela1990 Va por buen camino
Lightbulb Login en programas externos.

¡Hola! Antes que nada, me he tomado el trabajo de buscar en google y en los archivos del foro, pero solo encuentro soluciones parecidas que tampoco logran encaminarme

Estoy intentando programar una aplicación que llame a un ejecutable hecho por un tercero y que inicie sesión automáticamente con un usuario y contraseña que yo disponga (se que es viable porque ya lo vi hecho por alguien más, pero no se si lo hizo usando Delphi, por obvias razones de seguridad quisiera hacerlo yo misma)

En las soluciones parecidas que mencioné al comienzo vi que utilizaban shellexecute, con el cual no tuve ningún tipo de problema creando un programa sencillo que abra el ejecutable, lo hace perfectamente, pero no me queda claro cómo pasarle el usuario y la contraseña de esa aplicación externa.

(Solución parecida: Se encuentra en el thread número t=57154 de este foro perdón por la falta de link es que aún no tengo permitido colocarlos)

Mis preguntas, en resumen, serían:
  • ¿Es posible con Delphi crear una aplicación que "rellene" el usuario y la contraseña de un programa ejecutable cualquiera aunque no haya sido creado por mi?
  • En caso de ser afirmativo ¿con qué herramienta y cómo me documento al respecto?

PD: Es mi primer post si puedo mejorar, ampliar la información o cambiar algo que esté mal, no duden en pedirlo.
Responder Con Cita
  #2  
Antiguo 23-01-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si el programa externo lo permite, o sea, que está pensado para recibir parámetros, entonces solamente tendrás que ejecutarlo con esos parámetros.
Pero depende de ese programa externo, tienes que saber qué parámetros admite y cómo los admite.
programaexterno -p secreto
Responder Con Cita
  #3  
Antiguo 24-01-2018
Canela1990 Canela1990 is offline
Registrado
NULL
 
Registrado: ene 2018
Posts: 3
Poder: 0
Canela1990 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si el programa externo lo permite, o sea, que está pensado para recibir parámetros, entonces solamente tendrás que ejecutarlo con esos parámetros.
Pero depende de ese programa externo, tienes que saber qué parámetros admite y cómo los admite.
programaexterno -p secreto
Muchísimas gracias por tu pronta respuesta! Entiendo, básicamente tendría que tener un mínimo conocimiento sobre cómo funciona para poder "comunicarme" con él.
Si logro hacerlo ya estaré comunicando la solución!
Responder Con Cita
  #4  
Antiguo 24-01-2018
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.

Tal vez te refieras a que la ventana de login del programa ya se este ejecutando... En ese caso fijate si este ejemplo te sirve de base para lo que buscas,

Código Delphi [-]
...
implementation 

uses ShellApi;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShellExecute(Handle, 'open',
    PWideChar(GetEnvironmentVariable('SYSTEM')+'notepad.exe'),
    '', '', SW_SHOWNORMAL);
end;

procedure TForm1.Button1Click(Sender: TObject);
  procedure VKeyPress(const aKey: Char);
  var
    ti: TInput;
  begin
    ZeroMemory(@ti, SizeOf(ti));
    ti.Itype      := INPUT_KEYBOARD;
    ti.ki.wVk     := vkKeyScan(aKey);
    ti.ki.dwFlags := 0;
    SendInput(1, ti, SizeOf(ti));
  end;
var
  H  : HWND;
  i  : Integer;
begin
  H := FindWindow(nil, PChar('Sin título: Bloc de notas'));
  if H <> 0 then
  begin
    SetForegroundWindow(H);
    EnableWindow(H, False);
    try
      for i := 1 to Length(EditUserName.Text) do
        vKeyPress(EditUserName.Text[i]);
      vKeyPress(#13);

      for i := 1 to Length(EditUserPassword.Text) do
        vKeyPress(EditUserPassword.Text[i]);
    finally
      EnableWindow(H, True);
      SetForegroundWindow(Handle);
    end;
  end
  else
    ShowMessage('No se encontró la ventana');
end;
...
El ejemplo escribe el nombre de usuario y contraseñas almacenados en las propiedades Text de los edits en el Bloc de notas. No es muy específico ya que, como te indicó Antonio, tendríamos que conocer bastante mas acerca del programa externo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 30-01-2018
Canela1990 Canela1990 is offline
Registrado
NULL
 
Registrado: ene 2018
Posts: 3
Poder: 0
Canela1990 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Tal vez te refieras a que la ventana de login del programa ya se este ejecutando... En ese caso fijate si este ejemplo te sirve de base para lo que buscas,

Código Delphi [-]
...
implementation 

uses ShellApi;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShellExecute(Handle, 'open',
    PWideChar(GetEnvironmentVariable('SYSTEM')+'notepad.exe'),
    '', '', SW_SHOWNORMAL);
end;

procedure TForm1.Button1Click(Sender: TObject);
  procedure VKeyPress(const aKey: Char);
  var
    ti: TInput;
  begin
    ZeroMemory(@ti, SizeOf(ti));
    ti.Itype      := INPUT_KEYBOARD;
    ti.ki.wVk     := vkKeyScan(aKey);
    ti.ki.dwFlags := 0;
    SendInput(1, ti, SizeOf(ti));
  end;
var
  H  : HWND;
  i  : Integer;
begin
  H := FindWindow(nil, PChar('Sin título: Bloc de notas'));
  if H <> 0 then
  begin
    SetForegroundWindow(H);
    EnableWindow(H, False);
    try
      for i := 1 to Length(EditUserName.Text) do
        vKeyPress(EditUserName.Text[i]);
      vKeyPress(#13);

      for i := 1 to Length(EditUserPassword.Text) do
        vKeyPress(EditUserPassword.Text[i]);
    finally
      EnableWindow(H, True);
      SetForegroundWindow(Handle);
    end;
  end
  else
    ShowMessage('No se encontró la ventana');
end;
...
El ejemplo escribe el nombre de usuario y contraseñas almacenados en las propiedades Text de los edits en el Bloc de notas. No es muy específico ya que, como te indicó Antonio, tendríamos que conocer bastante mas acerca del programa externo.

Saludos
Muchas gracias Ecfisa, disculpa la demora en mi respuesta, tuve que formatear mi pc.
Pedazo de código te mandaste! Intenté compilarlo, pero me salta el error "incompatible types: 'WideChar' and 'Char'"
Según pude averiguar si uso pchar, tengo que enviarle char y no argumentos, en teoría lo comprendo, pero al momento de "pasar" a char, no entiendo cómo funcionaría (es más, a decir verdad, leyendo las páginas de como se usa shellexecute y sus parámetros también me pierdo)
De nuevo gracias por todo ese trabajo! Aunque el código parece corto, se el trabajo que cuesta.
Responder Con Cita
  #6  
Antiguo 31-01-2018
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.
Cita:
Empezado por Canela1990 Ver Mensaje
...
Intenté compilarlo, pero me salta el error "incompatible types: 'WideChar' and 'Char'"
...
Seguramente estes usando Delphi 7, si es así, cambia WideChar por PChar.

Te adjunto los fuentes del ejemplo anterior (probado en Delphi 7) para que puedas revisarlo con tranquilidad.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Canela1990.zip (4,3 KB, 0 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Datos externos GustavoCruz Conexión con bases de datos 4 16-03-2008 22:07:41
Comandos ms-dos o programas externos en Delphi!! pedromagno Varios 2 09-04-2007 11:35:15
Ocultar programas Externos Enan0 Varios 2 12-05-2006 19:38:14
Activar programas externos Ignacio Varios 3 19-07-2004 04:12:08
Llamadas a procedimientos externos Isabel Oracle 2 24-06-2003 14:05:14


La franja horaria es GMT +2. Ahora son las 21:23:36.


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