Articles of pinvoke

Invoke et caractère **

J’ai eu cette assemblée de quelqu’un que j’aimerais utiliser dans mon application c #. L’en-tête ressemble à ceci: int __declspec(dllimport) s2o(WCHAR* filename, char** out, int* len); J’ai réussi à le faire fonctionner en partie, en utilisant: [DllImport(“s2o.dll”, EntryPoint = “?skn2obj@@YAHPA_WPAPADPAH@Z”, CallingConvention = CallingConvention.Cdecl)] public static extern int s2o( [MarshalAs(UnmanagedType.LPWStr)] ssortingng filename, ref char[] @out, ref […]

PInvoke – Comment rassembler pour ‘SomeType * ‘?

J’ai une bibliothèque native avec un ntype natif et je voudrais p / invoquer certaines fonctions. J’ai été capable de marshal pour: foo1(ntype** p) ==> foo1(IntPtr[] p) Mais je ne sais pas comment le faire pour: foo1(ntype*[] p) ==> foo1( p) Au moins IntPtr[] n’a pas fonctionné. modifier La fonction non gérée que j’essaie de […]

Appel de DeviceIoControl à partir de C # avec IOCTL_DVD_ * Codes de contrôle

J’essaie d’appeler DeviceIoControl à partir de C # pour les codes de contrôle IOCTL_DVD_* . Après avoir lu beaucoup d’informations et essayé plusieurs exemples, je n’ai pas beaucoup progressé. Ce que j’essaie de faire, c’est d’obtenir une structure DVD_LAYER_DESCRIPTOR sur le support présent dans le lecteur de DVD. Je peux appeler CreateFile avec succès sur […]

La classe NativeMethods est-elle gérée spécialement dans .NET?

https://msdn.microsoft.com/en-us/library/ms182161.aspx Les trois classes décrites sur cette page sont-elles gérées spécialement dans le .NET Framework? (NativeMethods, SafeNativeMethods et UnsafeNativeMethods) La raison pour laquelle je pose la question est que je me demande s’il est correct de créer des catégories de classes NativeMethods. Par exemple: ComNativeMethods User32NativeMethods OleStorageNativeMethods

Comment déterminer le nom et la version actuels du processus ciblé en C #

Par exemple, si je travaille sur Visual Studio 2008, je veux les valeurs devenv et 2008 ou 9. Le numéro de version est très important …

Renvoi de pointeurs d’un code non géré à un code géré

J’ai une DLL non gérée qui exporte la fonction suivante: SomeData* test(); Supposons SomeData comme: typedef struct _Data Data; struct _Data{ int a; int b; } Maintenant, je veux appeler cette fonction à partir du code C #. Je commence à définir la struture C # nécessaire pour le marshaling personnalisé comme ceci: [StructLayout(LayoutKind.Sequential)] public […]

Comment obtenir une fenêtre active qui ne fait pas partie de mon application?

Comment puis-je obtenir le titre de la fenêtre sur lequel l’utilisateur se concentre actuellement? Je crée un programme qui s’exécute avec une autre fenêtre, et si l’utilisateur n’a pas le focus sur cette fenêtre, je ne trouve aucune raison pour que mon programme continue à se mettre à jour. Alors, comment puis-je déterminer la fenêtre […]

Pourquoi GetWindowThreadProcessId renvoie-t-il 0 lorsqu’il est appelé depuis un service?

Lors de l’utilisation de la classe suivante dans une application console et de l’exécution d’au moins une instance du Bloc-notes, GetWindowThreadProcessId renvoie correctement un identifiant de thread non nul. Toutefois, si le même code est inclus dans un service Windows, GetWindowThreadProcessId renvoie toujours 0 et aucune exception n’est levée. Le changement d’utilisateur sous lequel le […]

Utilisation de chaînes Unicode dans DllImport avec une DLL écrite en Rust

J’essaie d’appeler une DLL écrite en Rust à partir d’un programme C #. La DLL a deux fonctions simples qui prennent des piqûres (de manière différente) et impriment à la console. Code DLL de rouille #![crate_type = “lib”] extern crate libc; use libc::{c_char}; use std::ffi::CStr; #[no_mangle] pub extern fn printc(s: *const c_char){ let c_str : […]

Comment utiliser WM_Close en C #?

Quelqu’un peut-il me donner un exemple d’utilisation de WM_CLOSE pour fermer une petite application telle que le Bloc-notes?