Articles of pinvoke

Modo corretto (in .NET) per passare lo stato attivo a un’altra applicazione

Questo è quello che ho finora: Dim bProcess = Process.GetProcessesByName(“By”).FirstOrDefault If bProcess IsNot Nothing Then SwitchToThisWindow(bProcess.MainWindowHandle, True) Else Process.Start(“C:\Program Files\B\B.exe”) End If Ha due problemi. Alcune persone mi hanno detto che SwitchToThisWindow è stato privato. Se l’applicazione B è ridotta a icona, questa funzione non riesce automaticamente dal punto di vista dell’utente. Quindi qual è […]

Come restituire il testo dal codice Nativo (C ++)

Sto usando Pinvoke per l’interoperabilità tra codice nativo (C ++) e codice gestito (C #). Quello che voglio ottenere è ottenere del testo dal codice nativo nel mio codice gestito. Per questo provo molte cose, ad esempio passando string / stringbuilder per ref, usando [IN] e [OUT], Marshalling su LPSTR, restituendo stringhe dalla funzione ecc. […]

Maresciallo “char *” in C #

Data la seguente funzione C in una DLL: char * GetDir(char* path ); Come faresti P / Richiamare questa funzione in C # e effettuare il marshalling del char * correttamente. .NET sembra sapere come fare LPCTSTR ma quando non riesco a capire alcun marshalling che non causa l’triggerszione di NotSupportedException quando si chiama questa […]

Nessuna uscita della console quando si utilizza AllocConsole e l’architettura di destinazione x86

Ho un progetto WinForms e se l’utente desidera una console di debug, AllocConsole() una console con AllocConsole() . L’output di tutte le console funziona normalmente con l’architettura di destinazione impostata su “Any CPU”, ma quando la cambio in “x86” non produce nulla ( Console.Read() funziona ancora come previsto). Se apro l’EXE direttamente, l’output funziona. Sembra […]

Una chiamata alla funzione PInvoke ” ha sbilanciato lo stack

Sto ottenendo questo strano errore su alcune cose che ho usato per un bel po ‘. Potrebbe essere una novità in Visual Studio 2010 ma non ne sono sicuro. Sto provando a chiamare una funzione non modificata scritta in C ++ da C #. Da quello che ho letto su internet e dal messaggio di […]

Il modo migliore per accedere agli oggetti COM da C #

Sto pianificando di utilizzare vari oggetti esposti come oggetti COM. Per renderli più facili da usare, mi piacerebbe racchiuderli come oggetti C #. Qual è l’approccio migliore per questo?

Porta una finestra in primo piano in WPF

Come posso portare la mia applicazione WPF nella parte anteriore del desktop? Finora ho provato: SwitchToThisWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle, true); SetWindowPos(new WindowInteropHelper(Application.Current.MainWindow).Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); SetForegroundWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle); Nessuno dei due sta svolgendo il lavoro ( Marshal.GetLastWin32Error() sta dicendo che queste operazioni sono state completate correttamente e che gli attributi P / Invoke […]

Passando le stringhe da C # a C ++ DLL e ritorno – esempio minimo

Sto cercando di rendere l’esempio assolutamente semplice e minimo di come passare le stringhe da e verso una DLL C ++ in C #. Il mio C ++ si presenta così: using std::string; extern “C” { string concat(string a, string b){ return a + b; } } Con un colpo di testa come using std::string; […]

Come posso chiamare C ++ / CLI da C #?

Ho una class implementata in C ++ che è responsabile per il calcolo aritmetico del programma e un’interfaccia che usa WPF. Elaboro l’input con C # ma come posso usare la mia class C ++? Ho visto alcuni commenti su come far funzionare una class wrapper C ++ gestita, ma non so da dove iniziare. […]

pinvokestackimbalance – come posso risolvere questo problema o distriggersrlo?

Sono appena passato a vs2010 da vs2008. Esatta stessa soluzione, tranne che ora ogni singola chiamata a una dll C ++ produce un’eccezione ‘pinvokestackimbalance’. Questa eccezione non viene licenziata nel 2008. Ho accesso completo alla DLL C ++ e all’applicazione chiamante. Non sembra che ci sia alcun problema con il pinvoke, ma questo problema sta […]