Dobrej pokec   Lišanská šlapka   MSDN   VB na Microsoft.cz   NCHAT Nový design
   Portál  O firmě  Profil  Reference  Produkty  Odkazy  Diskuse  Tisková verze 



  Novinky e-mailem
Pokud chcete být informováni o změnách ,přihlašte se k odběru novinek!
  
  
  Nejčtenější články
 Seznam všech českých hubů abecedně. (32250)
 Seznam hubů nad 100 uživatelů (20975)
 Konfigurovatelné rozbalovací menu (17594)
 Jak na makra (14423)
 Rozbalovací menu v JavaScriptu (2.) (12798)
  Nejstahovanější soubory
 Action Meter (1846)
 Slovní Fotbal (777)
 IE Boss Guard (484)
 zdroják slovní fotbal (383)
 Folder Watcher (370)
  Anketa

  Nabídka portálu

 Adobe Premiere
    Jak se dá udělat
 Alternativní prohlížeče
    FireFox
 ASP
    Tipy a triky
 Direct Connect
    Huby
    Scripty pro HUB
    Tipy a triky CZDC++
 Game Maker
    Tipy a triky
 Hry
    Akční
    Logické
 HTML
    Scripting (VBS,JS)
    Tipy a triky
 Internet
    Užitečné triky
 Microsoft Office
    Tipy, triky, návody
    Užitečná makra
    VBA Tipy a triky
 MS SQL Server
    Nastavení
    Seriály
    Tipy a triky
 Multimedia
    Návody
 Oracle
    PL/SQL
 PHP
    Jak na to
    Tipy a triky
 Užitečné odkazy
    Grafické programy
    Programátorské
 Visual Basic
    DirectX
    Formuláře
    Jak se dá udělat ...
    Užitečné funkce
    Win32Api
    Zdroje
 Visual Basic .NET
    Užitečné funkce
 Vtípky
    Vtipy a anekdnoty
 Vypalování
    DVD Shrink
    Tipy a triky
 Windows
    Jak se dá ...
    Tipy a triky pro XP
    Triky pro IE


Nabídka portálu se při zobrazení článku přesouvá na konec pravého sloupce nabídek.

 Jak zprovoznit HOT KEY v aplikaci

Autor: Kočí Marek
Zdroj: 
Vytvořeno: 10.1.2003
Publikováno: 10.1.2003
Čtenářů: 2083
Unikátních: 2028


Využití vlastních kombinací hot key pomocí Win32API

Potřebujete do své aplikace přidat horkou klávesu? Je nutné použít API funkce. Horkou klávesu na formuláři můžeme řešit několika způsoby. Pokud však chceme, aby klávesa fungovala i pokud není formulář aktivní, musíme služeb API rozhodně využít.

Api funkce pro registraci a odregistrování HOT KEY jsou:
  RegisterHotKey
  UnregisterHotKey

Vzorový příklad

Vybral jsem si jako Horkou klávesu (HK) kombinaci CTRL a W. Tato HK mi zminimalizuje-obnoví formulář. Kód je čitelný, nepoužil jsem tedy žádné komentáře. V podstatě ho stačí nakopírovat do kódu formuláře a je hotovo. Přeji příjemné experimentování.

Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Type Msg
    hWnd As Long
    Message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As POINTAPI
End Type

Private Declare Function RegisterHotKey _
                 Lib "user32" (ByVal hWnd As Long, _
                 ByVal id As Long, _
                 ByVal fsModifiers As Long, _
                 ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey _
                 Lib "user32" (ByVal hWnd As Long, _
                 ByVal id As Long) As Long
Private Declare Function PeekMessage _
                 Lib "user32" Alias "PeekMessageA" _
                 (lpMsg As Msg, ByVal hWnd As Long, _
                 ByVal wMsgFilterMin As Long, _
                 ByVal wMsgFilterMax As Long, _
                 ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage _
                 Lib "user32" () As Long
Private bCancel As Boolean

Private Sub ProcessMessages()
    Dim Message As Msg
     Do While Not bCancel
         WaitMessage
        If PeekMessage(Message, Me.hWnd, WM_HOTKEY, _
           WM_HOTKEY, PM_REMOVE) Then
             WindowState = IIf(WindowState = vbMinimized, _
                               vbNormal, vbMinimized)
        End If
        DoEvents
    Loop
End Sub

Private Sub Form_Load()
    Dim ret As Long
    bCancel = False
    ret = RegisterHotKey(Me.hWnd, &HBFFF&, _
                         MOD_CONTROL, vbKeyW)
    Me.AutoRedraw = True
    Me.Print "Stiskněte CTRL-W pro minimalizaci"
    Show
    ProcessMessages
End Sub

Private Sub Form_Unload(Cancel As Integer)
    bCancel = True
    Call UnregisterHotKey(Me.hWnd, &HBFFF&)
End Sub



Příspěvky ke článku:



© Swit.cz, Marek Kočí 2003