بخصوص الدالة GetAsyncKeyState
#1
السلام عليكم
وجدت كود لبرنامج keylogger لكن لم أفهم سطر من الكود

الكود على النحو التالي:
كود :
procedure TForm1.Timer1Timer(Sender: TObject); var keyloop, KeyResult : Integer; begin keyloop := 0; repeat KeyResult := GetAsyncKeyState(keyloop); if KeyResult = -32767 then begin case keyloop of 8:Memo1.Text:=.Memo1.Text+ ' [BACKSPACE] '; . . . etc

السطر الذي لم أفهمه هو
if KeyResult = -32767 then
مادلالة هذا الرقم؟
الرد
#2
وعليكم السلام ورحمة الله
تابع GetAsyncKeyState هو API Windows يعيد النتيجة:
كود :
Return Values If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. The return value is zero if a window in another thread or process currently has the keyboard focus.
القيمة التي شاهدتها هي أدنى قيمة لنوع البيانات SmallInt
كود :
Smallint -32768..32767
كان من الأحسن كتابتها بشكل:
PHP كود :
if KeyResult = Low(SmallInt) then 
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#3
شكرا أخي kachwahed على الرد
لكن في الحقيقة لم افهم جيدا إذا كان بإمكانك ان توضع
ما هو قائدة إضافة الشرط
if KeyResult = -32767 then
الرد
#4
السلام عليكم ورحمة الله وبركاته

إقتباس :ما هو قائدة إضافة الشرط
if KeyResult = -32767 then
هي معرفة حالة المفتاح هل هو مضغوط او لا (if Key is down or no) .
نعطي مثال عملى :
[COLOR="Red"]نريد دراسة حالة قفل الايسر للماوس هل ثم الضغط عليه ام لا (button left of mouse is down or no) .
نستخدم دالة دراسة حالة المفاتيح GetAsyncKeyState ونمرر لها قيمة المفتاح الايسر للماوس هكدا :[/COLOR]
PHP كود :
GetAsyncKeyState(VK_LBUTTON) 
هاته الدالة تعيد لنا 0 إذكان المفتاح الايسر للماوس غير مضغوط
و تعيد لنا القيمة -32767 إدا كان مضغوط .

فإدا وضعنا هدا الكود :
PHP كود :
KeyResult := GetAsyncKeyState(VK_LBUTTON);
  if 
KeyResult = -32767 then 
كاننا نقول هل المفتاح الايسر للماوس مضغوط او لا .

وسلام عليكم ورحمة الله وبركاته
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#5
الأفضل المقارنة إلى "أصغر من صفر":
كود :
http://support.microsoft.com/kb/277916/en
أي قيمة تحت الصفر تعني أن المفتاح مضغوط أيضا
ليست بالضرورة -32767 فقط.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#6
شكرا للجميع على الإفادة
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم