C# 调用Dll中非托管C++代码时,函数参数的类型对照

本文介绍了在C#中调用非托管C++代码时,如何正确对应函数参数类型,包括字符串类型如LPTSTR的处理,以及C++与C#的数据类型对照表,提供了MSDN和P/Invoke Interop Assistant工具作为参考资料,帮助开发者更顺利地进行跨语言调用。
摘要由CSDN通过智能技术生成

转自:http://wjason.javaeye.com/blog/491410

 

 

在上一篇blog(工具(Tray Friend):将任何程序,最小化到系统托盘 )中。

使用C#调用了很多非托管的C++代码

 

现在就把“C# 调用Dll中非托管C++代码时,函数参数类型对照”这一问题做一个总结。

用这些关键字进行搜索,网上有不少这样那个的内容,比如下面这几个链接

 

C# 与 C++ 数据类型对照(后三篇内容一样)

http://topic.csdn.net/u/20090928/11/af7848c6-5071-41aa-92e2-e8d626d6aefe.html

 

http://blog.csdn.net/dz45693/archive/2009/09/26/4598867.aspx

http://www.cnblogs.com/yiki/archive/2008/10/29/1321848.html

http://blog.csdn.net/okadler0518/archive/2009/06/22/4289679.aspx

 

但是上面的映射有时候会出现问题。

比如上面的帖子都将LPTSTR映射成String,

然而在处理GetWindowText 函数是,因为这个LPTSTR是为了要将结果带回来的返回值。

因此在这里使用String便行不通了,而需要使用StringBuffer。

 

注:GetWindowText的原型

Cpp 代码 

点击()折叠或打开

  1.         HWND hWnd
  2.         LPTSTR lpString
  3.          nMaxCount
  4.     

如果问题的方法,仅仅是查看上面那几个链接,那么我一定不会写这篇博客。

 

方法一:

查看Web版本的MSDN。

看看下面这两个连接,在Community Content部分都给出了C#,VB调用的原型。

当然,不是所有的函数对应的Community Content部分都有完整的事例。

但有的给出了一些常量的值,有的给出了一些结构体的定义,总之这部分内容还是具有参考价值。

注:安装在本机的MSDN没有Community Content这部分内容。

 

GetWindowText

http://msdn.microsoft.com/en-us/library/ms633520%28VS.85%29.aspx

 

GetForegroundWindow

http://msdn.microsoft.com/en-us/library/ms633505%28VS.85%29.aspx

 

 

方法二:

P/Invoke Interop Assistant

 

输入你想要的东西(Type,Constant,Procedure&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值