Program: prelinkovanie klávesových skratiek – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Program: prelinkovanie klávesových skratiek – Python – Fórum – Programujte.comProgram: prelinkovanie klávesových skratiek – Python – Fórum – Programujte.com

 

greppi0
Stálý člen
13. 3. 2008   #1
-
0
-

Č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.

Nahlásit jako SPAM
IP: 195.91.84.–
You can make more friends in two months by becoming interested in other people than you can in two years by trying to get other people interested in you - Dale Carnegie
greppi0
Stálý člen
15. 3. 2008   #2
-
0
-

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.

Nahlásit jako SPAM
IP: 195.91.85.–
You can make more friends in two months by becoming interested in other people than you can in two years by trying to get other people interested in you - Dale Carnegie
Zelenáč0
Posthunter
15. 3. 2008   #3
-
0
-

Ja teda nevim, ale nechtel bych, aby programatori oblbovali muj operacni system svymi programy. Kdyz uzivatel stiskne klavesu, OS to odchyti a da o tom vedet uzivatelskym aplikacim. Proc by to melo jit naopak?

Nahlásit jako SPAM
IP: 89.176.254.–
greppi0
Stálý člen
15. 3. 2008   #4
-
0
-

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 ...

Nahlásit jako SPAM
IP: 195.91.85.–
You can make more friends in two months by becoming interested in other people than you can in two years by trying to get other people interested in you - Dale Carnegie
Zelenáč0
Posthunter
15. 3. 2008   #5
-
0
-

To greppi : Naznacuji, ze by to IMHO jit nemelo - jak jsem tu nekde psal, OS by mel mit kontrolu na uzivatelskymi aplikacemi a ne naopak! To ovsem neznamena, ze to nejde...

Nahlásit jako SPAM
IP: 89.176.254.–
pawlik0
Grafoman
Nahlásit jako SPAM
IP: 89.176.203.–
Sa Nata A Na. Howgh
greppi0
Stálý člen
16. 3. 2008   #7
-
0
-

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 ...

Nahlásit jako SPAM
IP: 195.91.85.–
You can make more friends in two months by becoming interested in other people than you can in two years by trying to get other people interested in you - Dale Carnegie
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

C# program — založil Tomas.P

Program — založil opi10

Program — založil Jan Burant

Program do C++ — založil elis5

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý