Hotkey-Nutzung in einem Programm sperren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Hotkey-Nutzung in einem Programm sperren

Beitrag 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...
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag 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)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

auch dran denken, das selbe noch für Shift/Strg Einf/Entf einzurichten....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Beitrag 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!
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Antworten