Seite 1 von 1

CreateShortcut und Hotkey-Parameter

Verfasst: 26.08.2009 13:12
von Susan20
Hab im Forum ein paar Prozeduren zum Erstellen von Verknüpfungen und Shortcuts gefunden (Danke, ts-soft!) und habe damit mal rumgespielt. Wenn ich also zum Beispiel einen F3-Shortcut haben will, dann habe ich in der CreateShortcut-Prozedur von ts-soft hotkey.l = #VK_F3 gesetzt und es funktioniert. Danach wollte ich den Shortcut <strg>+<F3> haben. Aber hotkey.l = #VK_CONTROl | #VK_F3 funktioniert nicht. Es wird nur #VK_F3 erkannt. Was mache ich da falsch??

Verfasst: 26.08.2009 14:08
von alter Mann
versuch es mal mit #PB_Shortcut_F3 und #PB_Shortcut_Shift

(siehe auch Hilfe zu AddKeyboardShortcut())

Verfasst: 26.08.2009 14:17
von Kaeru Gaman
für einen solchen Hotkey müßtest du beide keys zusammen abfragen.

ts routine stellt dir anscheinend zur verfügung, einen VirtualKey mit einer Funktion zu verbinden.
d.h. intern wird er wohl GetAsyncKeyState_( hotkey ) ausführen, und bei #True reagieren.

um jetzt eine Tastenkombination zu bekommen, darf man
nicht GetAsyncKeyState_( hotkey1 | hotkey2 )
prüfen, sondern muss auf
GetAsyncKeyState_( hotkey1 ) And GetAsyncKeyState_( hotkey2 )
reagieren.

... vielleicht hat ts ja sowas schon eingebaut, dann musst du halt seine routine irgendwie anders aufrufen.
war da keine readme dabei?
wo ist denn der thread wo er das veröffentlicht hat...

Verfasst: 26.08.2009 14:39
von ts-soft
Bevor hier noch mehr Antworten kommen, die in keinster Weise nützen, sry,
hier mal der Link zum Tip:
http://www.purebasic.fr/german/viewtopi ... 3825#93825

Warum der Code von Susan20 so nicht geht weiß ich im moment aber auch
nicht. Könnte 2 Gründe geben:
1. Hotkey bereits vergeben oder Kombination nicht erlaubt.
2. Es ist wohl doch ein besonderes Format notwendig, hierzu müßte man
mal in der MSDN suchen, fehlt mir leider im Moment die Zeit.

Das vergeben von Hotkeys in Verknüpfungen halte ich sowieso nicht für
besonders Sinnvoll, sowas hat MASM für seinen Editor mal gemacht, hat
tierisch genervt wenn der Editor auftauchte, obwohl ich garnichts mit ihm am
Hut hatte :mrgreen:

Verfasst: 26.08.2009 15:22
von Kaeru Gaman
tja, hätte man gleich den link gepostet, hätte man auch keine spekulationen provoziert.

... so und wie funktionieren jetzt kombinationen?
da ist ja weniger Anleitung dabei als bei einer Kloschüssel... /:->

Verfasst: 26.08.2009 17:09
von Susan20
@Kaeru Gaman:
Hast recht, den Link hätte ich posten sollen!

@ts-soft:
Danke, dass Du den Link bereitgestellt hast. Mein Ziel war es, dass einer Verknüpfung auf dem Desktop ein Shortcut zugewiesen wird. Das sollte dann eben eine solche Tastenkombination aus strg-Taste und F-Taste sein. Per Hand kann man das unter Eigenschaften im Kontext-Menü ja leicht machen. Auch mit VBScript geht das. Wäre natürlich super genial, wenn ich das auch unter PB machen könnte ...

Verfasst: 26.08.2009 22:53
von HeX0R
Ich weiss ja nicht, wieso du nicht einfach im MSDN nachliest (so wie ich das jetzt mal gemacht habe).
Ist natürlich sehr viel einfacher zu warten, bis sich irgendjemand die Mühe macht... /:->

Also die Sondertaste muss im Highbyte (hier nachzulesen) sein.

Also dein Hotkey wäre in diesem Fall:

Code: Alles auswählen

HotKey = (#HOTKEYF_CONTROL << 8) | #VK_F3
Für die Zukunft:
Je weniger Arbeit sich ein Fragesteller macht
(in deinem Fall:
1.) zu faul den [existentiell wichtigen] link zu ts-softs code beizufügen
2.) keine Absätze zur besseren Lesbarkeit in die Beiträge pflanzen
3.) keine Lust im MSDN zu stöbern),
desto wahrscheinlicher bekommt er irgenwann keine vernünftigen Antworten mehr.

Manche von uns sind da wie Elefanten (und ich meine jetzt nicht nur wegen der Ausmaße :lol: )

Verfasst: 26.08.2009 23:28
von Susan20
@HeXOR:

Also, für den fehlenden link habe ich mich quasi schon entschuldigt.

Im MSDN nachlesen, das klingt einfach, ist aber für mich wegen fehlender Routine mit gewissen Hürden verbunden. Daher: "Eine Taste im Highbyte" ist für mich leider keine triviale Sache.

Trotzdem: Dein Code funktioniert. Dafür vielen Dank! :)