Articles of com

COM viene interrotta in XE2 e come posso aggirarlo?

Aggiornamento: XE2 Update 2 corregge il bug descritto di seguito. Il programma seguente, tagliato dal programma reale, fallisce con un’eccezione in XE2. Questa è una regressione dal 2010. Non ho XE per testare, ma mi aspetterei che il programma funzioni bene su XE (grazie a Primož per aver confermato che il codice funziona bene su […]

BSTR a std :: string (std :: wstring) e viceversa

Mentre si lavora con COM in C ++, le stringhe sono in genere di tipo di dati BSTR . Qualcuno può usare il wrapper BSTR come CComBSTR o CString di MS. Ma poiché non posso usare ATL o MFC nel compilatore MinGW, c’è uno snippet di codice standard per convertire BSTR in std::string (o std::wstring […]

Dove posso trovare tutti gli oggetti COM che possono essere creati in PowerShell?

In PowerShell posso creare oggetti COM che possono essere utilizzati, ad esempio, per controllare le applicazioni di Microsoft Office: $excel = New-Object -com “Excel.Application” $excel.visible = $true Come posso elencare tutti gli oggetti COM disponibili che possono essere creati in PowerShell?

Utilizza Office Interop sul sito Web ASP.net MVC6

Voglio generare documenti di parole dal mio sito Web ASP.net MVC 6. Ho implementato diversi modi per generare un documento in un POC: DocX, NetOffice, OpenXml, oggetti di interoperabilità COM. Sono stato sedotto da esso. Ho fatto un’app per console per testare e funziona. Tuttavia, con ASP.net MVC6, non possiamo fare riferimento a Console App […]

Gestione degli eventi dal server COM out-of-proc nell’applicazione STA gestita

Apparentemente, i gestori gestiti per eventi, provenienti da un server COM out-of-process non gestito, vengono richiamati su un thread di pool casuale, anziché sul thread STA principale (come mi aspetterei). L’ho scoperto mentre rispondevo a una domanda sull’automazione di Internet Explorer . Nel seguente codice, DocumentComplete viene generato su un thread non UI (quindi “Event […]

Come registro una DLL COM scritta in C # con Regsvr32?

Ho un’applicazione VB6 che utilizza una DLL COM. La DLL è scritta in C #. Nelle proprietà del progetto C # ho selezionato l’opzione “Registra per interoperabilità COM”. L’app VB6 funziona perfettamente sul mio computer di sviluppo. Il codice C # segue esattamente questo formato: CodeProject C # COM Example Quando si esegue la distribuzione […]

Perché non posso trasmettere il mio object COM all’interfaccia implementata in C #?

Ho questa interfaccia nella DLL (questo codice è mostrato in Visual Studio dai metadati): #region Assembly XCapture.dll, v2.0.50727 // d:\svn\dashboard\trunk\Source\MockDiagnosticsServer\lib\XCapture.dll #endregion using System; using System.Runtime.InteropServices; namespace XCapture { [TypeLibType(4160)] [Guid(“XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”)] public interface IDiagnostics { [DispId(1)] void GetStatusInfo(int index, ref object data); } } Così ho creato un server COM con tale class: [ComVisible(true)] [Guid(SimpleDiagnosticsMock.CLSID)] [ComDefaultInterface(typeof(IDiagnostics))] […]

Come fare rendere un object COM .NET apartment-threaded?

Gli oggetti .NET sono free-threaded per impostazione predefinita. Se eseguito il marshalling su un altro thread tramite COM, viene sempre eseguito il marshalling a se stessi, indipendentemente dal fatto che il thread del creatore sia STA o meno e indipendentemente dal valore del Registro di sistema ThreadingModel . Ho il sospetto che essi aggregassero il […]

Cosa significa “Metodo ‘~’ dell’object ‘~’ fallito”?

Sto provando a eseguire un’applicazione legacy VB6 sul mio desktop (non ha un’interfaccia utente, essendo un’app della riga di comando), e quando lo faccio, ricevo una finestra di messaggio che dice Run-time error ‘4099’: Method ‘~’ of object ‘~’ failed Questo non significa niente per me; qualcuno ha un’idea di cosa sta andando storto?

Esporre la proprietà come variante in .NET per Interop

Sto creando una class wrapper in .NET (VB.NET come succede ma è ugualmente legata a C #) che è esposto a COM e una delle proprietà che sto cercando di avvolgere è una variante. Ho pensato di essere in grado di utilizzare un object, ma ottengo un errore: Public Property FieldValue([vFieldID As Object = -1]) […]