Utilità di importazione di controlli ActiveX di Windows Form (Aximp.exe)
Aggiornamento: novembre 2007
L'utilità di importazione di controlli ActiveX converte in un controllo Windows Form le definizioni dei tipi in una libreria di tipi COM per un controllo ActiveX.
I Windows Form possono contenere solo controlli Windows Form, ovvero classi derivate da Control. Per ogni controllo ActiveX, in Aximp.exe viene generata una classe wrapper che è possibile inserire in un Windows Form. Questo consente di utilizzare lo stesso supporto per la fase di progettazione e la stessa metodologia di programmazione applicabili ad altri controlli Windows Form.
Per inserire il controllo ActiveX, è necessario generare un controllo wrapper che derivi da AxHost. Tale controllo contiene un'istanza del controllo ActiveX sottostante ed è in grado di comunicare con il controllo ActiveX pur avendo l'aspetto di un controllo Windows Form. Il controllo così generato contiene il controllo ActiveX e ne espone proprietà, metodi ed eventi come se fossero del controllo generato.
aximp [options]{file.dll | file.ocx}
Note
Argomento |
Descrizione |
---|---|
file |
Il nome del file di origine contenente il controllo ActiveX da convertire. L'argomento del file deve avere un'estensione DLL oppure OCX. |
Opzione |
Descrizione |
---|---|
/delaysign |
Specifica ad Aximp.exe di firmare il controllo risultante utilizzando la firma posticipata. È necessario specificare questa opzione con /keycontainer:, /keyfile: o /publickey:. Per ulteriori informazioni sul processo di firma posticipata, vedere Ritardo della firma di un assembly. |
/help |
Visualizza la sintassi e le opzioni dei comandi dello strumento. |
/keycontainer:Nomecontenitore |
Consente di firmare il controllo risultante con un nome sicuro utilizzando la coppia di chiavi pubblica/privata presente nel contenitore di chiavi specificato da nomecontenitore. |
/keyfile:nomefile |
Consente di firmare il controllo risultante con un nome sicuro utilizzando la coppia di chiavi pubblica/privata ufficiale dell'autore trovata in nomefile. |
/nologo |
Evita la visualizzazione del messaggio di avvio Microsoft. |
/out:nomefile |
Specifica il nome dell'assembly da creare. |
/publickey:nomefile |
Consente di firmare il controllo risultante con un nome sicuro utilizzando la chiave pubblica presente nel file specificato da nomefile. |
/silent |
Evita la visualizzazione dei messaggi di operazione riuscita. |
/source |
Genera codice sorgente di C# per il wrapper di Windows Form. |
/verbose |
Specifica la modalità dettagliata. Visualizza ulteriori informazioni sullo stato. |
/? |
Visualizza la sintassi e le opzioni dei comandi dello strumento. |
Aximp.exe converte un'intera libreria dei tipi di controlli ActiveX alla volta e produce un insieme di assembly contenenti i metadati di Common Language Runtime e l'implementazione del controllo per i tipi definiti nella libreria dei tipi originale. I file generati vengono denominati in base ai seguenti criteri:
Proxy di Common Language Runtime per i tipi COM: progid.dll
Proxy di Windows Forms per i controlli ActiveX (dove Ax significa ActiveX): Axprogid.dll
Nota
Se il nome di un membro del controllo ActiveX corrisponde a un nome definito in .NET Framework, il nome del membro verrà fatto precedere dal prefisso "Ctl" durante la creazione della classe derivata da AxHost. Se, ad esempio, il controllo ActiveX contiene un membro denominato "Layout", questo verrà rinominato "CtlLayout" nella classe derivata da AxHost in quanto l'evento Layout viene definito all'interno di .NET Framework.
È possibile esaminare i file generati con strumenti quali Disassembler MSIL (Ildasm.exe).
L'utilizzo di Aximp.exe per generare un assembly .NET per il controllo ActiveX WebBrowser (shdocvw.dll) non è supportato.
L'esecuzione di Aximp.exe sul file shdocvw.dll comporterà sempre la creazione di un altro file denominato shdocvw.dll nella directory da cui viene eseguito lo strumento. L'inserimento nella directory Documents and Settings del file generato causerà problemi per Microsoft Internet Explorer ed Esplora risorse. Al riavvio del computer, viene eseguita una ricerca nella directory Documents and Settings prima che nella directory system32 per trovare una copia di shdocvw.dll. Verrà utilizzata la copia trovata in Documents and Settings e verrà effettuato un tentativo di caricamento dei wrapper gestiti. Internet Explorer ed Esplora risorse non funzioneranno correttamente in quanto dipendono dal motore di rendering della versione di shdocvw.dll presente nella directory system32. Se si verifica tale problema, eliminare la copia di shdocvw.dll nella directory Documenti e impostazioni e riavviare il computer.
Anche l'utilizzo di Aximp.exe con shdocvw.dll per creare un assembly .NET da utilizzare nello sviluppo dell'applicazione può causare problemi. In questo caso, l'applicazione caricherà sia la versione del sistema di shdocvw.dll sia la versione generata ed è possibile che venga data priorità alla versione del sistema. In questa situazione, quando si tenta di caricare una pagina Web all'interno del controllo ActiveX WebBrowser è possibile che per l'utente venga visualizzata una finestra di dialogo Apri/Salva. Quando l'utente fa clic su Apri, la pagina Web verrà aperta in Internet Explorer. Ciò si verifica solo su computer in cui viene eseguito Internet Explorer versione 6 o precedenti. Per evitare questo problema, utilizzare il controllo WebBrowser gestito o generare il file shdocvw.dll gestito tramite Visual Studio come descritto in Procedura: aggiungere riferimenti alle librerie dei tipi.
Esempio
Il comando riportato di seguito consente la generazione di MediaPlayer.dll e di AxMediaPlayer.dll per il controllo msdxm.ocx di Media Player.
aximp c:\systemroot\system32\msdxm.ocx