Articles of pinvoke

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 […]

usando una class definita in una dll c ++ nel codice c #

Ho una DLL che è stata scritta in c ++, ho bisogno di usare questa dll nel mio codice c #. Dopo la ricerca ho scoperto che l’utilizzo di P / Invoke mi avrebbe consentito di accedere alla funzione di cui ho bisogno, ma queste funzioni sono definite in una class e utilizzano variabili di […]

Imansible caricare DLL (Imansible trovare il modulo HRESULT: 0x8007007E)

Ho una libreria DLL con codice API C ++ non gestito che devo usare nella mia applicazione .NET 4.0. Ma ogni metodo che provo a caricare la mia DLL ottengo un errore: Imansible caricare DLL “MyOwn.dll“: il modulo specificato non è stato trovato. (Eccezione da HRESULT: 0x8007007E) Ho letto e provato diverse soluzioni che ho […]

PInvoke per la funzione C che restituisce char *

Sto cercando di scrivere un codice C # che chiama un metodo da una DLL non gestita. Il prototipo per la funzione nella dll è: extern “C” __declspec(dllexport) char *foo(void); In C #, ho usato per la prima volta: [DllImport(_dllLocation)] public static extern string foo(); Sembra funzionare in superficie, ma ricevo errori di corruzione della […]

Tasto di scelta rapida globale nell’applicazione console

Qualcuno sa come utilizzare le chiamate API RegisterHotKey / UnregisterHotKey in un’applicazione console? Presumo che l’impostazione / rimozione del tasto di scelta rapida sia la stessa, ma come posso richiamare la chiamata quando il tasto è stato premuto? Ogni esempio che vedo è per Winforms, e usa l’ protected override void WndProc(ref Message m){…} , […]