هل من الممكن إرسال رسالة / نشر رسالة مباشرة إلى htmlelement بدلاً من عنصر تحكم WebBrowser؟

StackOverflow https://stackoverflow.com/questions/2664804

سؤال

أرغب في إرسال مفاتيح إلى عنصر التحكم في متصفح الويب AC# مباشرة ، وليس فقط النافذة مع التركيز الصحيح.

أنا الآن قادر على إرسال مفتاح باستخدام postmessage و documentHandle والتركيز مثل هذا

أي رمز زائف

HtmlElement el = getelement();
el.Focus();
IntPtr docptr = browser.Handle;
PostMessage(docptr,WM_KEYDOWN,1,0);
.... KEYCHAR, KEYUP..

كنت أتساءل عما إذا كان أي شخص يعرف بأي طريقة لتتمكن من القيام بذلك في خلفية ، بحيث لا يكون التركيز على العنصر. في الأساس ، هناك طريقة للحصول على intptr إلى htmlelement نفسها ، بدلاً من استخدام ذلك بدلاً من ذلك في postmessage أو sendkeys API بدلاً من مقبض المتصفح/ptr.

هل كانت مفيدة؟

المحلول

لا يمكنك. هذه هي عناصر تحكم بدون نوافذ ، يتم التعامل مع رسائل الماوس/لوحة المفاتيح بواسطة نافذة الأصل ، ورسالة الوالدين الوحيدة للتحكم النشط.

نصائح أخرى

هذه هي الطريقة الخاطئة للذهاب.

يمكنك استخدام ال HtmlElement API لمعالجة العنصر مباشرة.

للحصول على تعليمات دقيقة ، يرجى إخبارنا بما تحاول القيام به.

إلقاء نظرة على أشياء مثل Waitn و Selenium.

IE لديه أيضا واجهة برمجة جيدة للتحكم في المتصفح.

ولكن هناك سلبيات ...

أنا أعمل حاليًا على برنامج يستخدم التعرف على الصور والتحكم في الماوس/المفاتيح للتحكم في المتصفح حيث لا يمكنني فعل ما أريد إلا مع التمثيل المرئي.

ومع ذلك ، فإن ذلك سيهيمن على الكمبيوتر ويحتاج إلى تحكم كامل. ما لم تقم بتشغيله في جهاز افتراضي.

استغرق الأمر مني وقتًا طويلاً للعثور على هذا ، ولكن عليك أن تستدعي GetWindow مع أمر الطفل للحصول على مقابض Window مرارًا وتكرارًا حتى تصل إلى واحدة تستجيب لـ GetClassName مع "Internet Explorer_server" أو شيء من هذا القبيل.

ثم بعد ذلك على هذا hwnd و activelement من webbrowser سوف يستلمها. تأكد من أن لديك WM_Keyup هناك لأن ذلك يبدو مهمًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top