Seite 1 von 1

Hotkey-Nutzung in einem Programm sperren

Verfasst: 25.03.2008 15:26
von Regenduft
Hi liebe Leuz,
PARTY, das ist mein erster Eintrag, aber zum Thema...

Ich will in meinem Programm die Tastenkombinationen Strg+X, Strg+V und Strg+C für das Editor-Gadget sperren, damit ich sie anderweitig verwenden kann... nur wie?

Das setzen von lokalen Hotkeys ist mir (nebenbei) klar, nur das "entsetzen" nicht!

Hab' überall gesucht, aber es ist (wie gesagt) zum Entsetzen! ;-)

Danke schonmal im vorraus...

Verfasst: 25.03.2008 17:07
von scholly
Kannst du nicht mit AddKeyboardShortcut() die "anderwertigen Verwendungen" festlegen und dann in der Hauptschleife abfragen ob das Event-Gaget das EditorGadget ist und dann entsprechend weiterarbeiten ?

Sorry, hab auf dem Rechner hier kein PB, deswegen kein Code.

Verfasst: 25.03.2008 17:54
von gnasen
Oder einen Keyboard Hook setzen und die entsprechenden Eingaben abfangen, sollte dein Fenster im Vordergrund sein. In der SuFu findeste einige Beispiele dazu. (Ist insgesamt aber schwieriger und "gefährlicher", wenn die Shortcut Variante funktioniert, besser die nutzen)

Verfasst: 25.03.2008 18:33
von Fluid Byte
Kann mich nur anschließen, AddKeyboardShortcut() funktioniert wunderbar.

Code: Alles auswählen

Enumeration
	#IDM_Cut
	#IDM_Copy
	#IDM_Paste
EndEnumeration

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
EditorGadget(0,5,5,120,25)

AddKeyboardShortcut(0,#PB_Shortcut_Control | #PB_Shortcut_X,#IDM_Cut)
AddKeyboardShortcut(0,#PB_Shortcut_Control | #PB_Shortcut_C,#IDM_Copy)
AddKeyboardShortcut(0,#PB_Shortcut_Control | #PB_Shortcut_V,#IDM_Paste)

Repeat
	EventID = WaitWindowEvent()

	If EventID = #PB_Event_SizeWindow
		ResizeGadget(0,5,5,WindowWidth(0)-10,WindowHeight(0)-10)
	EndIf
	
	If EventID = #PB_Event_Menu
		Select EventMenu()
			Case #IDM_Cut: Debug "CTRL+X Shortcut pressed"
			Case #IDM_Copy: Debug "CTRL+C Shortcut pressed"
			Case #IDM_Paste: Debug "CTRL+V Shortcut pressed"
		EndSelect
	EndIf	
Until EventID = #PB_Event_CloseWindow

Verfasst: 25.03.2008 19:27
von Kaeru Gaman
auch dran denken, das selbe noch für Shift/Strg Einf/Entf einzurichten....

Verfasst: 26.03.2008 19:17
von Regenduft
Hey! Danke für die flotte Hilfe!

Mein Problem ist nur leider immernoch, dass ich (in der Anwendung) gerne folgendes möchte (Beispiel):

Wenn ich eine Textpassage markiere und Str+C drücke, sollen Daten (Frequenzen), die mit dem Text assoziiert werden ins Clipboard gestopft werden. Das Problem ist nun, dass "der Editor manchmal langsamer ist" und ich anstatt der gewünschten Daten den Klartext aus dem Editor im Clipboard finde.

Habs schon mit zeitlicher Vezögerung versucht, aber dass hat nicht richtig geklappt.

Habe leider den Code nichtmehr zur Hand, da ich ihn frustriert ins Nirvana geschickt habe... :oops:

Ich glaube ich müßte da für meinen Wissensstand zu low arbeiten, danke trotzdem!