MFC弹出对话框之前先进行条件判断以决定是否弹出对话框

    最近帮客户做了一个MFC小工具,发给客户使用之后,我就思考商业软件在运行前检测电脑是否可以运行该软件,有用加密狗的也有用注册表的方式.如果要我做这样的一个软件,我该怎么实现软件运行前检测呢,于是我想到可以用电脑全名检测的方法,于是查找资料找到了MSDN上获取电脑名的两个函数:GetComputerNameEx与GetComputerName.函数理解的并不是很好,具体使用不在此处介绍,此处仅介绍与我想法相关的功能,如里了解函数功能,可详细参考MSDN文档与文档中相关的例程.

    用VS2008新建一个命名为TEST的工程,查阅相关资料需要找到启动对话框函数BOOL CTESTApp::InitInstance(),MFC的对话框程序就是在此处启动的.找到如下代码:

    CDemoDlg dlg;
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with Cancel
    }

    在INT_PTR nResponse = dlg.DoModal();之前添加判断条件,如果获取的计算机名与给定的字符一致则启动对话框,如果不一致则退出,如此可解决此问题.尝试添加以下代码:

    TCHAR buffer[256]=TEXT("");
    int cnf=0,result;
    DWORD dwSize=sizeof(buffer);
    CString szMsg;
    if(!GetComputerNameEx((COMPUTER_NAME_FORMAT)ComputerNameNetBIOS,buffer,&dwSize))
    {
        szMsg.Format(TEXT("GetComputerNameEx failed(%d)\r\n"),GetLastError);
        AfxMessageBox(szMsg);
        return FALSE;
    }
    result = wcscmp(buffer,TEXT("QCWY-PC"));
    if(result == 0)
    {
        AfxMessageBox(TEXT("软件登录中,请稍侯......"));
    }
    else
    {
        AfxMessageBox(TEXT("非法计算机,不能登录软件"));
        return FALSE;
    }

    测试可以实现所预期的效果.同样的,此处使用加密狗的思路应与此相同.发现MSDN真有用,不懂的问题还是多参照MSDN,上面讲的足够详细.

    由此可以实现自想要的功能了,真开心!!!!!


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值