GetAsyncKeyState_()

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Codusa
Beiträge: 92
Registriert: 11.07.2009 09:44

GetAsyncKeyState_()

Beitrag von Codusa »

Moin,
Ich möchte ein Programm schreiben mit dem Parameter #pb_window_invisible
und dann per "Shortcut" eine Funktion ausführen.
Das habe ich mit GetAsyncKeyState_() verwirklicht, na ja halb, denn es funktioniert nicht...
Das Event wird nicht ausgelöst wenn mein Fenster invisible ist(wenn ich das flag rausnehme funktioniert es fast: Nur wenn der Fokus auf dem Fenster ist oder wenn die Maus sich über dem Fenster bewegt)

Woran kanns liegen? Ich dachte GetAsyncKeyState_() wäre global?

Thx
"I became insane, with long intervals of horrible sanity." - Edgar A. Poe
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: GetAsyncKeyState_()

Beitrag von Mok »

Probier's mal mit AddKeyboardShortcut()
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: GetAsyncKeyState_()

Beitrag von NicTheQuick »

Ohne den Code gelesen zu haben vermute ich mal, dass du in der Event-Schleife 'WaitWindowEvent()' verwendest. Wenn dein Window aber invisible ist, wird 'WaitWindowEvent()' vergeblich auf Events warten und somit kommst du vermutlich auch nie zum Aufruf von 'GetAsyncKeystate_()'. Sinnvoll wäre es also den optionalen timeout-Parameter von 'WaitWindowEvent()' zu verwenden um z.B. alle 10 ms den Rückgabewert von 'GetAsyncKeystate_()' zu überprüfen.
Das erklärt auch, warum es ohne invisible nur funktioniert, wenn du die Maus über dem Fenster bewegst.

Ah, und nochwas:
Für 'GetAsyncKeystate_()' brauchst du kein offenes Fenster, das funktioniert auch ohne. Eine einfach 'Repeat - ForEver'-Schleife mit kleinem Delay und der Überprüfung des KeyState reicht also auch vollkommen aus.
Benutzeravatar
Codusa
Beiträge: 92
Registriert: 11.07.2009 09:44

Re: GetAsyncKeyState_()

Beitrag von Codusa »

@Mok
Wäre nicht global oder?
@NicTheQuick
Damn it! ich bin so blöd :(
Dachte wenn Waitwindowevent nicht vor GetAsyncKeyState ist reicht das....

Na ja jedenfalls klappt es jetzt, großes Danke!! :D
Das Fenster hab ich auch weggelassen :allright:

THX
-Codusa-
"I became insane, with long intervals of horrible sanity." - Edgar A. Poe
Antworten