Globalny hotkey

Dodane09 września 2006 o01:10:43 w kategorii ' Ogólne ',

Dopisałem dość specyficzną obsługę hotkeyów - klawiszy które wciśnięte w dowolnym programie, przywołają na wierzch USMSa. Działają od builda 811 wzwyż (zostanie upubliczniony wktótce).

Jak więc ustawić sobie hotkeya? Należy mieć na pulpicie (!) skrót do programu. Teraz prawym przyciskiem myszy na ikonę, "Właściwości" i widać pole "Klawisz skrótu". Wciskasz klawisz, który powinien przywoływać program (uważaj żeby nie wybrać którejś z liter, które wciśnięte z Altem tworzą polskie litery - a, s, o, l itp.). Po zatwierdzeniu wyboru sprawdzasz czy program się uruchomi korzystając ze skrótu ctrl-alt-litera bądź prawy alt-litera. Jeśli nie - a to całkiem możliwe, Windows miewa swoje humory - wybierz inną. Ze swojej strony polecam klawisz ` - jest umieszczony w lewym górnym rogu klawiatury w związku z czym łatwo w niego trafić.

Jeśli uruchomienie programu działa - powinno być możliwe też jego przywołanie. Schowaj go np. do ikony w trayu i sprawdź czy kombinacja poprawnie go wywołuje.

Teraz trochę technikaliów.

Najwięcej problemów było z przywróceniem okna na wierzch - niby prosta sprawa, ale Windowsy od 98 wzwyż mają zapobieganie "focus stealing" - przejmwowaniu kontroli przez inne okno, jeśli aktualnie aktywne jest pole tekstowe w innym. Własnymi siłami się nie udało, na szczęście był jeszcze Google. Hack jest potężny.

Są też hotkeye windowsowe, dostarczane przez WM_SETHOTKEY, ale tutaj pojawia się problem tego, że wiadomości nie dochodzą jeśli zrobi się ShowWindow(hwnd, SW_HIDE) - a tak się właśnie dzieje jeśli program schowany jest do traya. Można ewentualnie przemyśleć użycie ujemnych współrzędnych okna, ale wydaje mi się to bardzo nieeleganckie.



Komentarze:

Dodaj komentarz:

 
 
Jogger.PL (c) 2006
  • RSS feed,
  • ValidXHTML andCSS,
  • Wszystkie prawa zastrzeżone.