Qt Service ShortCut abfangen

Alles rund um die Programmierung mit Qt
Antworten
BlueCobra
Beiträge: 6
Registriert: 26. April 2013 15:17

Qt Service ShortCut abfangen

Beitrag von BlueCobra »

Hallo zusammen,

Ich habe einen Qt Service mit verschiedenen Funktionen geschrieben.
Jetzt suche ich eine Möglichkeit die Funktionen mit ShortCut's z.B. ALT + x aufzurufen.
Wie komme ich am besten an die Tastatureingaben ran um den ShortCut zu ermitteln.

Ich hoffe einer kann mir nen Tipp geben.

LG Cobra
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: Qt Service ShortCut abfangen

Beitrag von Markus »

Irre ich mich jetzt, aber ein Service läuft doch ohne GUI. Und ohne GUI keine Tastatur-Shortcuts, oder?
BlueCobra
Beiträge: 6
Registriert: 26. April 2013 15:17

Re: Qt Service ShortCut abfangen

Beitrag von BlueCobra »

Genau das ist mein Problem und ich will auch gar kein GUI haben.
Es sollte doch auch so irgendwie möglich sein an die Tastatureingaben zu kommen. :?
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: Qt Service ShortCut abfangen

Beitrag von odt »

win32 keyboard hook sind die Stichwörter Deiner Google-Suche.
ODT Informatik GmbH, Reto Tschofenig
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Qt Service ShortCut abfangen

Beitrag von RHBaum »

Aber hallo, nen service hat nich nur keine GUI, sondern auch kein terminal. Das ist ja genau der Sinn und das wesen eines dienstes -> keine direkte interaktion !!!
Also kann er nur systemweit sich in Tastaturqueue haengen ....

Und ich hoffe und bete, das alle gaengigen Virenschutzprogramme das Teil als gefährlich erkennen !!!

Wenn man sowas macht, dann richtig !
Den dienst als hintergrund-dienst ohne irgendwelche eingebemöglichkeiten.
Kommunikation ueber gaengige IPC techniken .... Pipe, netzwerk, oder sowas
Frontend als Desktop service(Tray Icon ... und co) oder hilfsprogramm, was man im userland startet und damit per IPC den dienst kontrolliert.

Seit jahren auch beliebte methode, dem service einen http server zu verpassen, der dann auf nem bestimmten port zugriffe per http zulaesst, und sich damit im browser configurieren und steuern laesst.
Deswegen gibts auch tonnen an http implemantationen als kleine schmale Library ...

Alles andere ist.... naja sicherheitstechnisch suboptimal.

Ciao ...
BlueCobra
Beiträge: 6
Registriert: 26. April 2013 15:17

Re: Qt Service ShortCut abfangen

Beitrag von BlueCobra »

Ok hatte ich mir fast gedacht das es nicht geht und wenn könnte man heimlich alle Tastaturanschläge loggen schon klar.
Gehen würde es wenn ich also dem Dienst also ein Frontend über ein Try Icon geben würde und den Dienst darüber Steuer.
Das hilft mir doch schon mal ein ganzes Stück weiter.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Qt Service ShortCut abfangen

Beitrag von RHBaum »

Die frage ist, warum willst du das deine Anwendung unbedingt nen dienst ist?
Interaktion auf verwaltungsebene mit einem Dienst sollte die ausnahme sein.
Die meisten dienste bieten eine konfiguration ausschliesslich ueber eine config / regestry Einträge an.

Sobald du aber regelmaessige interaktion brauchst, klingt es irgendwie nicht nach Dienst !
Du kannst auch (fast) normale Programme schreiben, die keine Einträge in der fensterliste halten (haben dann keine aktiven nomalen fenster) und sich nur im Tray verewigen, sofern kein anderes fenster da.
Da auch schoen statusmeldungen schicken etc.
Die koennen genau so automatisch gestartet werden ....
windows und unixe senden auch nen terminate vor dem shutdown, so dass die auch ohne userinteraktion automatisch beim runterfahren sauber beenden lassen kannst.

Messanger dienste (Icq ...) mailer, voip programme (skype TS) sind so gängige Beispiele fuer sowas ...

Dienste sollte man wirklich nur nehmen wenn man kaum interaktion hat ... also das teil von verwaltungssicht aus normal autonom laeuft.

Ciao ...
BlueCobra
Beiträge: 6
Registriert: 26. April 2013 15:17

Re: Qt Service ShortCut abfangen

Beitrag von BlueCobra »

Worum es eigentlich geht und warum es ein Dienst sein sollte.
Also es geht um einen Win Xp Pc der als Datensammler ein Echtzeitsystem mit Mikrokontroller hat und über USB mit dem Windows PC die Daten weiterreicht.
Der Windows PC hat keine Tastatur und soll über das posten von Tasten einer Folientastatur am Microkontroller System gesteuert werden.
Da die Daten im Hintergrund übertragen werden also ein Dienst läuft wollte ich die Steuerung nun auch in einen Dienst packen( gesendete Tastencodes auswerten ).
Die Datenanzeige und Auswertung erfolgt in einer Anwendung die über Touchscreen am Windows PC aufgerufen wird.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Qt Service ShortCut abfangen

