PDA

Visualizza la versione completa : simulazione input tastiera [C#]


Bdavi
27-03-2010, 16:35
buongiorno a tutti,
sono nuovo del forum, sto cercando di creare un programma che simuli un input da tastiera però non per scrivere qualcosa, ma per passare gli input ad un altra applicazione (in particolare un gioco). Difatto mi ritrovo con un problema, cioè che l'aplicazione non "sente" gli input del programma da me creato....ho provato a utilizzare sia le funzioni keybd_event e sendinput ma niente.
Qualcuno ha qualche idea su come si possa fare? (non trovo delle funzioni che lavorino a livello piu basso di queste, l'alternativa e passare a assembler...?)
grazie in anticipo. Davide

Bdavi
27-03-2010, 18:01
posto il sorgente che ho realizzato per fare le prove:

---------con sendinput:
#include<windows.h>
#include<winable.h>

main()
{
INPUT input;
KEYBDINPUT tasto;
unsigned int num_elem = 1;
int i;

system("start notepad.exe");
sleep(1000);

input.type = INPUT_KEYBOARD;
tasto.wVk = 'C';
input.ki = tasto;

for (i=0;i<10;i++) {
sleep(500);
SendInput (num_elem,&input,sizeof(INPUT));
}
}

---------e con keybd_event:
#include<stdio.h>
#include<windows.h>

main()
{
int i;
system("start notepad.exe");
sleep(500);
for (i=0; i<10; i++) {
sleep(500);
keybd_event( 'C', 0, 0, 0 );
keybd_event( 'C', 0, KEYEVENTF_KEYUP, 0 );
}
return 0;
}

i due sorgenti funzionano entrambi nel senso scrivono su notepad, office, ecc ma se durante l'esecuzione seleziono l'applicazione (il gioco) non succede nulla.......significa che il gioco "sente" l'input da dastiera da qualche altra parte...ma dove??

Loading