لا تعمل عند تشغيل شريط المسافة باستخدام التعليمات البرمجية


يستورد System.Runtime.InteropServices

وظيفة مشتركة خاصة SendInput(
ByVal nInputs كـ UIteger،
ByVal pInputs كـ INPUT()،
ByVal cbSize كعدد صحيح
) كما UInteger
وظيفة النهاية

‘ تحديد بنية الإدخال

مدخلات الهيكل
النوع العام كعدد صحيح
الكي العام كـ KEYBOARDINPUT
هيكل النهاية

‘ تحديد بنية KEYBOARDINPUT

هيكل لوحة المفاتيح
wVk العام باسم UShort
wScan العام باسم UShort
علامات dw العامة كـ UInteger
الوقت العام كما UInteger
dwExtraInfo العام باسم IntPtr
هيكل النهاية

‘ ثوابت نوع الإدخال والأحداث الرئيسية
Const INPUT_KEYBOARD كعدد صحيح = 1
Const KEYEVENTF_KEYUP كـ UInteger = &H2

الزر الفرعي الخاص 1_Click (المرسل ككائن، e كـ EventArgs) يعالج Button1.Click
‘محاكاة الضغط على شريط المسافة باستخدام SendInput
سيند سباسي بار ()
نهاية الفرعية

فرعي خاص SendSpaceBar()
تعتيم الإدخال كـ INPUT جديد ()
input.type = INPUT_KEYBOARD
input.ki.wVk = &H20 ‘رمز VK_SPACE لشريط المسافة

‘اضغط على شريط المسافة
SendInput(1, {input}, Marshal.SizeOf(GetType(INPUT)))

‘حرر شريط المسافة
input.ki.dwFlags = KEYEVENTF_KEYUP
SendInput(1, {input}, Marshal.SizeOf(GetType(INPUT)))
نهاية الفرعية

ما حاولت:

أنا أستخدم vb لكتابة البرنامج النصي.

أريد كتابة الكود للتحكم في شريط المسافة chrome و edge broswer لكن الكود الخاص بي لا يعمل.

يمكن أن تساعدني في إلقاء نظرة شكرا لك.

الحل 1

Erm… لقد قرأت ما يفعله SendInput، أليس كذلك؟ يقوم بتغذية معلومات لوحة المفاتيح والماوس في قوائم الانتظار المناسبة – مما يعني أنه يتم استخراجها بواسطة التطبيق النشط.
والذي نظرًا لأنك ضغطت للتو على زر الماوس لا يعد Chrome: إنه تطبيقك.

تحتاج إلى إرسالها إلى نافذة معينة (جرب FindWindow وSetForegroundWindow) ثم استخدم SendKeys لإرسال المساحة إلى Chrome.
لا توجد ضمانات بأنها ستنجح، ولكن…

コメント

タイトルとURLをコピーしました