📄 autonetfdldlg.cpp
字号:
// AutoNetFdlDlg.cpp : implementation file
#include "stdafx.h"
#include "AutoNetFdl.h"
#include "AutoNetFdlDlg.h"
#include "FrmMain.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CAutoNetFdlDlg::CAutoNetFdlDlg(CWnd* pParent)
: CDialog(CAutoNetFdlDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAutoNetFdlDlg)
m_ServPort = 0;
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAutoNetFdlDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAutoNetFdlDlg)
DDX_Control(pDX, IDC_ADDR_COMBO, m_wndIPAddress);
DDX_Text(pDX, IDC_SERVPORT_EDIT, m_ServPort);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAutoNetFdlDlg, CDialog)
//{{AFX_MSG_MAP(CAutoNetFdlDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_READCARD, OnReadcard)
ON_BN_CLICKED(IDC_CANCEL, OnCancel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CAutoNetFdlDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
//初始化控件信息
InitControl();
return TRUE;
}
static const char *ComboxPort[5] = {
"COM1",
"COM2",
"COM3",
"COM4",
"USB"
};
//门锁类型信息
static const char *ComboxDoorType[5] = {
"TM",
"IC",
"RF56",
"RF57",
"RF50"
};
//门锁类型信息
static const char *ComboxDoorTypeEn[5] = {
"TM Card Door Lock",
"IC Card Door Lock",
"RF56 Card Door Lock",
"RF57 Card Door Lock",
"RF50 Card Door Lock"
};
void CAutoNetFdlDlg::InitControl()
{
//初始化多国语言界面
char szCaption[200];
CString ExtractFilePath = g_DefaultLangDir+"FrmLogIn.INI";
m_InfoFilePath = g_DefaultLangDir+"AutoFdl.ini";
if (g_IsFindLangDir)
{
GetPrivateProfileString ("Frm","FrmLogIn", NULL, szCaption, 200, ExtractFilePath);
this->SetWindowText(szCaption);
GetPrivateProfileString ("MEM","MemoInfo", NULL, szCaption, 200, ExtractFilePath);
((CStatic*)GetDlgItem(IDC_HELP_STATIC))->SetWindowText(szCaption);
GetPrivateProfileString ("LAB","LabFdlProt", NULL, szCaption, 200, ExtractFilePath);
((CStatic*)GetDlgItem(IDC_ADDR_STATIC))->SetWindowText(szCaption);
GetPrivateProfileString ("LAB","LabReadProt", NULL, szCaption, 200, ExtractFilePath);
((CStatic*)GetDlgItem(IDC_PORT_STATIC))->SetWindowText(szCaption);
GetPrivateProfileString ("LAB","LabDoorType", NULL, szCaption, 200, ExtractFilePath);
((CStatic*)GetDlgItem(IDC_DOORTYPE_STATIC))->SetWindowText(szCaption);
GetPrivateProfileString ("LAB","LabFdlKc", NULL, szCaption, 200, ExtractFilePath);
((CStatic*)GetDlgItem(IDC_FDLKC_STATIC))->SetWindowText(szCaption);
GetPrivateProfileString ("LAB","LabServerPort", NULL, szCaption, 200, ExtractFilePath);
((CStatic*)GetDlgItem(IDC_SERVPORT_STATIC))->SetWindowText(szCaption);
GetPrivateProfileString ("BUT","ButOk", NULL, szCaption, 200, ExtractFilePath);
((CButton*)GetDlgItem(IDC_READCARD))->SetWindowText(szCaption);
GetPrivateProfileString ("BUT","ButCan", NULL, szCaption, 200, ExtractFilePath);
((CButton*)GetDlgItem(IDC_CANCEL))->SetWindowText(szCaption);
}
//初始化与多国语言无关的部分界面
for (int i = 0 ; i < 5 ; ++i )
{
((CComboBox *) GetDlgItem (IDC_PORT_COMBO))->AddString((LPCSTR) ComboxPort[i]);
((CComboBox *) GetDlgItem (IDC_DOORTYPE_COMBO))->AddString((LPCSTR) ComboxDoorType[i]);
}
for (i=1;i<=80;i++)
{
CString str;
str.Format("%d",i);
((CComboBox *) GetDlgItem (IDC_FDLKC_COMBO))->AddString(str);
}
char appPath[MAX_PATH];
//取得应用程序当前路径
GetModuleFileName(NULL,appPath,MAX_PATH);
ConfigureFile.Format("%s",appPath);
int pos=ConfigureFile.ReverseFind('\\');
ConfigureFile=ConfigureFile.Left(pos);
ConfigureFile+="\\zhao.dll";
//是否已初始化过
IsInit=GetPrivateProfileInt("IsIni","AutoFdl",0,ConfigureFile);
//读取门锁类型
DoorType=GetPrivateProfileInt("IsIni","DoorType",1,ConfigureFile);
//读取发卡机端口
Port=GetPrivateProfileInt("IsIni","Port",5,ConfigureFile);
//读取FKC参数值
FKC=GetPrivateProfileInt("IsIni","FKC",1,ConfigureFile);
//读取Fidelio服务器IP地址
GetPrivateProfileString ("IsIni","FidelioIP", "168.192.0.1", szCaption, 200, ConfigureFile);
m_FidelioIP.Format("%s",szCaption);
IPStrToByteArry(m_FidelioIP);
//读取Fidelio服务器端口
m_ServPort=GetPrivateProfileInt("IsIni","FidelioPort",5000,ConfigureFile);
CString KeyName="StrAcc";
CString szDoorType;
szDoorType.Format("%d",DoorType);
KeyName=KeyName+szDoorType;
//读取StrAcc初始化参数
GetPrivateProfileString ("IsIni",KeyName, NULL, szCaption, 200, ConfigureFile);
StrAcc.Format("%s",szCaption);
//写入zhao.dll配置文件中
WritePrivateProfileString("IsIni","IsLogin","0",ConfigureFile);
((CIPAddressCtrl *)GetDlgItem(IDC_ADDR_COMBO))->SetAddress(m_nField[0],m_nField[1],m_nField[2],m_nField[3]);
((CComboBox *)GetDlgItem(IDC_PORT_COMBO))->SetCurSel(Port-1);
((CComboBox *)GetDlgItem(IDC_DOORTYPE_COMBO))->SetCurSel(DoorType-1);
((CComboBox *)GetDlgItem(IDC_FDLKC_COMBO))->SetCurSel(FKC-1);
((CComboBox *)GetDlgItem(IDC_DOORTYPE_COMBO))->EnableWindow(IsInit?0:1);
UpdateData(FALSE);
}
void CAutoNetFdlDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CAutoNetFdlDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CAutoNetFdlDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CAutoNetFdlDlg::OnReadcard()
{
UpdateData(TRUE);
short Buf8[8]={0,0,0,0,0,0,0,0};
CString Str;
//设卡类型
typedef short (__stdcall *pSelectDoorLockType)(short);
pSelectDoorLockType pFuncSelectDoorLockType= (pSelectDoorLockType)GetProcAddress (hInstCard,"SelectDoorLockType");
m_StValue =pFuncSelectDoorLockType(((CComboBox*)GetDlgItem (IDC_DOORTYPE_COMBO))->GetCurSel()+1);
if(m_StValue!=1)
{
MessageBox(Translate(m_InfoFilePath,"设置门锁类型错误!"),
Translate(m_InfoFilePath,"提示信息!"),MB_ICONASTERISK);
return ;
}
//设端口号
typedef short (__stdcall *pMakeCardOpenPort)(short);
pMakeCardOpenPort pFuncMakeCardOpenPort= (pMakeCardOpenPort)GetProcAddress (hInstCard,"MakeCardOpenPort");
Port=((CComboBox*)GetDlgItem (IDC_PORT_COMBO))->GetCurSel()+1;
m_StValue = pFuncMakeCardOpenPort(Port); //设端口号
if(m_StValue !=1)
{
MessageBox(Translate(m_InfoFilePath,"打开读卡器端口错误!"),
Translate(m_InfoFilePath,"提示信息!"),MB_ICONASTERISK);
return ;
}
//读取授权参数
typedef short (__stdcall *pReadSystemPas_EX)(short *);
pReadSystemPas_EX pFuncReadSystemPas_EX= (pReadSystemPas_EX)GetProcAddress (hInstCard,"ReadSystemPas_EX");
m_StValue = pFuncReadSystemPas_EX(Buf8);
//关闭端口
typedef short (__stdcall *pMakeCardClosePort)(short);
pMakeCardClosePort pFuncMakeCardClosePort= (pMakeCardClosePort)GetProcAddress (hInstCard,"MakeCardClosePort");
if(m_StValue!=1)
{
MessageBox(Translate(m_InfoFilePath,"读取授权参数错误!"),
Translate(m_InfoFilePath,"提示信息!"),MB_ICONASTERISK);
m_StValue = pFuncMakeCardClosePort(Port);
return;
}
m_StValue = pFuncMakeCardClosePort(Port);
//保存设置
((CIPAddressCtrl *)GetDlgItem(IDC_ADDR_COMBO))->GetAddress(m_nField[0],m_nField[1],m_nField[2],m_nField[3]);
Port=((CComboBox*)GetDlgItem (IDC_PORT_COMBO))->GetCurSel()+1;
DoorType=((CComboBox*)GetDlgItem (IDC_DOORTYPE_COMBO))->GetCurSel()+1;
FKC=((CComboBox*)GetDlgItem (IDC_FDLKC_COMBO))->GetCurSel()+1;
Str.Format("%d",Port);
WritePrivateProfileString("IsIni","Port",Str,ConfigureFile);
Str.Format("%d",FKC);
WritePrivateProfileString("IsIni","FKC",Str,ConfigureFile);
Str.Format("%d",m_ServPort);
WritePrivateProfileString("IsIni","FidelioPort",Str,ConfigureFile);
m_FidelioIP=ByteArryToIPStr(m_nField);
WritePrivateProfileString("IsIni","FidelioIP",m_FidelioIP,ConfigureFile);
Str="";
CString hexbuf;
for (int i=0;i<8;i++)
{
hexbuf.Format("%02X",Buf8[i]);
Str+=hexbuf;
}
if(IsInit)
{
if(Str==StrAcc)
WritePrivateProfileString("IsIni","IsLogin","1",ConfigureFile);
else
WritePrivateProfileString("IsIni","IsLogin","0",ConfigureFile);
}
else
{
WritePrivateProfileString("IsIni","AutoFdl","1",ConfigureFile);
WritePrivateProfileString("IsIni","IsLogin","1",ConfigureFile);
CString KeyName="StrAcc";
CString szDoorType;
szDoorType.Format("%d",DoorType);
KeyName=KeyName+szDoorType;
WritePrivateProfileString("IsIni",KeyName,Str,ConfigureFile);
Str.Format("%d",DoorType);
WritePrivateProfileString("IsIni","DoorType",Str,ConfigureFile);
char appPath[MAX_PATH];
//取得应用程序当前路径
GetModuleFileName(NULL,appPath,MAX_PATH);
CString szRegistPath;
szRegistPath.Format("%s",appPath);
LPBYTE lpRegistPath = CString_To_LPBYTE(szRegistPath);
HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
DWORD dwDisposition;
long lResult=RegCreateKeyEx(HKEY_LOCAL_MACHINE,
"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,
&hKEY,&dwDisposition);
//如果创建新键成功,设置新键键值数据
if (lResult==ERROR_SUCCESS)
{
::RegSetValueEx(hKEY, "HsyFdLServer", NULL, REG_SZ, lpRegistPath, 100);
::RegCloseKey(hKEY);
}
}
CDialog::OnOK();
CFrmMain FrmMainDlg;
g_pFrmMain = &FrmMainDlg;
FrmMainDlg.DoModal();
}
void CAutoNetFdlDlg::OnCancel()
{
CDialog::OnCancel();
}
LPBYTE CAutoNetFdlDlg::CString_To_LPBYTE(CString str)
{
LPBYTE lpb=new BYTE[str.GetLength()+1];
for(int i=0;i<str.GetLength();i++)
lpb[i]=str[i];
lpb[str.GetLength()]=0;
return lpb;
}
BOOL CAutoNetFdlDlg::IPStrToByteArry(CString str)
{
int i=0;
int j,z=0;
char SubArry[3];
int f=str.GetLength();
while (i<str.GetLength())
{
j=0;
memset(SubArry, 0,sizeof(SubArry));
while ((i<f)&&(str[i]!='.'))
{
SubArry[j]=str[i];
i++;
j++;
}
m_nField[z++]=(BYTE)atoi(SubArry);
i++;
}
return TRUE;
}
CString CAutoNetFdlDlg::ByteArryToIPStr(BYTE ByteArry[4])
{
CString IPstr="";
TCHAR buffer[10]="\0";
//进行IP地址转化
IPstr = _itoa(ByteArry[0],buffer,10);
IPstr += _T('.');
IPstr += _itoa(ByteArry[1],buffer,10);
IPstr += _T('.');
IPstr += _itoa(ByteArry[2],buffer,10);
IPstr += _T('.');
IPstr += _itoa(ByteArry[3],buffer,10);
return IPstr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -