PDA

View Full Version : keylogging دکمه های ترکیبی. چگونه؟



sylverstar
دوشنبه 10 خرداد 1389, 00:54 صبح
سلام
من قصد دارم در برنامه کدی بزارم که وقتی دکمه های ctrl+m فشار داده میشن یه رویداد اتفاق بیفته
تابع getasynckeystat فقط یک دکمه را دیتکت میکنه. یعنی تا مادامی که دکمه پایین نگه داشته شده دکمه کد اسکی دکمه دیگرو آشکار نمیکنه
آیا راهی هست؟

romina2006
دوشنبه 10 خرداد 1389, 01:42 صبح
Const VK_CONTROL = &H11
Const VK_M = &H4D
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Private Sub Form_Load()
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
Dim keystate As Integer
Dim keystate1 As Integer
keystate = GetKeyState(VK_M)
keystate1 = GetKeyState(VK_CONTROL)
If keystate And keystate1 And &H8000 Then MsgBox "ok"
End Sub

xxxxx_xxxxx
دوشنبه 10 خرداد 1389, 01:47 صبح
سلام،


تابع getasynckeystat فقط یک دکمه را دیتکت میکنه. یعنی تا مادامی که دکمه پایین نگه داشته شده دکمه کد اسکی دکمه دیگرو آشکار نمیکنه

شما میتونید برای دو تا کلید دو تا خروجی این تابع رو با هم And کنید. برای سه تا کلید، سه تا خروجی رو با هم And کنید و الی آخر...

برای Ctrl + M:
کد اسکی Ctrl = 17
کد اسکی M = 77


If GetAsyncKeyState(17) And GetAsyncKeyState(77) Then MsgBox "Ctrl+M"


موفق باشید/