求教C#调用winAPI问题
小弟在用C#开发ACTIVEX的时候 发现SetupDiGetClassDevs函数只能在32位系统下成功调用。但是小弟的电脑室64位的。请问下需要如何修改? --------------------编程问答-------------------- 急求,坐等回复 --------------------编程问答--------------------编译成经x86 模式 --------------------编程问答-------------------- 生成目标平台为X86? 但是我本机调试的时候默认为64位。每次都不成功 --------------------编程问答-------------------- 自己顶。求大哥指点 --------------------编程问答--------------------
你设一下x86不就完了么,64位你自己都说不支持了。 --------------------编程问答-------------------- X86生成以后就报错了。启动都启动不了,所以问问64位的API是啥? 小弟对API不太熟悉 --------------------编程问答--------------------
X86生成以后就报错了,启动都启动不了。郁闷 --------------------编程问答-------------------- PInvoke.net可以生成标准的API调用方法供C#调用,一般都支持32和64的 --------------------编程问答-------------------- 一般ANY cpu模式下编译的,应该在64bits下能够运行,如果不行,尝试将该方法中有 IntPtr 类型的改为 Int32试下? --------------------编程问答-------------------- On 32bit platforms, all SetupApi structures are 1-Byte packed. On 64bit platforms the SetupApi structures are 8-byte packed.
[DllImport("setupapi.dll", CharSet = CharSet.Auto)]
static extern IntPtr SetupDiGetClassDevs(
ref Guid ClassGuid,
[MarshalAs(UnmanagedType.LPTStr)] string Enumerator,
IntPtr hwndParent,
uint Flags
);
[DllImport("setupapi.dll", CharSet = CharSet.Auto)]
static extern IntPtr SetupDiGetClassDevs( // 1st form using a ClassGUID only, with null Enumerator
ref Guid ClassGuid,
IntPtr Enumerator,
IntPtr hwndParent,
int Flags
);
[DllImport("setupapi.dll", CharSet = CharSet.Auto)] // 2nd form uses an Enumerator only, with null ClassGUID
static extern IntPtr SetupDiGetClassDevs(
IntPtr ClassGuid,
string Enumerator,
IntPtr hwndParent,
int Flags
);
补充:.NET技术 , 组件/控件开发