Beitrag von RHBaum »

Der Windows PC hat keine Tastatur und soll über das posten von Tasten einer Folientastatur am Microkontroller System gesteuert werden.
Das versteh ich ned ganz ...
Der windows PC hat keine Tastatur ...
Am Controller hängt (elektrisch) eine Folientastatur ?
Diese übertraegt die Tasten als Signale (auch) uebern usb .....
Und du bekommst diese Signale wiederum auf richtige Tastatursignale (tastaturtreiber ??? ) gemappt ? Wer macht das ?
Kommst du aus deiner app ned direkt an die Signale dran ?
Wie greifst du ueberhaupt auf den controller zu ? nen C-Api ? oder ne Rs232 Schnittstellen simu ?
Oder wird da nen filesystem simuliert ?

ich find das die Tastendruecke auf der Folientastatur die zum controller gehoert, beim windows PC als richtige Tastaturanschlaege erscheinen scho ...ungewoehnlich.
Theorethisch koenntest damit den windows pc ja schon steuer, manipulieren, abschmieren lassen ... ist das so gewollt ?

Ciao ..
BlueCobra
Beiträge: 6
Registriert: 26. April 2013 15:17

Re: Qt Service ShortCut abfangen

Beitrag von BlueCobra »

Na ja das alles ist in einem Gehäuse also nicht sichtbar für den Benutzer.
Also der Datensammler ist ein Echtzeit-Mirokontroller System an dem hängt die Folientastatur.
Die Folientastatureingaben werden per USB HID gepostet an das Windows System. ( also eigentlich wie eine Tastatur)
Vielleicht sollte ich mich also in das USB einklinken um die Tastaturdaten zu bekommen?
Die Daten werden über einem RS232 an das Windows weitergegeben.
Sinn ist es auch Daten zu sammeln wenn Windows abraucht oder Windows die Daten nicht gleich verarbeiten will.
Windows PC soll eigentlich nur die Daten schön aufbereitet anzeigen und speichern.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Qt Service ShortCut abfangen

Beitrag von RHBaum »

Also wen ichs richtig verstehe:

Deine "Daten" kommen ueber RS232Emu zu deinem "Dienst"
DIe Tastatureingaben fasst der HID Treiber(Tastatur) vor dir ab, verwandelt es in keystrokes um, welche Du global wieder abfangen müsstest.

Sauber waer, diese Tastatur emu zu verhindern, bzw die tasten nur an deinen Dienst weiterzuleiten.
Weil wenn ich es richtig verstehe, ist die Tastatur logisch dazu da, den controller zu steuern, nicht den pc .....

Keine Ahnung ob das schaffst, und keine Ahnung wieviel Aufwand da rein stecken willlst.
Kannst du das Microcontroller system in diese richtung umconfigurieren ?
Aber fuer ne "schnelle" Lösung waers wahrscheinlich doch besser, die Keys abzufangen.

Die Frage bleibt trotzdem, warum nen Dienst ?
Er bringt dir laufzeittechnisch keine Vorteile ! Der dienst schraenkt dich eher ein.
Auch Prozessprios vergibts unabhaengig davon, obs nen dienst ist oder nicht ....

Nen dienst wuerde dir was bringen, wenn mit dem rechner normal gearbeitet wird, und deine "funktionalitaet" auch laufen muss, wenn sich noch niemand eingeloggt hat ....
bzw, der dienst unter anderem nutzer laufen soll, als der der sich grad einloggt.
Aber wenn ich richtig verstanden hab, soll der pc ja praktisch nur die Messung da bedienen. Eigentlich wuerde dir ja nen single user system ausreichen ?

Wenn die Messdaten auf der Kiste eh angezeigt werden sollen, warum integrierst die ganze funktionalitaet nicht in die App, die das zeugs anzeigt. Die anzeige kann die Tastaturkeys eh abfangen ...
und guenstiger weisse machst ne directX Vollbild anwendung, das sichert dir den ganzen bildschirm :-) musst aber nicht.

Ciao ...
BlueCobra
Beiträge: 6
Registriert: 26. April 2013 15:17

Re: Qt Service ShortCut abfangen

Beitrag von BlueCobra »

Habe gerade was gefunden HID API http://www.signal11.us/oss/hidapi/
Vielleicht hilft mir ja das weiter :)
Am Aufbau und wie ich die Daten bekomme kann ich nicht mehr viel ändern.
Ansonsten bleiben mir ja noch deine Vorschläge.
Das mit dem Dienst war ja nur der erste Plan mit den Daten auch kein Ding.
Das mit den Tasten kam ja erst später dazu und ich dachte halt wieder an nen netten kleinen Dienst.
Früher oder später wird es schon laufen :D erstmal packe ich es jetzt mit einer normalen App an.
Antworten