Frage

Ich habe eine (COM-Interop-basiert) ActiveX Contol, dass ich mit der Registrierung zu verwenden, versuchen kostenlos com. Wenn die Steuerlasten die Steuerung inaktiv (nicht auf Ereignisse reagiert, die Kontrolle nicht vollständig wiedergegeben usw.).

Suche nach viel entdecken ich, dass COM-Objekte mit reg-Free-com verwenden, um das MiscStatus Attribut den Anfangszustand zu setzen korrekt aktiviert werden. Ich weiß, wie es mit einem ComClass zu verwenden, die zu einem nativen COM-Objekt entspricht.

1) Was ist das Äquivalent der folgenden für clrClass Element was einem COM-Objekt 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) Der COM-Client ich verwende ist Visual FoxPro. Wenn die (1) nicht möglich Was ist kann ich in VFP das inaktive ActiveX-Steuerelement zu aktivieren. (Ich nicht zu VB oder C # Eingabe etwas dagegen, wenn ich es verwenden kann das Äquivalent foxpro zu finden)

versucht Derzeit ich folgende

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

Aber ich die OleControl1 bekommt Fokus vor Ereignissen wie Mausklick auf seine Subelemente vorbei. Also habe ich es zweimal klicken müssen die notwendigen Maßnahmen zu tun, hat es jederzeit nicht den Fokus. Ich würde die Kontrolle wie zu handeln, als ob die „nouiactivate“ des MiscStatus Wert eingestellt ist.

3) Gibt es eine andere Art und Weise zu bewerkstelligen, was ich tun will?

Hans Passant, hier ist die Liste der aktuellen Assembly.dll.manifest. Die Formatierung im Kommentar machte es nicht lesbar.

<?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>
War es hilfreich?

Lösung

Ich habe die „OLETypeAllowed“ Eigenschaft des OleControl1 und es war 1 (eingebettetes OLE-Objekt) anstelle von -2 (ActiveX-Objekt). Also das Objekt nicht normal aktiviert bekommt.

Das sieht aus wie es ist ein Visual FoxPro Problem. Ich werde eine neue Frage zu diesem Beitrag.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top