Hallo zusammen,
ich habe für mich eine Lösung gefunden. Sie ist zwar eigentlich nicht das,
was ich mir vorgestellt habe aber ich kann damit erstmal leben.
Beim stöbern im Netz, bin ich auf "RegisterHotKey" und "UnregisterHotKey" gestoßen.
Leider funktionierte bei mir das mit dem "UnregisterHotKey" überhaupt nicht
und sowas wie "KeyboardHook", wollt ich jetzt nicht auch noch bauen.
Ich habe mich dann dazu entschlossen für die Laufzeit, der Anwendung,
F10 als HotKey zu definieren und damit den SystemHotKey
ausser Kraft zu setzen. Dies Funktioniert bei mir soweit ich das testen konnte
einwandfrei.
Aber wie immer ist ein Beispiel am besten:
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
import wx
import win32con #VK keycodes
ID_MENU_5 = 5
class FrameWithHotKey(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.regHotKey()
self.Bind(wx.EVT_HOTKEY, self.handleHotKeyF10, id=self.hotKeyIdF10)
self.MenuBar= wx.MenuBar()
self.Verwaltung=wx.Menu()
self.MenuBar.Append(self.Verwaltung,"Verwaltung")
itemmenu = wx.MenuItem(self.Verwaltung,ID_MENU_5,"Item5","",0)
self.Verwaltung.AppendItem(itemmenu)
self.SetMenuBar(self.MenuBar)
def regHotKey(self):
self.hotKeyIdF10 = 50001
self.RegisterHotKey(
self.hotKeyIdF10, #Eindeutige ID fuer den HotKey
0,
win32con.VK_F10) #Key auf den geachtet werden soll
def handleHotKeyF10(self, evt):
print "F10 gehört nun nur noch mir"
class App(wx.App):
def OnInit(self):
frame = FrameWithHotKey(None,-1,'')
frame.Show()
return 1
def main():
application = App(0)
application.MainLoop()
if __name__ == '__main__':
main()
Edit by Gerold: Code-Tag geändert