MFC带参数启动程序
MFC 带参数启动一共可以通过两种方式实现:
1.写在 InitInstance() 函数中
2.写在 OnInitDialog() 函数中
InitInstance
在 InitInstance 中实现比较简单,获取一下执行的命令就可以了
//获取执行的命令行
CString strCmdline = AfxGetApp()->m_lpCmdLine;
//获取执行的命令行
LPWSTR lpCommandLen = GetCommandLine();
CString strMsg = lpCommandLen;
AfxMessageBox(strCmdline);
注意,这个获取出来的一般是:
"C:\Cshi\Csshi.exe -1 -2"
这种,所以需要自己截取一下。
OnInitDialog
在 OnInitDialog 函数中实现:
BOOL xxx::OnInitDialog()
{
CDialog::OnInitDialog();
LPWSTR *szArglist = NULL;
int nArgs = 0; //参数的数量
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if( NULL != szArglist)
{
for (int i = 0; i < nArgs; i++)
{
AfxMessageBox(szArglist[i]);
CString strCmd = szArglist[i];
if (strCmd == L"-1")
{
AfxMessageBox(L"1");
this->ShowWindow(SW_SHOWMINIMIZED); //不需要界面可以隐藏或最小化
}
else if (strCmd == L"-2")
{
AfxMessageBox(L"-2");
this->ShowWindow(SW_SHOWMINIMIZED);
}
}
}
//取得参数后,释放CommandLineToArgvW申请的空间
LocalFree(szArglist);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
注意,这个获取出来的一般是:
szArglist[0] == "C:\Cshi\Csshi.exe"
szArglist[1] == "-1"
szArglist[2] == "-2"
szArglist[0]一定是进程的路径,后面几个就是参数。 nArgs 是路径和参数的总个数。