| ²é¿´: 160 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
zsgllyľ³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
ÔÚActiveX¿Ø¼þÖÐÈçºÎ¶¯Ì¬µ÷ÓÃDLLº¯Êý
|
||
|
ÈÎÎñ£¬¾ÍÊǰѶÔPOS»ú²Ù×÷¹¦ÄÜ·â×°ÔÚActiveX¿Ø¼þÖУ¬ÔÚIEÖе÷Óá£ÕâÑù¾ÍÄÜʵÏÖÔÚIEÉÏÖ±½Ó¶ÔPOS»ú½øÐвÙ×÷¡£¶øÎÒÒª·â×°µÄÕâ¸ö¶¯Ì¬¿â£¬³§¼ÒÖ»ÌṩÁËÒ»¸öµ¥µÄ¶¯Ì¬¿âºÍÒ»°Ù¶à×ÖµÄ˵Ã÷£¬Ò²¾ÍÊÇ˵Ã÷һ϶¯Ì¬¿âÖÐÓлú¸öº¯ÊýºÍÆä¶ÔÓ¦µÄ²ÎÊý¡£Ò²¾ÍÊdz§¼Ò¾ÍÁ¬¶¯Ì¬¿â¶ÔÓ¦µÄÍ·ÎļþҲûÓÐÌṩ¡£:-( ÕâÑùÒ²ÐУ¿£¡ ½Óµ½Õâ¸öÈÎÎñºó£¬ÎÒµÚÒ»Ïëµ½µÄÊÇÓÃVCµÄATLÀ´ÊµÏÖËü¡£ÄãÎÊÎÒΪʲôҪÓÃATLÒ²²»ÓñðµÄ£¬ÈçCB¡¢DelphiÖ®ÀàµÄ¡£ÎÒÖ»ÄÜ˵ÎÒ¾õµÃдActiveX»¹ÊÇÓÃVCºÃ£»¿öÇÒ»¹Òª¶ÔÓ²¼þ½øÐвÙ×÷£¬ÕâÑùÒ»À´µ±È»ÊÇÓÃVCÁË¡£±ð˵ÎÒûÌáÐÑÄ㣬ÓÃCB¡¢DelphiÖ®ÀàµÄÓпÉÄÜ»á³öÏÖÔ¤Ïë²»µ½µÄ¾ªÆæ...... ÏÖÔÚÈÃÎÒ´ø×ŽøÈëÕýÌâ°É£¡ÏÈÓÃATL COM AppWizardÉú³ÉÒ»¸öÃû½ÐPosActiveXµÄ¹¤³Ì£¬Éú³Éʱϵͳ»áÎÊÄãÊÇÉú³ÉDLL»¹ÊÇEXE¡£µ±È»ÊÇDLLµÄÁË¡£Éú³ÉºÃºó¼ÓÈëÒ»¸ö½Ó¿Ú½ÐIPosCtrl£¬µ±È»ÁËÒªÔÚWebÉÏÓã¬ËùÒÔÉú³ÉµÄ½Ó¿ÚÒ»¶¨ÊÇҪСËùÒÔÑ¡ÔñLite ControlµÄ¡£Äã¿É±ðÎÊÎÒÔõô¼ÓÈ룬Èç¹ûÕâ¶¼²»»á£¬ÄÇÎÒдµÄÕâÎÄÕÂÊDz»ÊʺÏÄã¿´µÄ¡£ËùÒÔµÈÄãѧ»á¼ÓÈë½Ó¿ÚºóÔÙ¿´¡£½Ó¿Ú¼ÓºÃºó£¬ÎÒ¾ÍҪʵÏÖ·½·¨ÁË¡£Ê×ÏÈÓýӿÚÒ»°ã¶¼Òª¶ÔÆä½øÐгõʼ»¯¡£ËùÒÔ¼ÓÈëÒ»¸ö½ÐInit(short nCom)µÄ½Ó¿Ú·½·¨£¬¸Ã·½·¨Íê³É¼ÓÔØDLLºÍDLLÖеŦÄܺ¯Êý,»¹ÓоÍÊÇ´ò¿ª¶ÔPOS»ú½øÐвÙ×÷µÄCOM¿Ú£»»¹ÓÐÒ»¸öÊÇÐÞ¸ÄPOS»úµÄʱ¼äµÄ·½·¨½ÐModifyPosDT(BSTR bstrDT)£»»¹ÓиöÊÇÇå¿ÕPOS»úÖÐÊý¾ÝµÄ·½·¨--EmptyPos()¡£×îºó£¬µ±Äã²»ÏëÓÃʱ¾ÍÒª¹Ø±ÕËù´ò¿ªµÄCOM¿Ú--Quit()¡£ÔÚÉú³É½Ó¿ÚIPosCtrlʱͬʱ»áÉú³ÉCPosCtrlÀà¡£ÎÒÓиöϰ¹ß£¬¾ÍÊÇÎÒÒ»°ãÊǰÑʵÏÖ·½·¨¶¼Ð´ÔÚÀàÖУ¬¶ø½Ó¿ÚֻʱÊä³ö¸ÃÀàÖÐÄãÏëÊä³öµÄ·½·¨¡£ËùÒÔÔÚÀàÖÐÎÒ¾ÍдÁËÒÔϼ¸¸ö·½·¨£º InitDll()----¼ÓÔØDLL¿âºÍÆäÖеŦÄܺ¯Êý£» ExitDll()----Ð¶ÔØDLL¿â£¬ÓÃÍêºó²»Ð¶ÔØÊÇÔÚÕ¼ÓÃÄÚ´æ¡£ËùÒÔËüÊÇÉÙ²»Á˵ġ£ SetPosDateTime(char * pchDT)---ÉèÖÃPOS»úµÄʱ¼ä¡£ ClearPos()----Çå¿ÕPOS»úÖеļǼ¡£ ÔÚÀàÖÐÎÒ¾ÍдÁËÕ⼸¸ö·½·¨¡£ ÔÚ˵һÏÂÎÒÒªÊä³öµÄ½Ó¿Ú·½·¨ÓУº Init(short nCom)----³õ»¯½Ó¿Ú£¬Îªµ÷ÓÃ×ö×¼±¸¡£ Quit()----Í˳ö³ÌÐòʱ£¬µ÷ÓÃËüÍ˳ö½Ó¿Úµ÷ÓᣠModifyPosDT(BSTR bstrDT)----ÉèÖÃPOS»úʱ¼ä¡£ EmptyPos()----Çå¿ÕPOS»úÊý¾Ý¡£ ÍêÁ˾ÍÕâô¶à¡£ ÏÖÔÚÀ´¿´¿´ÎÒµÄÔ´³ÌÐò°É£¡ // PosCtrl.cpp : Implementation of CPosCtrl #include "stdafx.h" #include "PosActiveX.h" #include "PosCtrl.h" //-------------------------------------------------------- // Police.dllËùÓõ½µÄ³£Á¿¶¨Òå //-------------------------------------------------------- #define Com_UpRecord 1 #define Com_UpPoliceLen 2 #define Com_UpSimpleDataLen 3 #define Com_UpSimplePunishLen 4 #define Com_UpGeneralDataLen 5 #define Com_UpGeneralPunishLen 6 #define Com_EmptyPolice 7 #define Com_EmptySimpleData 8 #define Com_EmptySimplePunish 9 #define Com_EmptyGeneralData 10 #define Com_EmptyGeneralPunish 11 #define Com_DownRecord 0x80 #define Com_DownStreetCodeLen 0x81 #define Com_DownBlackListLen 0x82 #define Com_DownPeccancySimpleLen 0x83 #define Com_DownPeccancyGeneralLen 0x84 #define Com_DownDateTime 0x85 #define Com_Exit 0x86 #define Com_Init 0x87 #define Err_UpSimpleDataLen 0 #define Err_UpSimplePunishLen 1 #define Err_UpGeneralDataLen 2 #define Err_UpGeneralPunishLen 3 #define Err_UpPoliceLen 4 #define Err_UpRecord 5 #define Err_DownStreetCodeLen 6 #define Err_DownSimplePeccancyCodeLen 7 #define Err_DownGeneralPeccancyCodeLen 8 #define Err_DownBlackList 9 #define Err_DownDateTime 10 #define Err_EmptyData 11 #define Err_GetCode 12; #define Const_Terminator 0x20 #pragma data_seg("mydata" static HINSTANCE DLLInst = NULL; //¶¯Ì¬¿â¾ä±ú #pragma data_seg() // HANDLE hCom; //COM´®¿Ú¾ä±ú //------------------------------------------------------ //POLICE.DLL¶¯Ì¬¿âº¯Êý¹¦Äܶ¨Òå //------------------------------------------------------ HANDLE (__stdcall *Init_comm)(LPSTR str);//³õʼ»¯Í¨ÐÅ¿Ú BYTE (__stdcall *Exit)(HANDLE hCom);//¹Ø±ÕͨÐÅ¿Ú BYTE (__stdcall *Protocol)(HANDLE hCom,BYTE cmd,BYTE len,BYTE *_dt,BYTE *prlen,BYTE *prdt);//ͨÐÅÐÒé BYTE (__stdcall *Pipe_control)(HANDLE hCom,BYTE mode);//¶à·¿ØÖÆtypedef BYTE (__stdcall *Dev_escape)(HANDLE hCom);//¶Ï¿ª¶à·¿ØÖÆ //----------------------------------------------------------------------------// // ¹¦ÄÜ£º¼ÓÔØPolice.dll¶¯Ì¬¿âºÍÆäÖеÄһЩ¹¦Äܺ¯Êý // ÊäÈë/Êä³ö²ÎÊý£ºÎÞ // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// void CPosCtrl::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_OK | MB_ICONINFORMATION); exit(0); } } //----------------------------------------------------------------------------// // ¹¦ÄÜ£ºÊͷŶ¯Ì¬¿â // ÊäÈë/Êä³ö²ÎÊý£ºÎÞ // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// void CPosCtrl::ExitDll() { if(DLLInst!=NULL) FreeLibrary(DLLInst); } //----------------------------------------------------------------------------// // ¹¦ÄÜ£º¿Ø¼þ½Ó¿Ú·½·¨£¬¶ÔÍâÌṩ¹Ø±Õ´®¿Ú£¬ÊͷŶ¯Ì¬¿â¡£ // ÊäÈë/Êä³ö²ÎÊý£ºÎÞ // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// STDMETHODIMP CPosCtrl::Quit() { // TODO: Add your implementation code here (*Exit)(hCom); ExitDll(); ::MessageBox(NULL,"¹Ø±ÕCOM¿Ú³É¹¦","ÌáʾÐÅÏ¢",MB_OK | MB_ICONINFORMATION); return S_OK; } STDMETHODIMP CPosCtrl::get_ComNo(short *pVal) { // TODO: Add your implementation code here *pVal = m_ComNo; return S_OK; } STDMETHODIMP CPosCtrl::put_ComNo(short newVal) { // TODO: Add your implementation code here m_ComNo = newVal; return S_OK; } //----------------------------------------------------------------------------// // ¹¦ÄÜ£ºÌṩ³õ»¯¶¯Ì¬¿âµÄ¶ÔÍâ½Ó¿Ú£¬²¢ÊµÏÖ´ò¿ª¿Ú´®¿ÚµÄ¹¦ÄÜ¡£ // ÊäÈë/Êä³ö²ÎÊý£º11--Òª´ò¿ªµÄ´®¿ÚºÅ¡£ // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// STDMETHODIMP CPosCtrl::Init(short nComNo) { // TODO: Add your implementation code here InitDll(); char str[20] = ""; sprintf(str,"COM%d",nComNo); hCom = (*Init_comm)((LPSTR)str); sprintf(str,"%d",hCom); char temp[255] = ""; strcpy(temp,"´ò¿ªµÄ¶Ë¿ÚΪCOM1£¬¾ä±úΪ£º" ; strcat(temp,str); ::MessageBox(NULL,temp,"ÌáʾÐÅÏ¢",MB_OK | MB_ICONINFORMATION); //TCHAR str[255]; //sprintf(str,"%d",hCom); //MessageBox(str,"Caption",MB_OK); return S_OK; } //----------------------------------------------------------------------------// // ¹¦ÄÜ£ºÊµÏÖASCIIÂëµ½BCDÂëµÄת»»¹¦Äܺ¯Êý // ÊäÈë/Êä³ö²ÎÊý£º11-Ïëת»»µÄASCIIÂ룬22-·µ»ØµÄBCDÂ룬13-ASCIIÂëµÄ³¤¶È£¬14-·µ»ØµÄBCDÂ볤¶È // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// void CPosCtrl::ASCII_TO_BCD(char *cSource, char *cResult, int iSourceLen, int iResultLen) { int iBegin,i; iBegin=0; if(iSourceLen%2) { iBegin=1; cResult[0]=cSource[0]-''0''; } for (i=iBegin;i cResult=(cSource[2*i-iBegin]-''0'')*16+cSource[2*i-iBegin+1]-''0''; } //deprive off preData cResult[iResultLen]=''\0''; } //----------------------------------------------------------------------------// // ¹¦ÄÜ£ºÉèÖÃPOS»úʱ¼äº¯Êý¡£ // ÊäÈë/Êä³ö²ÎÊý£º11-ÏëÒªÉèÖõÄʱ¼ä // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// BOOL CPosCtrl::SetPosDateTime(char * pchDateTime) { int n=1; unsigned char cInput[257],cOutput[256]; BYTE byOutput,retVal; for(int i=0;i<8;i++) { (*Pipe_control)(hCom,n); //¶à·¿ØÖÆ //ÐÞ¸ÄPOS»úʱ¼ä { if(::MessageBox(NULL,"ÊÇ·ñÈ·¶¨ÐÞ¸ÄPOS»úʱ¼ä£¿","ÌáʾÐÅÏ¢",MB_YESNO)==IDNO) { return FALSE; } ASCII_TO_BCD(pchDateTime,(char *)cInput,10,5); retVal = (*Protocol)(hCom,Com_DownDateTime,5,cInput,&byOutput,cOutput); if (retVal) { ::MessageBox(NULL,"Ð޸ijɹ¦£¡","ÌáʾÐÅÏ¢",MB_OK | MB_ICONINFORMATION); } else { ::MessageBox(NULL,"Ð޸IJ»³É¹¦£¡","ÌáʾÐÅÏ¢",MB_OK | MB_ICONINFORMATION); } } n=n<<1 ; } (*Protocol)(hCom,0x86,5,cInput,&byOutput,cOutput); //ÏÂÔØ³É¹¦ (*Dev_escape)(hCom); //¹Ø±Õ¶à·¿ØÖÆ (*Pipe_control)(hCom,0); //¶à·¿ØÖƸ´Î» return TRUE; } //----------------------------------------------------------------------------// // ¹¦ÄÜ£º¶ÔÍâÌṩµÄÐÞ¸Äʱ¼äµÄ½Ó¿Ú·½·¨ // ÊäÈë/Êä³ö²ÎÊý£º11-ÏëÒªÉèÖõÄʱ¼ä // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// STDMETHODIMP CPosCtrl::ModifyPosDT(BSTR bstrDT) { // TODO: Add your implementation code here if(SetPosDateTime((char *)bstrDT)) { return S_OK; } { return S_FALSE; } } //----------------------------------------------------------------------------// // ¹¦ÄÜ£ºÊµÏÖÇå¿ÕPOS»úÄÚÊý¾ÝµÄº¯Êý¡£ // ÊäÈë/Êä³ö²ÎÊý£ºÎÞ // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// void CPosCtrl::ClearPos() { int n=1; unsigned char cInput[257],cOutput[256]; BYTE byOutput,retVal; for(int i=0;i<8;i++) { (*Pipe_control)(hCom,n); //¶à·¿ØÖÆ //Çå¿ÕPOS»úÄÚµÄÊý¾Ý if(::MessageBox(NULL,"ÊÇ·ñÒªÇå¿ÕPOS»úÄÚÊý¾Ý£¿","ÌáʾÐÅÏ¢",MB_YESNO | MB_ICONQUESTION)==IDNO) { return; } retVal = Protocol(hCom,7,1,cInput,&byOutput,cOutput); //ͨÐÅÐÒé if (!retVal) { retVal = Protocol(hCom,8,1,cInput,&byOutput,cOutput); if (!retVal) { retVal = Protocol(hCom,9,1,cInput,&byOutput,cOutput); if (!retVal) { retVal = Protocol(hCom,10,1,cInput,&byOutput,cOutput); if (!retVal) { retVal = Protocol(hCom,11,1,cInput,&byOutput,cOutput); } } } ::MessageBox(NULL,"POS»úÄÚÊý¾ÝÒѱ»Çå¿Õ£¡","ÌáʾÐÅÏ¢",MB_OK | MB_ICONINFORMATION); } n=n<<1 ; } (*Protocol)(hCom,0x86,5,cInput,&byOutput,cOutput); //ÏÂÔØ³É¹¦ (*Dev_escape)(hCom); //¹Ø±Õ¶à·¿ØÖÆ (*Pipe_control)(hCom,0); //¶à·¿ØÖƸ´Î» return; } //----------------------------------------------------------------------------// // ¹¦ÄÜ£º¶ÔÍâÌṩµÄÇå¿ÕPOS»úÄÚÊý¾ÝµÄ½Ó¿Ú·½·¨ // ÊäÈë/Êä³ö²ÎÊý£ºÎÞ // °æ±¾£º1.0 // Ð޸ģº //----------------------------------------------------------------------------// STDMETHODIMP CPosCtrl::EmptyPos() { // TODO: Add your implementation code here ClearPos(); return S_OK; } ÏÂÃæÊǵ÷ÓÃPosActiveX.DllµÄЧ¹û,µ÷ÓÃʱ,ÒªÏÈ¶ÔÆä½øÐÐ×¢²á,·ñÔòµ÷ÓÃÊDz»»á³É¹¦µÄ.×¢²áÊÇÔÚ"WindowsµÄ¿ªÊ¼²Ëµ¥Öе÷ÓÃ"ÔËÐÐ",ÔÚ"ÔËÐÐ"¶Ô»°¿òÖÐÊäÈë:regsvr32 C:\PosActiveX\PosActiveX.dll ×¢²á³É¹¦ºó¾Í¿É¶ÔCOM¿Ú½øÐвÙ×÷ÁË¡£»¹ÓÐÒ»µãÊÇÒªÌØ±ð×¢ÒâµÄ£¬±ØÐë°ÑÄãÒªÔÚActiveX¿Ø¼þµ÷ÓõÄDllÎļþ¿½±´µ½Windows\SystemĿ¼£¨¶ÔÓÚWin9xϵͳ),¶ÔÓÚNT,2000ϵͳ¾ÍÒª¿½±´µ½WINNT\System32Ŀ¼Ï²ÅÄÜÕýÈ·µÄÔËÐС£ ¿ª·¢»·¾³£ºWindows2000ºÍVC6 ²âÊÔ»·¾³£ºWindows200 [ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-29 at 07:41 ] |
» ²ÂÄãϲ»¶
085600 Ó¢Ò»Êý¶þ272Çóµ÷¼Á
ÒѾÓÐ12È˻ظ´
²ÄÁÏ284Çóµ÷¼Á£¬Ò»Ö¾Ô¸Ö£ÖÝ´óѧӢһÊý¶þר˶
ÒѾÓÐ12È˻ظ´
»¯Ñ§£¬²ÄÁÏ£¬»·¾³ÀàÇóµ÷¼Á
ÒѾÓÐ3È˻ظ´
²ÄÁÏ»¯¹¤µ÷¼Á
ÒѾÓÐ14È˻ظ´
½ÓÊÕµ÷¼Á
ÒѾÓÐ3È˻ظ´
»¯¹¤¾©Çø271Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
295Çóµ÷¼Á¡£Ò»Ö¾Ô¸±¨¿¼Ö£ÖÝ´óѧ»¯Ñ§¹¤ÒÕѧ˶£¬×Ü·Ö295·Ö
ÒѾÓÐ5È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ10È˻ظ´
0856»¯¹¤×¨Ë¶Çóµ÷¼Á
ÒѾÓÐ15È˻ظ´
303Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´














»Ø¸´´ËÂ¥