您现在的位置:主页 > 头条 >

通达信提供了dll函数应用

更新时间:2021-07-19 09:39:58

  如何使通达信向DLL函数传递多个参数

   不是特别清楚你的用法,如果你是为了在窗口里面显示东西又不想传窗口句柄的话:
回调函数 ,dll初始化的时候把函数指针给他。
然后dll直接调用该函数,在该函数里面完成对窗口的操作。
这样取窗口句柄就在你的工程里面。 通达信如何使用dll

   后缀为DLL的为动态库,需要将DLL文件拷贝到通达信所在的文件夹的plugin文件夹下。在选股器---》插件选股 中 使用。这个跟通达信普通的指标编写不太一样。 通达信怎么调用DLL文件做公式

   腾讯电脑管家的电脑诊所功能针对软件专区可以修复文件缺失问题,修复点为” 找不到找不到VC++ 组件,一键修复,即可完成修复。
打开腾讯电脑管家——电脑诊所——软件问题——丢失DLL文件 通达信的调用dll函数编号7手机怎么建立的

   这样就能实现在IE上直接对POS机进行操作。而我要封装的这个动态库,厂家只提供了一个单的动态库和一百多字的说明,也就是说明一下动态库中有机个函数和其对应的参数。也就是厂家就连动态库对应的头文件也没有提供。接到这个任务后,我第一想到的是用VC的ATL来实现它。你问我为什么要用ATL也不用别的,如CB、Delphi之类的。我只能说我觉得写ActiveX还是用VC好;况且还要对硬件进行操作,这样一来当然是用VC了。别说我没提醒你,用CB、Delphi之类的有可能会出现预想不到的惊奇。。。。现在让我带着进入正题吧!先用ATLCOMAppWizard生成一个名叫PosActiveX的工程,生成时系统会问你是生成DLL还是EXE。当然是DLL的了。生成好后加入一个接口叫IPosCtrl,当然了要在Web上用,所以生成的接口一定是要小所以选择LiteControl的。你可别问我怎么加入,如果这都不会,那我写的这文章是不适合你看的。所以等你学会加入接口后再看。接口加好后,我就要实现方法了。首先用接口一般都要对其进行初始化。所以加入一个叫Init(shortnCom)的接口方法,该方法完成加载DLL和DLL中的功能函数,还有就是打开对POS机进行操作的COM口;还有一个是修改POS机的时间的方法叫ModifyPosDT(BSTRbstrDT);还有个是清空POS机中数据的方法--EmptyPos()。最后,当你不想用时就要关闭所打开的COM口--Quit()。在生成接口IPosCtrl时同时会生成CPosCtrl类。我有个习惯,就是我一般是把实现方法都写在类中,而接口只时输出该类中你想输出的方法。所以在类中我就写了以下几个方法:InitDll()----加载DLL库和其中的功能函数;ExitDll()----卸载DLL库,用完后不卸载是在占用内存。所以它是少不了的。SetPosDateTime(char*pchDT)---设置POS机的时间。ClearPos()----清空POS机中的记录。在类中我就写了这几方法了。在说一下我要输出的接口方法有:Iint(shortnCom)----初化接口,为调用做准备。Quit()----退出程序时,调用它退出接口调用。ModifyPosDT(BSTRbstrDT)----设置POS机时间。EmptyPos()----清空POS机数据。完了就这么多。现在来看看我的源程序吧!//PosCtrl.cpp:ImplementationofCPosCtrl#includestdafx.h#includePosActiveX.h#includePosCtrl.h///////////////////////////////////////////////////////////////////////////////CPosCtrl///////////////////////////////////////////////////////////////////////////////Police.dll所用到的常量定义/////////////////////////////////////////////////////////////////////////////#defineCom_UpRecord1#defineCom_UpPoliceLen2#defineCom_UpSimpleDataLen3#defineCom_UpSimplePunishLen4#defineCom_UpGeneralDataLen5#defineCom_UpGeneralPunishLen6#defineCom_EmptyPolice7#defineCom_EmptySimpleData8#defineCom_EmptySimplePunish9#defineCom_EmptyGeneralData10#defineCom_EmptyGeneralPunish11#defineCom_DownRecord0x80#defineCom_DownStreetCodeLen0x81#defineCom_DownBlackListLen0x82#defineCom_DownPeccancySimpleLen0x83#defineCom_DownPeccancyGeneralLen0x84#defineCom_DownDateTime0x85#defineCom_Exit0x86#defineCom_Init0x87#defineErr_UpSimpleDataLen0#defineErr_UpSimplePunishLen1#defineErr_UpGeneralDataLen2#defineErr_UpGeneralPunishLen3#defineErr_UpPoliceLen4#defineErr_UpRecord5#defineErr_DownStreetCodeLen6#defineErr_DownSimplePeccancyCodeLen7#defineErr_DownGeneralPeccancyCodeLen8#defineErr_DownBlackList9#defineErr_DownDateTime10#defineErr_EmptyData11#defineErr_GetCode12;#defineConst_Terminator0x20/////////////////////////////////////////////////////////////////////////////////#pragmadata_seg(mydata)staticHINSTANCEDLLInst=NULL;//动态库句柄#pragmadata_seg()//HANDLEhCom;//COM串口句柄///////////////////////////////////////////////////////////////////////////////////POLICE.DLL动态库函数功能定义/////////////////////////////////////////////////////////////////////////////////HANDLE(__stdcall*Init_comm)(LPSTRstr);//初始化通信口BYTE(__stdcall*Exit)(HANDLEhCom);//关闭通信口BYTE(__stdcall*Protocol)(HANDLEhCom,BYTEcmd,BYTElen,BYTE*_dt,BYTE*prlen,BYTE*prdt);//通信协议BYTE(__stdcall*Pipe_control)(HANDLEhCom,BYTEmode);//多路控制typedefBYTE(__stdcall*Dev_escape)(HANDLEhCom);//断开多路控制///////////////////////////////////////////////////////////////////////////////CPosCtrl//----------------------------------------------------------------------------////功能:加载POLICE.DLL动态库和其中的一些功能函数//输入/输出参数:无//版本:1.0//修改://----------------------------------------------------------------------------//voidCPosCtrl::InitDll(){DLLInst=LoadLibrary(police.dll);if(DLLInst!=NULL){Init_comm=(HANDLE(__stdcall*)(LPSTR))GetProcAddress(DLLInst,Init_comm);Exit=(BYTE(__stdcall*)(HANDLE))(GetProcAddress(DLLInst,Exit));Protocol=(BYTE(__stdcall*)(HANDLE,BYTE,BYTE,BYTE*_dt,BYTE*prlen,BYTE*prdt))(GetProcAddress(DLLInst,Protocol));Pipe_control=(BYTE(__stdcall*)(HANDLE,BYTE))(GetProcAddress(DLLInst,Pipe_control));Dev_escape=(BYTE(__stdcall*)(HANDLE))(GetProcAddress(DLLInst,Dev_escape));}else{::MessageBox(NULL,加载动态库失败!,提示信息,MB_OKMB_ICONINFORMATION);exit(0);}}//----------------------------------------------------------------------------////功能:释放动态库//输入/输出参数:无//版本:1.0//修改://----------------------------------------------------------------------------//voidCPosCtrl::ExitDll(){if(DLLInst!=NULL)FreeLibrary(DLLInst);}//----------------------------------------------------------------------------////功能:控件接口方法,对外提供关闭串口,释放动态库。//输入/输出参数:无//版本:1.0//修改://----------------------------------------------------------------------------//STDMETHODIMPCPosCtrl::Quit(){//TODO:Addyourimplementationcodehere(*Exit)(hCom);ExitDll();::MessageBox(NULL,关闭COM口成功,提示信息,MB_OKMB_ICONINFORMATION);returnS_OK;}STDMETHODIMPCPosCtrl::get_ComNo(short*pVal){//TODO:Addyourimplementationcodehere*pVal=m_ComNo;returnS_OK;}STDMETHODIMPCPosCtrl::put_ComNo(shortnewVal){//TODO:Addyourimplementationcodeherem_ComNo=newVal;returnS_OK;}//----------------------------------------------------------------------------////功能:提供初化动态库的对外接口,并实现打开口串口的功能。//输入/输出参数:11--要打开的串口号。 通达信的调用dll函数编号7手机怎么建立的

   这样就能实现在IE上直接对POS机进行操作。而我要封装的这个动态库,厂家只提供了一个单的动态库和一百多字的说明,也就是说明一下动态库中有机个函数和其对应的参数。也就是厂家就连动态库对应的头文件也没有提供。接到这个任务后,我第一想到的是用VC的ATL来实现它。你问我为什么要用ATL也不用别的,如CB、Delphi之类的。我只能说我觉得写ActiveX还是用VC好;况且还要对硬件进行操作,这样一来当然是用VC了。别说我没提醒你,用CB、Delphi之类的有可能会出现预想不到的惊奇。。。。现在让我带着进入正题吧!先用ATLCOMAppWizard生成一个名叫PosActiveX的工程,生成时系统会问你是生成DLL还是EXE。当然是DLL的了。生成好后加入一个接口叫IPosCtrl,当然了要在Web上用,所以生成的接口一定是要小所以选择LiteControl的。你可别问我怎么加入,如果这都不会,那我写的这文章是不适合你看的。所以等你学会加入接口后再看。接口加好后,我就要实现方法了。首先用接口一般都要对其进行初始化。所以加入一个叫Init(shortnCom)的接口方法,该方法完成加载DLL和DLL中的功能函数,还有就是打开对POS机进行操作的COM口;还有一个是修改POS机的时间的方法叫ModifyPosDT(BSTRbstrDT);还有个是清空POS机中数据的方法--EmptyPos()。最后,当你不想用时就要关闭所打开的COM口--Quit()。在生成接口IPosCtrl时同时会生成CPosCtrl类。我有个习惯,就是我一般是把实现方法都写在类中,而接口只时输出该类中你想输出的方法。所以在类中我就写了以下几个方法:InitDll()----加载DLL库和其中的功能函数;ExitDll()----卸载DLL库,用完后不卸载是在占用内存。所以它是少不了的。SetPosDateTime(char*pchDT)---设置POS机的时间。ClearPos()----清空POS机中的记录。在类中我就写了这几方法了。在说一下我要输出的接口方法有:Iint(shortnCom)----初化接口,为调用做准备。Quit()----退出程序时,调用它退出接口调用。ModifyPosDT(BSTRbstrDT)----设置POS机时间。EmptyPos()----清空POS机数据。完了就这么多。现在来看看我的源程序吧!//PosCtrl.cpp:ImplementationofCPosCtrl#includestdafx.h#includePosActiveX.h#includePosCtrl.h///////////////////////////////////////////////////////////////////////////////CPosCtrl///////////////////////////////////////////////////////////////////////////////Police.dll所用到的常量定义/////////////////////////////////////////////////////////////////////////////#defineCom_UpRecord1#defineCom_UpPoliceLen2#defineCom_UpSimpleDataLen3#defineCom_UpSimplePunishLen4#defineCom_UpGeneralDataLen5#defineCom_UpGeneralPunishLen6#defineCom_EmptyPolice7#defineCom_EmptySimpleData8#defineCom_EmptySimplePunish9#defineCom_EmptyGeneralData10#defineCom_EmptyGeneralPunish11#defineCom_DownRecord0x80#defineCom_DownStreetCodeLen0x81#defineCom_DownBlackListLen0x82#defineCom_DownPeccancySimpleLen0x83#defineCom_DownPeccancyGeneralLen0x84#defineCom_DownDateTime0x85#defineCom_Exit0x86#defineCom_Init0x87#defineErr_UpSimpleDataLen0#defineErr_UpSimplePunishLen1#defineErr_UpGeneralDataLen2#defineErr_UpGeneralPunishLen3#defineErr_UpPoliceLen4#defineErr_UpRecord5#defineErr_DownStreetCodeLen6#defineErr_DownSimplePeccancyCodeLen7#defineErr_DownGeneralPeccancyCodeLen8#defineErr_DownBlackList9#defineErr_DownDateTime10#defineErr_EmptyData11#defineErr_GetCode12;#defineConst_Terminator0x20/////////////////////////////////////////////////////////////////////////////////#pragmadata_seg(mydata)staticHINSTANCEDLLInst=NULL;//动态库句柄#pragmadata_seg()//HANDLEhCom;//COM串口句柄///////////////////////////////////////////////////////////////////////////////////POLICE.DLL动态库函数功能定义/////////////////////////////////////////////////////////////////////////////////HANDLE(__stdcall*Init_comm)(LPSTRstr);//初始化通信口BYTE(__stdcall*Exit)(HANDLEhCom);//关闭通信口BYTE(__stdcall*Protocol)(HANDLEhCom,BYTEcmd,BYTElen,BYTE*_dt,BYTE*prlen,BYTE*prdt);//通信协议BYTE(__stdcall*Pipe_control)(HANDLEhCom,BYTEmode);//多路控制typedefBYTE(__stdcall*Dev_escape)(HANDLEhCom);//断开多路控制///////////////////////////////////////////////////////////////////////////////CPosCtrl//----------------------------------------------------------------------------////功能:加载POLICE.DLL动态库和其中的一些功能函数//输入/输出参数:无//版本:1.0//修改://----------------------------------------------------------------------------//voidCPosCtrl::InitDll(){DLLInst=LoadLibrary(police.dll);if(DLLInst!=NULL){Init_comm=(HANDLE(__stdcall*)(LPSTR))GetProcAddress(DLLInst,Init_comm);Exit=(BYTE(__stdcall*)(HANDLE))(GetProcAddress(DLLInst,Exit));Protocol=(BYTE(__stdcall*)(HANDLE,BYTE,BYTE,BYTE*_dt,BYTE*prlen,BYTE*prdt))(GetProcAddress(DLLInst,Protocol));Pipe_control=(BYTE(__stdcall*)(HANDLE,BYTE))(GetProcAddress(DLLInst,Pipe_control));Dev_escape=(BYTE(__stdcall*)(HANDLE))(GetProcAddress(DLLInst,Dev_escape));}else{::MessageBox(NULL,加载动态库失败!,提示信息,MB_OKMB_ICONINFORMATION);exit(0);}}//----------------------------------------------------------------------------////功能:释放动态库//输入/输出参数:无//版本:1.0//修改://----------------------------------------------------------------------------//voidCPosCtrl::ExitDll(){if(DLLInst!=NULL)FreeLibrary(DLLInst);}//----------------------------------------------------------------------------////功能:控件接口方法,对外提供关闭串口,释放动态库。//输入/输出参数:无//版本:1.0//修改://----------------------------------------------------------------------------//STDMETHODIMPCPosCtrl::Quit(){//TODO:Addyourimplementationcodehere(*Exit)(hCom);ExitDll();::MessageBox(NULL,关闭COM口成功,提示信息,MB_OKMB_ICONINFORMATION);returnS_OK;}STDMETHODIMPCPosCtrl::get_ComNo(short*pVal){//TODO:Addyourimplementationcodehere*pVal=m_ComNo;returnS_OK;}STDMETHODIMPCPosCtrl::put_ComNo(shortnewVal){//TODO:Addyourimplementationcodeherem_ComNo=newVal;returnS_OK;}//----------------------------------------------------------------------------////功能:提供初化动态库的对外接口,并实现打开口串口的功能。//输入/输出参数:11--要打开的串口号。 通达信股票交易软件的ZIP函数算法是什么,怎样用?

   没用过,也不认为这种公式有用:)


上一篇:海正股价
下一篇:603115基金