Shortcut erstellen - wie kann ich HotKey verwenden

Anfängerfragen zum Programmieren mit PureBasic.
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Shortcut erstellen - wie kann ich HotKey verwenden

Beitrag von funk.munich »

Hallo zusammen,

im Code Archiv habe ich ein Bsp. zum Erstellen einer Verknüpfung
gefunden.

http://www.purearea.net/pb/CodeArchiv/W ... ellLink.pb

Ich würde gerne einen HotKey mit übergeben z.B. STRG + ALT + x.
In dem Bsp. sind folgende flags mit aufgeführt:

HOTKEYF_ALT = ALT key
HOTKEYF_CONTROL = CTRL key
HOTKEYF_EXT = Extended key
HOTKEYF_SHIFT

Wie kann ich diese nun nutzen? Ist egal was ich mit den flags ausprobiere, es funktioniert einfach nicht.
Nur, wenn ich ohne die flags, also nur den ASCII Wert für das 'x' = 120
übergebe funxt es.

Hat hierzu jemand eine Idee? Ich habe zwar einige Forums Einträge zu
Verknüpfungen gefunden, aber niemand hat HotKeys genutzt.

Danke im vorraus,
Daniel
Benutzeravatar
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

Beitrag von ts-soft »

Bevor Du HotKeys setzt, mußte ja erstmal prüfen welche noch frei
sind, weil Doppelbelegung funzt nicht. Hotkey per Programm zu
setzen halte ich nicht für sehr sinnvoll, hab mich bisher über
solche Sachen nur geärgert (Editor bei MASM macht sowas, hat
dafür einen meiner Hotkeys zerstört)

Ansonsten, haste es mit einer | Verknüpfung probiert?
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.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

hab die konstanten mal ausgeben lassen, und den wichtigen absatz mit zitiert:

Code: Alles auswählen

      ; Hotkey: 
      ; The virtual key code is in the low-order byte, 
      ; and the modifier flags are in the high-order byte. 
      ; The modifier flags can be a combination of the following values: 
      ; 
      Debug #HOTKEYF_ALT     ; ALT key 
      Debug #HOTKEYF_CONTROL ; CTRL key 
      Debug #HOTKEYF_EXT     ; Extended key 
      Debug #HOTKEYF_SHIFT   ; SHIFT key 
du musst die modifier mit bitwise-Or zusammensetzen, und mit bitshift ins hi-byte schieben.
probier also mal

Code: Alles auswählen

HotkeyValue =  Asc("x") + (( #HOTKEYF_CONTROL | #HOTKEYF_ALT) << 8 )
PS:
und natürlich das bedenken, was ts dazu gesagt hat.
leute mögen keine programme, die rigoros Hotkeys setzen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag von funk.munich »

Hi Ihr beiden,

danke erst einmal für eure Hilfe.

Da habt ihr recht und selber würde ich das auch nicht machen wollen.
Mir ging es jetzt nur darum zu verstehen, wie es funktioniert.

Eine Frage hätte ich da noch ... wofür nutzt ihr "... << 8" ?

Code: Alles auswählen

HotkeyValue =  Asc("x") + (( #HOTKEYF_CONTROL | #HOTKEYF_ALT) << 8 )
Danke + Gruß,
Daniel
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Kaeru Gaman hat geschrieben: ; Hotkey:
; The virtual key code is in the low-order byte,
; and the modifier flags are in the high-order byte.
; The modifier flags can be a combination of the following values:

du musst die modifier mit bitwise-Or zusammensetzen, und mit bitshift ins hi-byte schieben.
probier also mal
HotkeyValue = Asc("x") + (( #HOTKEYF_CONTROL | #HOTKEYF_ALT) << 8 )
Help -> Variablen, Typen und Operatoren
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag von funk.munich »

Hi Kaeru,

wer lesen kann ist klar im Vorteil und wenn man dann noch weiß wo alles steht. :allright:

Vielen Dank,
Daniel
Arithmetic shift left. Shifts each bit in the value of the expression on the LHS left by the number of places given by the value of the expression on the RHS. Additionally, when the result of this operator is not used and the LHS contains a variable, that variable will have its value shifted. It probably helps if you understand binary numbers when you use this operator, although you can use it as if each position you shift by is multiplying by an extra factor of 2.

Example:
a=%1011 << 1 ; The value of a will be %10110. %1011=11, %10110=22
b=%111 << 4 ; The value of b will be %1110000. %111=7, %1110000=208
c.l=$8000000 << 1 ; The value of c will be 0. Bits that are shifted off the left edge of the result are lost.
Antworten