Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #26  
Antiguo 26-05-2010
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 18
LoPiTaL Va por buen camino
Cita:
Empezado por oabel5 Ver Mensaje
estuve haciendo experimentos y no logro meter la ruta en la ventana "Abrir". Esto es lo que hice:
char s[200]="O:\\NU\\Projects\\FuA\\CC_EL\\Centerdaten\\ECU_Test\\Projects\\DQ200_G2\\Tools\\EcuFlashTool\\Flas hMonitorEOL\\DQ200G2_Flash_Monitor_EOL.ini";

wnd = FindWindow (NULL,"ECU Flash Tool");
BringWindowToTop(wnd);
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(0x4F, 0, 0, 0);
keybd_event(0x4F, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

wnd = FindWindow (NULL,"Open File");
BringWindowToTop(wnd);

for( i= 0;i<= strlen(s);i++)
{
keybd_event((int)s[i], 0, 0, 0);
keybd_event((int)s[i], 0, KEYEVENTF_KEYUP, 0);
}

el problema es que los signos ":" y "\" no los quiere escribir. Tienes alguna idea de cómo añado estos signos?
Saludos.
Abel.
Es bastante sencillo si utilizas la función VkKeyScan: esta devuelve qué valor tienes que pasarle al keybd_event para escribir el caracter que quieras, así como el estado del shift, ctrl, alt, etc... Te pongo un ejemplo:

Código Delphi [-]
var
  auxWord: Word;
  auxChar: byte;
begin
  laStr:='C:\HOLA\HOLA2';

  //Para todos los chars
  for I := 1 to length(laStr) do begin
      auxWord:=VkKeyScan(laStr[i]);  //Escaneamos el char en concreto
     
     //Según la ayuda de la función, en el byte menos significativo tenemos
     //el valor del char a pasarle a keybd_event, y en el byte más significativo
    //tenemos el estado del shift, ctrl y alt. NO distingue entre alt, ctrl, shift 
    //izdos y drchos, pero dado que no puede ser el alt izdo (si no, no escribiría
    //nada, pongo el derecho (de ahí que sea VK_RMENU y no VK_MENU)).

      auxChar:=(auxWord and $FF);

      if (auxWord and $100)<>0 then
        keybd_event(VK_SHIFT, 0, 0, 0)
      else if (auxWord and $400)<>0 then
        keybd_event(VK_RMENU, 0, 0, 0);

      keybd_event(auxChar, 0, 0, 0);
      keybd_event(auxChar, 0, KEYEVENTF_KEYUP, 0);

      if (auxWord and $100)<>0 then
        keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0)
      else if (auxWord and $400)<>0 then
        keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0);
  end;

  //Finalmente pulsamos enter:
  keybd_event(VK_RETURN, 0, 0, 0);
  keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);

A mí me ha funcionado a la perfección.

Un saludo,
LoPiTaL
Responder Con Cita
 



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
Acceder a una aplicación externa FDB Varios 3 22-01-2008 13:45:02
Aplicacion externa a c++ alloger C++ Builder 1 28-10-2006 00:37:09
Manipular una aplicacion externa lookmydoom API de Windows 2 09-08-2006 22:22:52
Ejecutar comandos en aplicación externa José Craviotto Varios 1 03-02-2006 13:21:28
Ejecutar aplicación externa taita API de Windows 4 06-08-2005 23:45:57


La franja horaria es GMT +2. Ahora son las 01:35:07.


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