2

登録不要の com で使用しようとしている (COM Interop ベースの) ActiveX コントロールがあります。コントロールが読み込まれると、コントロールは非アクティブになります (イベントに応答しない、コントロールが完全にレンダリングされないなど)。

多くの検索の結果、reg-free-com を使用する COM オブジェクトが miscStatus 属性を使用して初期状態を設定し、正しくアクティブ化されることがわかりました。ネイティブ COM オブジェクトに対応する comClass で使用する方法を知っています。

1) COM 相互運用オブジェクトに対応する clrClass 要素の次のものと同等のものは何ですか?

<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) が不可能な場合、非アクティブな ActiveX コントロールをアクティブにするために VFP で何ができるでしょうか。(同等の foxpro を見つけるために使用できるのであれば、VB または C# の入力も気にしません)

現在、私は次のことを試しました

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

しかし、マウス クリックなどのイベントをそのサブ要素に渡す前に、OleControl1 がフォーカスを取得します。そのため、フォーカスがない場合は常に、必要なアクションを実行するために 2 回クリックする必要があります。miscStatus 値の「nouiactivate」が設定されているかのようにコントロールを動作させたいと思います。

3) 私がやりたいことを達成する他の方法はありますか?

Hans Passant さん、これが現在の 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>
4

1 に答える 1

1

olecontrol1 の "oletypeallowed" プロパティを確認したところ、-2 (ActiveX オブジェクト) ではなく 1 (埋め込み OLE オブジェクト) でした。そのため、オブジェクトは正常にアクティブ化されません。

これは、Visual FoxPro の問題のようです。これに関する新しい質問を投稿します。

于 2010-05-20T18:23:47.267 に答える