Hur kan man få programmet att lyssna efter en viss tangentkombination, CTRL+T? Det ska fungera även fast programmet inte har focus, dvs om programmet är tex minimerat. Hur programmet ska kunna lyssna efter tangentkombinationen Ctrl + T om det är minimerat vet jag ej. Om du däremot kan hålla tillgodo med funktionen inuti programmet kan du göra så här: <code> Ctrl + T har KeyCode = 84 sen orkade jag inte experimentera mer. Oki på de. "mycket skrik för lite ull",som kärringen sa när hon klippte grisen. SvenPon: Det du sa skulle aldrig fungera eftersom att programmet skulle kunna ta emot saker även när det inte hade fokus. Det här är lite anrop till api som får windows att låta ett visst program bestämma vad som händer vid en viss tangentkombinationLyssna efter CTRL+T
ThomasSv: Lyssna efter CTRL+T
1. Sätt formulärets KeyPreview-egenskap till True.
2. Koppla sedan denna kod till KeyPress-händelsen:
<code>
If KeyAscii = 20 Then
MsgBox "Du tryckte på Ctrl + T"
End If
</code>
Hoppas ändå mitt svar var en bit på vägen.Sv: Lyssna efter CTRL+T
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
'loop until bCancel is set to True
Do While Not bCancel
'wait for a message
WaitMessage
'check if it's a HOTKEY-message
If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
'minimize the form
WindowState = vbMinimized
End If
'let the operating system process other events
DoEvents
Loop
End Sub
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim ret As Long
bCancel = False
'register the Ctrl-F hotkey
ret = RegisterHotKey(Me.hWnd, &HBFFF&, MOD_CONTROL, vbKeyF)
'show some information
Me.AutoRedraw = True
Me.Print "Press CTRL-F to minimize this form"
'show the form and
Show
'process the Hotkey messages
ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
bCancel = True
'unregister hotkey
Call UnregisterHotKey(Me.hWnd, &HBFFF&)
End Sub
</code>Sv: Lyssna efter CTRL+T
Tror att det kan lösas med API GetInputState.
Private Declare Function GetInputState Lib "user32" () As Long
If the queue contains one or more new mouse-button or keyboard messages, the return value is nonzero.
If the there are no new mouse-button or keyboard messages in the queue, the return value is zero.
Ser fram emot en enklare lösning än Onkel... :sSv: Lyssna efter CTRL+T
Sv: Lyssna efter CTRL+T