pinvoke

    0热度

    1回答

    我有一个C DLL,我是PInvoking。主要目标是获取39个字符的GUID字符串,如abcd-abcd-abcd-abcd-abcd-abcd-abcd-abcd。 我首先调用一个方法来得到这个字符串,我希望是39个字符的大小,然后我调用另一个函数传递一个StringBuilder容量为39: [DllImport("test.dll")] public static extern int

    0热度

    1回答

    我写这样的代码来改变默认的打印机在窗口和正常工作,但在重装INI文件有错误 这是一个代码: Private Sub SetDefaultPrinter(ByVal PrinterName As String, ByVal DriverName As String, ByVal PrinterPort As String) Dim DeviceLine As String 'r

    0热度

    1回答

    对于我的程序,我需要获取有关当前显示的详细信息。在我的研究中,我遇到了关于链接System.Windows.Forms.Screen类和它的EDID信息的文章this。起初,我尝试复制并粘贴使用p/invoke发现的代码来提供所有必需的本地方法和结构,但它不起作用,只给了我一串?为InstanceID。因此,我试图使用MSDN资源,并再次p/invoke自己创建代码。这是我想出了: private

    0热度

    1回答

    我想P /调用一个C++ API返回一个char *,它是C#中的一个字符串。我知道这应该由IntPtr的捕获,然后将指针转换为使用封送像这样的字符串, C++ API char* WINAPI MY_API(const char *basebuf, char *strbuf) { return targetfunction(basebuf, strbuf); } C#的P/In

    1热度

    2回答

    我创建了一个C DLL,以便我可以在我的C#应用程序中使用它。 我在C++测试应用程序上测试了DLL,它工作正常,但它在C#应用程序中不起作用。 由于某些原因,我无法构建DLL的调试版本,因此我无法在调试模式下运行C#应用程序。 DLL调试配置不会找到include directories,在发布模式,它工作得很好! 我需要说的是,我在下面给出了一个特定的方法,导致崩溃,调用DLL中的其他方法是正

    1热度

    1回答

    我试图从C#UWP应用程序的非托管dll调用方法。我这样做,但禁止在非托管dll上的“LoadLibrary()”,以便我可以使用它。 这一切工作正常在调试模式下,然而在发布模式,我得到一个奇怪的错误: 消息:类初始化方法Tests.UnitTests.InitializeClient抛出异常。 System.TypeLoadException:System.TypeLoadException:程

    1热度

    1回答

    我试图从Windows的SetupAPI到C#的编号SetupGetInfInformation函数。 我定义必要的(编组)的结构如下: internal const uint INFINFO_INF_NAME_IS_ABSOLUTE = 2; [StructLayout(LayoutKind.Sequential)] internal struct SP_INF_INFOR

    1热度

    1回答

    我遇到了一种情况,我需要根据操作系统更改我使用的DLL导入语句。我想知道是否有其他人观察到这一点,知道为什么,或者是否有更好的方法来处理这个问题。 这是显示问题的最小代码片段。这是一个简单的命令行应用程序,只是输出shift键的状态。 using System; using System.Runtime.InteropServices; namespace Shift { cla

    -2热度

    1回答

    我试图从非托管DLL导入到我的C#程序的功能。 这是我的代码: [DllImport("MarkEzd.dll", EntryPoint = "lmc1_Initial2", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)] public static extern int piplmc

    -1热度

    1回答

    这是我试图调用的方法签名。 EXTERN_C HRESULT QueryData( _Outptr_opt_result_bytebuffer_(*SizeOfData) PBYTE * Data, _Out_opt_ UINT32* SizeOfData, _In_ BOOL IsDataType ) 上述方法是不是我的代码