اكتشاف الخاصية الافتراضية لعنصر تحكم ActiveX

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

  •  09-06-2019
  •  | 
  •  

سؤال

هل من الممكن تحديد خاصية عنصر تحكم ActiveX التي تعتبر الخاصية الافتراضية؟على سبيل المثال، ما هي الخاصية الافتراضية لزر التحكم CommandButton VB6 وكيف يمكنني اكتشاف أي عناصر تحكم افتراضية أخرى!

/يحرر: دون وجود مصدر للكائن نفسه

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

المحلول 3

استخدم OLE/Com Object Viewer، الذي يتم توزيعه مع Microsoft Visual Studio.

انتقل إلى مكتبات الكتابة وابحث عن المكتبة التي يوجد بها عنصر التحكم، على سبيل المثال يتم تخزين CommandButton فيها مكتبة كائنات Microsoft Forms 2.0.انقر بزر الماوس الأيمن فوق المكتبة وحدد عرض.ابحث عن الفئة المشتركة التي تمثل عنصر التحكم وحدده:

alt text

كما هو واضح، الواجهة الافتراضية لـ CommandButton هي ICommandButton، عندما تقوم بفحص ICommandButton، ابحث عن خاصية تحتوي على disid 0.IDL لخاصية dispid 0 الخاصة بـ CommandButton هي:

[id(00000000), propput, bindable, displaybind, hidden, helpcontext(0x001e8d04)]
void Value([in] VARIANT_BOOL rhs);
[id(00000000), propget, bindable, displaybind, hidden, helpcontext(0x001e8d04)]
VARIANT_BOOL Value();

تظهر لك الخاصية الافتراضية.

نصائح أخرى

أنا لا أستخدم VB، ولكن هنا يذهب.

وجدت استخدام قيمة عنصر التحكم, ، ولكنه ليس حلاً برمجيًا.إذا كان لديك حق الوصول إلى الرمز، فابحث عنه

Attribute Value.VB_UserMemId = 0

باستخدام المفكرة.

يعتمد ذلك على الوقت الذي تريد فيه تحديد ذلك.يمكنك طباعة "قيمة"، على سبيل المثال، عنصر تحكم التسمية (الذي لا يحتوي على خاصية "قيمة") إلى مصحح الأخطاء مثل:

debug.print "Value for cmdTest is ["+format(cmdTest)+"]"

والتي سوف تعطيك شيئا مثل:

قيمة cmdTest هي [خطأ]

كما اتضح، فإن القيمة الافتراضية لزر الأمر هي حالته (سواء تم الضغط عليه أم لا)، لذلك إذا قمت بوضع مثال الكود أعلاه في حدث النقر لعنصر التحكم، فسترى "صحيح"، إذا قمت بتنفيذه في مكان آخر ، سترى "خطأ".

للحصول على نتائج أخرى، ستعرض لك هذه الطريقة على الأقل نوع العقار الذي تبحث عنه.يمكنك استخدام:

debug.print "cmdTest's value is of type ["+TypeName(oObject) +"]"

والتي تخبرك بالنوع الفعلي، وهي:

قيمة cmdTest من النوع [Boolean]

يمكنك استخدام طرق مختلفة لتضييق نطاق الأمور، مثل تحديد القيمة ورؤية ما يحدث.

لديك حق الوصول إلى الرمز، ابحث عنه

لسوء الحظ، لا يمكنني الوصول إلى الكود لمعظم عناصر التحكم.ومع ذلك، فإن الرابط مفيد لعناصر تحكم Microsoft، ولكن ما زلت أرغب في معرفة طريقة للتعرف على عناصر التحكم الأخرى.

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