Konsole aktiv halten?
-
Hi,
ich bin grad dabei ein Programm zu schreiben, welches die ganze Zeit im Hintergrund aktiv sein soll und dort auf spezielle Keyhits wartet, um dann eine Aktion auszuführen (also so eine Art Hotkey-"Manager").
Ich habe mich entschieden das Fenster dabei wegzulassen und nur mit dieser "Konsole" zu arbeiten. Aber:
- Wie kann ich die Konsole verstecken (unsichtbar machen) ?
- Und wie bringe ich sie dann dazu trotzdem aktiv zu bleiben aber nicht bei der Nutzung des Rechners zu stören?Geht das mit der Konsole überhaupt oder benötige ich da doch das ganze Fenster?
Danke,
gamble
-
RegisterHotKey -> theoretisch brauchst du dann gar kein Fenster (nur eben eine Message-Loop):
If this parameter (hWnd) is NULL, WM_HOTKEY messages are posted to the message queue of the calling thread and must be processed in the message loop.
-
Ich hatte eigentlich gedacht ich würde ohne den ganzen Initialisierungs-Kram auskommen. Oder hab ich da was falsch verstanden?
-
Was meinst du mit Initialisierungs-Kram

-
Ich meinte diese elend langen Initialisierungen von Fenstern mit der WinAPI.
-
Ich sagte doch, dass du gar nicht unbedingt ein Fenster brauchst

-
Hab mir schon gedacht, dass ich da was nicht ganz mitbekommen habe

Kannst du mir die Sache vielleicht noch ein wenig genauer erklären?
-
Ich habe mal kurz was zusammengebastelt (hoffentlich sind keine Fehler drin):
#include <windows.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { RegisterHotKey(NULL,0x0000,MOD_CONTROL|MOD_SHIFT,'A'); MSG msg; BOOL quit = false; while (!quit) { if(!GetMessage (&msg, NULL, 0, 0)) { quit = true; } else { switch(msg.message) { case WM_HOTKEY: MessageBox(NULL,"Hotkey wurde aufgerufen!","Benachrichtigung",0); quit = true; break; } } } return msg.wParam; }Allerdings müsste man wohl noch irgendwie einbauen, dass sich das Programm auch ohne das Drücken des Hotkeys irgendwie beenden lässt

-
Jau, danke
Das hilft schonmal sehr!Nur: Wie bekomme ich in WM_HOTKEY jetzt heraus welcher Hotkey gedrückt wurde und wie kann ich dann darauf reagieren?
-
-
Klasse, danke.
Bevor ich jetzt einen neuen Thread eröffne:
Wie kann ich mit WM_KEYDOWN oder auch WM_CHAR (hieß es so?) einzelne Buchstaben aus der Eingabe fischen? Wenn also A gedrückt wurde, soll in WM_KEYDOWN / WM_CHAR das A herausgefiltert werden und anschliessend etwas ausgeführt werden. Wie geht das?
-
Hmm hast mal überlegt die MSDN oder Boardsuchen zu benutzten als ständig zu fragen? Aber naja.
also so einfach würd das ohne Fenster nicht gehen!The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the alt key is not pressed.
So verhält es sich auch mit WM_CHAR. Da müsstest du mit Hooks arbeiten die glaub ich für dich ganz schön hoch sind wenn du dich nicht wirklich mit der WinApi auskennst was sich so angehört hat (nicht böse verstehen). Aber in WinApi Faq ist ein Bsp. dafür
MfG schirrmie
-
Nun, bis gestern habe ich begeistert die Boardsuche benutzt. Aber wenn du mal auf Suchen klickst wirst du merken, dass da nicht mehr viel funktioniert.
Oder ist das mal wieder ein Problem meinerseits?
-
Was genau hast du denn überhaupt vor

-
Wie schonmal gesagt, das Programm soll Hotkeys verwalten. Die Lösung mit RegisterHotKey ist zwar schnell gemacht, aber ich wollte mir das dann auch mal selbst zusammenbauen.

-
Wie du willst, aber ohne RegisterHotKey wird es auf jeden Fall sehr viel aufwändiger zu coden und wird wohl auch mehr Ressourcen verbrauchen, also überlege es dir genau. Wenn RegisterHotKey dir nicht ausreicht, weil du jeden Tastendruck mitbekommen willst, dann ist die Situation natürlich anders bzw. dann musst du über Hooks gehen
