社区
C#
帖子详情
对于参数为函数指针的API,C#如何调用?
hahahawk
2003-03-17 01:04:52
调用API,其他的参数都很容易解决,但是函数指针却让我糊涂。
我尝试过用delegate,并且delegate的原理也很象回调函数。
但是执行的时候总是报错,又无法调试。
比如:象RegisterClass这样的api函数,如何调用?请高手不吝指教!
...全文
31
3
打赏
收藏
对于参数为函数指针的API,C#如何调用?
调用API,其他的参数都很容易解决,但是函数指针却让我糊涂。 我尝试过用delegate,并且delegate的原理也很象回调函数。 但是执行的时候总是报错,又无法调试。 比如:象RegisterClass这样的api函数,如何调用?请高手不吝指教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hahahawk
2003-03-18
打赏
举报
回复
谢谢你对我的RegisterClass函数问题的解答。不过,还是没有完全解决。你给出的代码WNDCLASS中WndProc类型,我想是delegate吧?我这样使用了,
public delegate int WndProcDelegate(IntPtr hwnd,uint message,int wParam,int lParam);
...
WndProcDelegate d = new WndProcDelegate(WndProc);
wndclass.lpfnWndProc = d;
但是RegisterClass后调用API函数GetLastError返回127,意思是无法找到Wnd_Proc_Not_Fount.
另外我执行GetMessage时候会引发System.ExecutionEngineException异常,并且用catch语句都无法捕捉,程序仍然会终止。诚心请教!
DarthVader
2003-03-18
打赏
举报
回复
up一个
qqchen79
2003-03-18
打赏
举报
回复
public delegate int WndProc(IntPtr hwnd, int msg, int wparam, int lparam);
[StructLayout(LayoutKind.Sequential)]
public struct WNDCLASS {
public int style;
[MarshalAs(UnmanagedType.FunctionPtr)]
public WndProc lpfnWndProc;
public int cbClsExtra;
public int cbWndExtra;
public IntPtr hInstance;
public IntPtr hIcon;
public IntPtr hCursor;
public IntPtr hbrBackground;
[MarshalAs(UnmanagedType.LPStr)]
public string lpszMenuName;
[MarshalAs(UnmanagedType.LPStr)]
public string lpszClassName;
}
[DllImport("user32.dll", CharSet=CharSet.Ansi)]
public extern static short RegisterClass(ref WNDCLASS cls);
《C经典面试》编译链接、
指针
、内存bug、
函数
、其它
指针
:
指针
概念、数组相关的
指针
、字符串
指针
、
函数
指针
等 3.内存bug:内存越位、内存覆盖、使用非法内存、内存泄露等。 4.
函数
:自定义
函数
、内联
函数
、回调
函数
、变参
函数
、递归
函数
、库
函数
等 5.其它:自动类型...
C#
调用
C++带
指针
参数
函数
C#
调用
代码 [UnmanagedFunctionPointer(CallingConvention.StdCall)] public delegate void fnSaveCB ( int savedLen); [DllImport( "testDLL" , CallingConvention = CallingConvention.StdCall, ...
C#
用委托
调用
C++dll中封装的
函数
指针
C++已经封装好了串口发送接收的
函数
,接收端是使用的一个
函数
指针
,客户端回调实现接收到数据,并且C++的MFC可以
调用
。现在是想在
C#
中使用该DLL。 具体做法如下: 第一步,C++DLL中先定义
函数
指针
typedef void ...
在
C#
中
调用
含有
指针
和结构体的C语言DLL
C#
调用
C的动态链接库 C和
C#
作为日常工作中很常见的两种开发语言,难免会遇到彼此需要
调用
的情况。本章重点讲一下关于
C#
调用
C的dll的经验,希望能给有用到的朋友以借鉴。 首先制作C版本的dll,因为我的VS2017有点小...
C#
Tips:
调用
Win32
API
如何处理
指针
类型的
参数
如果说C/C++
调用
API
只是
调用
函数
这类轻松的活,在
C#
下却成了阻挡入门者的技术活。之所以产生这么大区别在于数据类型的差异,就是因为
C#
这类采用了“安全”的类型,我们避免了内存释放和内存访问错误的一些困扰,但是...
C#
110,555
社区成员
642,563
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章