C#中,如何调用c程序封装的dll接口API?急。。。。

priscill 2004-06-28 09:06:31
以下是在dll库中定义的API函数:
int DocHandleAndGetData(HWND hwnd,
char Type_com,
short FrontStamp,
short Validate,
short Codeline,
short Sorter,
short ScanMode,
short ClearBlack,
char Side,
short SaveImage,
char *DirectoryFile,
char *BaseFilename,
int pos_x,
int pos_y,
int sizeW,
int Quality,
short FileFormat,
short WaitTimeout,
char Beep,
long Reserved3,
LPSTR FilenameFront,
LPSTR FilenameBack,
LPSTR Reser1,
LPLONG *FrontImage,
LPLONG *Backmage,
LPLONG *Reser2,
LPSTR CodelineSW,
LPSTR CodelineHW,
LPSTR Barcode,
LPVOID CodelinesOptical,
LPVOID Reserved1,
LPVOID Reserved2);

现在我想在C#应用程序中对它进行调用,不知道该如何做?对于结构与指针等的转换处理不懂,哪位高手来帮我实现一下,不胜感激!
若问题解决,可以另开贴给分!
...全文
434 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
priscill 2004-06-28
  • 打赏
  • 举报
回复
自已顶一下
priscill 2004-06-28
  • 打赏
  • 举报
回复
现在的问题是此函数是一个硬件设备API接口的中定义,以前用VC++调用时挺方便,但是换到C#中来,却不会了,咳,学习C#才几周
暗石绿 2004-06-28
  • 打赏
  • 举报
回复
3、int __stdcall ReadCard(int ReadMode,LPSTR Track2Data,LPSTR Track3Data)
函数作用:读卡
参数说明:int ReadMode:读卡模式,=1读二磁道数据,=2读三磁道数据,=3读二三磁道数据。
LPSTR Track2Data:返回二磁道数据
LPSTR Track3Data:返回三磁道数据
函数返回:=1 读卡成功
=0 读卡失败
<0 出错代码


/// <summary>
/// 读卡
/// </summary>
/// <param name="ReadMode">
/// 读卡模式:
/// =1读二磁道数据
/// =2读三磁道数据
/// =3读二三磁道数据。
/// </param>
/// <param name="Track2Data">返回二磁道数据</param>
/// <param name="Track3Data">返回三磁道数据</param>
/// <returns>
/// =1 读卡成功
/// =0 读卡失败
/// <0 出错代码
/// </returns>
[DllImport("Commpro.dll", CharSet=CharSet.Auto)]
public static extern int ReadCard(
int ReadMode,out byte Track2Data,out byte Track3Data
);
maotroy 2004-06-28
  • 打赏
  • 举报
回复
函数有5个或5个以上的参数时,还是用结构吧,楼主的函数声明太长了
Bob 2004-06-28
  • 打赏
  • 举报
回复
C#中调用Windows API的要点
http://www.programfan.com/showarticle.asp?id=2367
publicX 2004-06-28
  • 打赏
  • 举报
回复
你可以F1 一下 DllImport
有帮助例子;
至于类型转换,可以查一下VC的帮助,将其转换为C# 认可类型 ;
我记得在.net 帮助中我看到过有C# 、 vc 类型对照表但我忘了在哪!
你自己找找!
ThunderLight 2004-06-28
  • 打赏
  • 举报
回复
顶亚顶

同问!
priscill 2004-06-28
  • 打赏
  • 举报
回复
可是在API函数中,HWND,char *,LPSTR,LPLONG,LPVOID等类型如何转换?
gabriel1 2004-06-28
  • 打赏
  • 举报
回复
参考
[DllImport("SMSApi.dll")]public static extern int PushReq_Inform(int timeout, string spnumber,int FeeType,int FeeValue,string ChargeUser,string Recepter,int MsgLen,string MsgData);
....
PushReq_Inform(1500,"9808", isfree,feevalue,"86"+paynumber,"86"+to,Sendtext.Length,Sendtext);
Piyongcai 2004-06-28
  • 打赏
  • 举报
回复
使用VB6.0的ApIViewer
1,首先获得VB的API声明函数
2,将VB的函数转换为C#-----这一步很简单的

我用这种方式解决了95%以上的API声明


110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