È necessario immettere un carattere in una cella di una griglia Delphi a livello di codice (in un'altra applicazione).Simulazione dell'input da tastiera in Delphi utilizzando WinAPI
Per fare questo manualmente, sono richiesti seguenti operazioni:
- Premere il tasto F3.
- Premere il tasto freccia destra 3 volte.
- Premere il pulsante Spazio.
- Digitare la lettera "E" sulla tastiera.
Premere il tasto freccia destra.
// Press F3 button keybd_event(VK_F3, 0, 0, 0); // Press right arrow key 3 times keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); // Press the space button keybd_event(VK_SPACE, 0, 0, 0); // Type letter E keybd_event(Ord('E'), 0, 0, 0); // Move to the right keybd_event(VK_RIGHT, 0, 0, 0);
Ma non funziona. Quando eseguo questo codice, nulla sembra accadere.
Come devo modificare questo codice in modo che simuli effettivamente l'input dell'utente?
Ho fatto qualcosa su ['tastiera virtuale'] (http://stackoverflow.com/a/12565963/960757) qualche tempo fa (e ce ne saranno molti altri). Ma per il tuo problema, se stai bersagliando 'TStringGrid', penso che non puoi fare altro che focalizzarlo e simulare le tue battute (se ricordo bene,' TStringGrid' non risponde a nessun tipo di messaggio che essere in grado di impostare il testo di una cella). – TLama
In questa particolare applicazione è possibile inserire valori in quella griglia solo tramite tastiera. L'ho già fatto con AutoHotKey e MS UI Automation, ma ora devo riscrivere questo codice in Delphi. –
Non posso contare sulla messa a fuoco della griglia perché esiste un programma sul sistema di destinazione, che si attiva ogni 200 millisecondi. –