Téma: Furt aktivní VB
The_derava_botaNa tom svém přehrávači mám podporu multimediální klávesnice, normálně sem odchyt číslo klávesy a OK. Jenže jak to mám udělat když přehrávač je neaktivní (ale hraje). Nějakej přídavnej form stále aktivní, to ale nejde. Tak kde ve windows najdu aktivity klávesnice ???
Použít plochu jako form ???
Poraďte.
Devasterskus pri spusteni hlavneho formu oddelit thread ktory bude monitorovat klavesy aj ked bude hlavny form neaktivny , a potom z hlavneho formu zavolaj v timeri synchro metodu toho threadu ....
ide o stary VB alebo VB.NET ?
The_derava_botaJde o Visual studio 6 + sp.
Hmm, tak na to jak oddělit therad se musím podívat ..., voání je mě potom jasný, ikdyž timerem ..., to bude náročný na CPU ...
Devasteralebo este lepsie riesenie : tvoje separatne vlakno v pripade stlacenia klaves priamo vykona potrebnu akciu ...
The_derava_botaA to separátní vlákno se bude chovat jako "furt na střehu" ? To by se mohl takhle chovat rovnou ten form když bude aktivní klávesnice.
The_derava_bota[QUOTE=Devaster;142774]skus pri spusteni hlavneho formu oddelit thread ktory bude monitorovat klavesy aj ked bude hlavny form neaktivny , a potom z hlavneho formu zavolaj v timeri synchro metodu toho threadu ....
ide o stary VB alebo VB.NET ?[/QUOTE]
Timer ano, ale už "hotový z windows" ...
---------------------------------------------------------------------
Upravil sem kód od fY níže,
---------------------------
'In a form
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: [email]KPDTeam@Allapi.net[/email]
Me.Caption = "Key Spy"
'Create an API-timer
SetTimer Me.hwnd, 0, 1, AddressOf TimerProc
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Kill our API-timer
KillTimer Me.hwnd, 0
'Show all the typed keys
End Sub
-------------------------------------------
'In a module
Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Cnt As Long, Ret As Long, stare As Long
Function GetPressedKey() As Long
For Cnt = 32 To 256 ' 0-32, je tam i myš
'Get the keystate of a specified key
If GetAsyncKeyState(Cnt) <> 0 Then ' písmeno klávesy
GetPressedKey = Cnt ' číslo klávesy
Exit For
End If
Next Cnt
End Function
Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
Ret = GetPressedKey
If Ret <> 0 Then
stare = stare + 10 'timerFuc vrací o 10 více, proč to nevím.
If stare <> lpTimerFunc Then
stare = lpTimerFunc
'vrací číslo klávesy po intervalech lpTimerFunc
Debug.Print Ret
End If
End If
End Sub
-------------------------------------
Akorát by mě zajímala ta vracečka od Win, to je nějaká rychlost kláves s možností nastavení ve Windows ???
DevasterlpTimerFunc je akysi interface ku timeru co bezi vnutri windows jadra . ma to cosi docinenia s pocitani uptime casu ...
dobre riesenie, ak to nie je licencovane niekde to tu zaves do nejakeho vlakna ... :)