Cita:
Empezado por oabel5
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';
for I := 1 to length(laStr) do begin
auxWord:=VkKeyScan(laStr[i]);
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;
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