Suche Tutorial für umgang mit GetAsyncKeyState
Suche Tutorial für umgang mit GetAsyncKeyState
Also, wie's schon im Titel steht
Ich suche eben ein Tutorial oder sowas in der Art, wo erklärt wird wie man mit dem Befehl GetAsyncKeyState umgeht...
Allerdings suche ich keine Allgemeine Erklärung von Windows-API's sondern speziell für den gebrauch in PureBasic.
Ich suche eben ein Tutorial oder sowas in der Art, wo erklärt wird wie man mit dem Befehl GetAsyncKeyState umgeht...
Allerdings suche ich keine Allgemeine Erklärung von Windows-API's sondern speziell für den gebrauch in PureBasic.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Die API wird in PB eigentlich nur in Ausnahmefällen benötigt, für Spiele gibts
die KeyBoard Lib und für Fenster die KeyBoardShortcuts.
Hier mal ein Beispiel für so eine Ausnahme, nämlich Feststellen ob Shift
gedrückt ist, beim Buttonklick.
Im allgemeinen sollte man aber die besseren Alternativen nutzen, deshalb
macht ein Tutorial auch nicht so viel Sinn, da es ja nur in seltenen Fällen,
und dann eben zugeschnitten auf diese Fälle sein muß. Man sollte das
besser nur im Zusammenhang mit anderen Events nutzen.
Mein Ratschlag: Laß die Finger von dieser Funktion, wenn es andere
Lösungen gibt
Gruß
Thomas
die KeyBoard Lib und für Fenster die KeyBoardShortcuts.
Hier mal ein Beispiel für so eine Ausnahme, nämlich Feststellen ob Shift
gedrückt ist, beim Buttonklick.
Code: Alles auswählen
OpenWindow(0, 0, 0, 200, 50, "void", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 10, 10, 180, 30, "test")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
GetAsyncKeyState_(#VK_SHIFT); erstmal alten Wert löschen
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_LeftClick
If GetAsyncKeyState_(#VK_SHIFT)
Debug "Button + Shift gedrückt"
Else
Debug "Button gedrückt"
EndIf
EndSelect
EndSelect
EndSelect
ForEver
macht ein Tutorial auch nicht so viel Sinn, da es ja nur in seltenen Fällen,
und dann eben zugeschnitten auf diese Fälle sein muß. Man sollte das
besser nur im Zusammenhang mit anderen Events nutzen.
Mein Ratschlag: Laß die Finger von dieser Funktion, wenn es andere
Lösungen gibt

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ähm...
Naja, ich hab vorhin ein wenig rungefummelt und mal so mitbekommen, dass das gar nicht so schwer ist wie ich dachte...
ich hab nur noch 1 problem
1. was kann ich machen, damit der befehl nicht zu schnell reagiert wenn ich ne taste drücke... weil wenn ich dann mal kurz eine taste drücke, dann erkennt das programm das 4 mal und häufiger, wobei ich denke, dass der Befehl Delay da auch keine richtige lösung ist
ich hoffe ich hab mich nicht zu undeutlich ausgedrückt.
danke im voraus
Naja, ich hab vorhin ein wenig rungefummelt und mal so mitbekommen, dass das gar nicht so schwer ist wie ich dachte...
ich hab nur noch 1 problem
1. was kann ich machen, damit der befehl nicht zu schnell reagiert wenn ich ne taste drücke... weil wenn ich dann mal kurz eine taste drücke, dann erkennt das programm das 4 mal und häufiger, wobei ich denke, dass der Befehl Delay da auch keine richtige lösung ist
ich hoffe ich hab mich nicht zu undeutlich ausgedrückt.
danke im voraus
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
lass dir mal den Rückgabewert debuggen.
beim allerersten press ist das ein anderer wert als beim festhalten.
also, wenn du genau gegen den ersten wert prüfst, wird nur ein einziger tastendruck ausgewertet.
... aber grundsätzlich stimmt schon, was ts sagt: wenn möglich, die PB-eigenen libs benutzen.
beim allerersten press ist das ein anderer wert als beim festhalten.
also, wenn du genau gegen den ersten wert prüfst, wird nur ein einziger tastendruck ausgewertet.
... aber grundsätzlich stimmt schon, was ts sagt: wenn möglich, die PB-eigenen libs benutzen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Welche Art von Programm haste den?Sunny hat geschrieben: 1. was kann ich machen, damit der befehl nicht zu schnell reagiert wenn ich ne taste drücke... weil wenn ich dann mal kurz eine taste drücke, dann erkennt das programm das 4 mal und häufiger, wobei ich denke, dass der Befehl Delay da auch keine richtige lösung ist
GetAsyncKeyState_() löst immer 2 events aus, eins für Up und eins für Down
Entweder man löscht eins, wie in meinem ersten Beispiel, oder man wertet
nur eins aus: GetAsyncKeyState_(#VK_SHIFT) & $8000
Ohne EventLoop würde ich den Befehl garnicht nutzen, und mit, nur nachdem
ein anderes bestimmtes Ereignis aufgetreten ist, wie in meinem Beispiel.
Consolen und fensterlose Anwendungen sollten das lieber nicht nutzen!
Die sollten dann einen entsprechenden KeyBoardHook nutzen, aber das ge-
hört hier nicht her.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

ich danke euch allen vielmals
das hat mir wirklich weitergeholfen
jetzt hab ich aber noch ne frage...
ich hab hier schon inner sufu nachgeschaut und auch schon nachgegoogelt aber nichts wirkliches gefunden
ich suche noch nach einer liste für sonderzeichen, wie z.b. ".", ",", "ä", "ö", "ü", "-", "#", usw...
weiß jemand wo ich sowas finde?
das hat mir wirklich weitergeholfen
jetzt hab ich aber noch ne frage...
ich hab hier schon inner sufu nachgeschaut und auch schon nachgegoogelt aber nichts wirkliches gefunden
ich suche noch nach einer liste für sonderzeichen, wie z.b. ".", ",", "ä", "ö", "ü", "-", "#", usw...
weiß jemand wo ich sowas finde?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Warum nimmste nicht #WM_CHAR
Code: Alles auswählen
OpenWindow(0, 0, 0, 200, 50, "void", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #WM_CHAR
Debug Chr(EventwParam())
EndSelect
ForEver
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
> ich wüsste z.b. nicht wie der code funktionieren soll ohne erst ein fenster zu öffnen
Garnicht
Sieht mir mal wieder nach nem Keylogger aus, da werde ich nicht helfen wollen
Garnicht

Sieht mir mal wieder nach nem Keylogger aus, da werde ich nicht helfen wollen

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
