Čaute,
potreboval by som spraviť program, ktorý by mi bežal na pozadí, a keby som stlačil klávesu napr. WIN + V, tak by docielil to aby si WIN XP myslel, že som stlačil úplne inú kombináciu skratiek (napr. CTRL+ALT+V).
V praxi to znamená, že napr. pomocou WIN+V, vyvolám akciu (napr. spustiť program), ktorá sa vyvoláva CTRL+ALT+V.
v Pythone som nový, tak prepáčte ak sa pýtam možno somarinu, ale ani netuším ako by som toto mohol nájsť na nete, lebo dosť ťažko sa to vysvetluje aj v slovenčine.
Fórum › Python
Program: prelinkovanie klávesových skratiek
na internete som nasiel, ako sa daju nastavit globalne skratky (http://timgolden.me.uk/python/win32_how_do_i/catch_system_wide_hotkeys.html), ale este som neprisiel na to, ako spravit, aby sa po stlaceni skratky (napr. WIN + V) stlacila "akoze" druha skratka (tu druhu skratku stlaci python, tak aby si OS myslel ze som ju stlacil ja manualne) ...
EDIT:
cize, aby to bolo zrozumitelnejsie:
chcel by som teraz program, ktory by po spusteni "stlacil" napr CTRL+ALT+V, a aby si WIN XP myslel ze som stlacil CTRL+ALT+V ja manulane.
no ja neviem, naznacujes ze tadialto cesta nevedie ? :smile1:
lebo moj konkretny problem je:
mam program v ktorom sa nedaju nabindovat hotkey kombinacie WIN+nieco, cize v tom programe mam nabindovanu akciu pod CTRL+ALT+V, ale CTRL+ALT+V je nemotorne a chcel by som to prebindovat na WIN+V, ale program to neumoznuje, ...
napisal som autorom programu, nech to spravia a napisali mi:
Unfortunately the key Win is special and reserved by Windows for its
particular use, cannot assign it as a hotkey.
tak akoze, no comment :smile2:
cize hladam nejaku inu cestu ...
To pawlik :
diky moc, nenapadlo by ma ze nieco take je na pg.com :smile2:
funguje mi to, ale ked to dam do skriptu ktory som spominal vyssie, tak mi to ignoruje metodu SendKeys:
tu je kod:
import ctypes
from ctypes import wintypes
import win32con
import win32com.client
byref = ctypes.byref
user32 = ctypes.windll.user32
charC = 0x43
charV = 0x56
HOTKEYS = {
1 : (charC, win32con.MOD_WIN), # C + WIN
2 : (charV, win32con.MOD_WIN), # V + WIN
}
def handle_win_c ():
print 'kombinacia win+c ide'
def handle_win_v ():
shell = win32com.client.Dispatch("WScript.Shell") # ignoracia :(
shell.SendKeys("ABC", 0) #ignoracia :(
HOTKEY_ACTIONS = {
1 : handle_win_c,
2 : handle_win_v,
}
try:
msg = wintypes.MSG ()
while user32.GetMessageA (byref (msg), None, 0, 0) != 0:
if msg.message == win32con.WM_HOTKEY:
action_to_take = HOTKEY_ACTIONS.get (msg.wParam)
if action_to_take:
action_to_take ()
user32.TranslateMessage (byref (msg))
user32.DispatchMessageA (byref (msg))
finally:
for id in HOTKEYS.keys ():
user32.UnregisterHotKey (None, id)
kod je pre prehladnost skrateny o komentare a vystupy, cely kod prikladam v prilohe ...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Program, ktory otvori iny program — založil Nummi
C# program — založil Tomas.P
Program do C++ — založil elis5
Moderátoři diskuze