سؤال

لديّ (com interop based) activex contol أحاول استخدامه مع com free registration free. عندما يتم تحميل عنصر التحكم ، يكون عنصر التحكم غير نشط (لا يستجيب للأحداث ، ولا يتم التحكم بالكامل وما إلى ذلك).

بعد الكثير من البحث ، اكتشفت أن كائنات COM باستخدام REG-FREE-COM تستخدم سمة MISCSTATUS لتعيين الحالة الأولية لتنشيطها بشكل صحيح. أعرف كيفية استخدامه مع كئيب يتوافق مع كائن COM الأصلي.

1) ما هو ما يعادل ما يلي لعنصر clrclass الذي يتوافق مع كائن com-interop؟

<comClass clsid="{qqqqqqqq-wwww-eeee-rrrr-00C0F0283628}"               
    tlbid="{xxxxxxxx-yyyy-zzzz-aaaa-0000F8754DA1}"               
    threadingModel="Both"                  
    progid="SomeCompany.SomeOleControl"               
    description="Some ActiveX Control"
    miscStatus="recomposeonresize,insideout,activatewhenvisible,nouiactivate" >

2) عميل COM الذي أستخدمه هو Visual Foxpro. إذا كان (1) غير ممكن ، فما الذي يمكنني فعله في VFP لتنشيط عنصر تحكم ActiveX غير النشط. (لا مانع من إدخال VB أو C# أيضًا إذا كان بإمكاني استخدامه للعثور على FoxPro المكافئ)

حاليا جربت ما يلي

this.AddObject('OleControl1', 'oleControl', 'SomeCompany.SomeOleControl')
this.OleControl1.AutoActivate = 3
this.OleControl1.Visible = .T.
this.OleControl1.SetFocus

لكنني أحصل على تركيز Olecontrol1 قبل تمرير الأحداث مثل الماوس إلى انقر على العناصر الفرعية. لذلك لا بد لي من النقر مرتين على القيام بالإجراء اللازم ، في أي وقت لا يكون له تركيز. أود أن تتصرف عنصر التحكم كما لو تم تعيين "nouiActive" لقيمة Miscstatus.

3) هل هناك أي طريقة أخرى لإنجاز ما أريد أن أفعله؟

هانز باسانت ، هنا هي قائمة Assembly.dll.manifest. جعل التنسيق في التعليق غير قابل للقراءة.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity name="Assembly" 
 version="1.0.0.0" type="win32" publicKeyToken="wwwwwwwwwwwwwwww"/>
<clrClass
 name="SomeCompany.SomeOleControl"
 clsid="{qqqqqqqq-wwww-eeee-rrrr-00C0F0283628}"
 progid="SomeCompany.SomeOleControl"
 threadingModel="Both"/>
<file name="Assembly.tlb">
 <typelib
  tlbid="{xxxxxxxx-yyyy-zzzz-aaaa-0000F8754DA1}"
  version="1.0"
  helpdir=""
  flags="hasdiskimage"/>
 </file>
</assembly>
هل كانت مفيدة؟

المحلول

لقد راجعت خاصية "oletypeallowed" من Olecontrol1 وكانت 1 (كائن OLE المدمج) بدلاً من -2 (كائن ActiveX). لذلك لا يتم تنشيط الكائن بشكل طبيعي.

هذا يبدو وكأنه مشكلة فوكسبرو البصرية. سأقوم بنشر سؤال جديد بخصوص هذا.

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