当前位置:编程学习 > C#/ASP.NET >>

求教C#调用winAPI问题

小弟在用C#开发ACTIVEX的时候  发现SetupDiGetClassDevs函数只能在32位系统下成功调用。但是小弟的电脑室64位的。请问下需要如何修改? --------------------编程问答-------------------- 急求,坐等回复 --------------------编程问答--------------------
引用 1 楼 Don520 的回复:
急求,坐等回复


编译成经x86 模式 --------------------编程问答-------------------- 生成目标平台为X86?  但是我本机调试的时候默认为64位。每次都不成功 --------------------编程问答-------------------- 自己顶。求大哥指点 --------------------编程问答--------------------
引用 3 楼 Don520 的回复:
生成目标平台为X86?  但是我本机调试的时候默认为64位。每次都不成功


你设一下x86不就完了么,64位你自己都说不支持了。 --------------------编程问答-------------------- X86生成以后就报错了。启动都启动不了,所以问问64位的API是啥? 小弟对API不太熟悉 --------------------编程问答--------------------
引用 5 楼 wyd1520 的回复:
Quote: 引用 3 楼 Don520 的回复:

生成目标平台为X86?  但是我本机调试的时候默认为64位。每次都不成功


你设一下x86不就完了么,64位你自己都说不支持了。


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技术 ,  组件/控件开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,