转自:http://zhupengyue.blog.51cto.com/227198/714178
写了一个MFC的程序,要求如果是命令行启动传递参数时直接执行并且不显示图形界面,如果双击执行,则需要显示图形界面。
这个程序是调用http://116.213.72.20/sms_bluewings/sms_bluewingsinfo.asmx接口来发送短信(短信报警。未处理中文问题,所以只能发送非中文字符。),如果需要的可以留言。
在程序的InitInstance()中添加以下内容:
- argc=0;
- LPWSTR *argv=::CommandLineToArgvW(::GetCommandLineW(),&argc);
- if (argc==5)
- {
- arg_Username=argv[1];
- arg_Password=argv[2];
- arg_Phone=argv[3];
- arg_Message=argv[4];
判断参数是否符合要求,符合则
- CSmsDlg dlg;
- m_pMainWnd = &dlg;
- if (argc==5)
- {
- dlg.SendSms(arg_Username,arg_Password,arg_Phone,arg_Message);
- ::PostQuitMessage(1);
- }
- else
- {
- int 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
- }
- }
这样如果是带参数启动,则执行sendsms方法后退出程序,否则启动图形界面。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1UTNxIDNwgTMvwVMxETMwIzLcRnbl1GajFGd0F2Lc12bj5yb0NWM14SMn1Wavw1LcpDc0RHaiojIsJye.png)