Tastendruck an anderes Programm weiterleiten (Windows)

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von MmVisual »

Hallo,

Ich soll eine Software schreiben, die einen Tastendruck empfängt und einem anderen Programm weiter leitet.

Ein DJ einer Disco hat ein super Programm mit dem man die Lichteffekte einstellen kann. 32 Programme sind hinterlegt. Mit dem Programm kann man alle 32 Programme mit Strg oder ALT Taste direkt ansprechen.

Doch nun zur Praxis: Es ist enorm lästig in solch einem Disco Abend extra die STRG oder ALT Taste zu drücken, also sollte ich eine Art "Umsetzer" schreiben, die eine Taste, z.B "A" empfängt und dann z.B. ein "Strg+A" (parametrierbar) an die andere EXE weiterschickt.

Ich möchte das gerne mit Lazarus machen und habe keine Ahnung wie das geht.

Kennt ich vielleicht ein Codebeispiel, das einen Tastencode an genau diese eine EXE weiterleiten könnte?

(Wie ich einen Tastendruck empfange, solange meine EXE aktiv ist weiß ich ;) )

Vielen Dank im Voraus.

Gruß Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von _X_ »

Es gibt LazMouseAndKeyInput als Lazarus-Package (ist bereits in Lazarus enthalten aber nicht einkompiliert). Dort kannst du nachsehen, wie das gemacht wird oder das Paket verwenden.

mfg _X_

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von carli »

Einfach mal "WinAPI" googeln, du kannst den Prozess-Handle vom Programm herausfinden und ihm dann ein MouseDown-Event schicken (auch wieder WinAPI)

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von arturx »

An der Lösung bin ich auch sehr interessiert ! ! ! !

1.Die Handles verschienener wincontrols kannst Du Dir leicht ansehen mittels einen kleinen Programms : winid.exe
// das müsste sich leicht über google finden lassen
2.Vielleicht hilft Dir der folgenden link :
//http://www.lima-city.de/thread/handle-abrufen-ueber-pid
3.www.bir.de hatte mal einen visualbasic code abgedruckt, mit dessen hilfe sich winamp steuern ließ.
Falls Du ihr nicht finden solltest melde dich.....

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von Teekeks »

Zu 1.
Man kann mittels des Fensternamens das Handle über die WinAPI bekommen.
Den genauen Funktionsnamen weiß ich allerdings nicht.

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von MAC »

Teekeks hat geschrieben:Zu 1.
Man kann mittels des Fensternamens das Handle über die WinAPI bekommen.
Den genauen Funktionsnamen weiß ich allerdings nicht.
Das steht im bekannten DelphiTreff, hab ich auch irgendwann man gelesen :)

Code: Alles auswählen

Signatur := nil;

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von MmVisual »

Danke für die Hinweise.

Ich habe einiges im Netz gefunden und mal ein kleiner Test gemacht.
Leider klappen nicht alle Tasten die ich will. Wenn z.B. ein "F3" gesendet wird, dann macht das die andere Applikation. Wenn ich ein "Strg + N" sende, dann nicht. :(

Anbei das Zip mit meinem Test-Code, vielleicht hat jemand einen Tipp für mich?

Im Code:
Eingabezeile mit Caption des Fensters
Taste um was zu senden
Label zeigt Handle des Fensters an

Gruß Markus.
Dateianhänge
Test_Key.zip
(4.57 KiB) 128-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Tastendruck an anderes Programm weiterleiten (Windows)

Beitrag von MmVisual »

Ich habs raus gefunden!

Ich muss mir noch eine Routrine schreiben die

PostMessage(hWnd, WM_CHAR, VirtualKey, 0);

Sendet, dann geht es. Also wenn ich ein Strg+N senden möchte, dann muss VirtualKey eine 14 sein.

Jetzt muss ich nur noch raus finden wie ich am gescheitesten die Messages WM_SYSKEYDOWN/WM_SYSKEYUP/WM_KEYDOWN/WM_KEYUP/WM_CHAR in eine Routine bekommen so dass es immer richtig funzt.

Gruß Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten