Piloter une application par un logiciel : utiliser l'assembleur et les interruptions
Bonjour.
Je voudrais pouvoir piloter une application par un logiciel écrit sous Lazarus.
Pour simuler les frappes touches, j' ai essayé d'utiliser la fonction keybd_event, cela fonctionne en test avec NotePad mais pas avec mon autre application.
Je n'ai même pas réussi à faire fonctionner SendInput ( qui avait l'air intéressant ).
Et maintenant, j'essaie d'envoyer directement le code touche dans le buffer clavier.
Code:
1 2 3 4 5 6 7 8 9 10
| procedure TForm1.Button2Click(Sender: TObject);
begin
asm
mov ah, 05h
mov ch, 18
mov cl, 69
int 16h
not al
end;
end; |
Et à l’exécution, j'obtiens un message d'erreur:
Citation:
Le projet Projet1 a levé une exception de class 'External: SIGSEGV'
In file 'unit1.pas' at line 62: int 16h
Je ne suis pas un as, il semblerait que le problème vienne du fait que Windows tourne en mode protégé et ne tolère pas que l'on lance une interruption.
Si vous avez des moyens de faire tourner ce petit bout de programme, ou bien si vous connaissez d'autres fonctions pour l'envoi de touche, je suis preneur.
Merci.