getcommandlinea_hookreadfile_getcommandline()

电脑杂谈  发布时间:2017-03-13 03:01:45  来源:网络整理

//注意:在BOOL CXXXApp::InitInstance()里面

//如果在CXXXDlg dlg; 之前加入,这个过程就是程序框架出来之前。

//简介 LPTSTR WINAPI GetCommandLine(void);

//没有参数,返回是一个LPTSTR类型的字符串指针,即命令行参数的字符串。

// LPWSTR *CommandLineToArgvW(

// LPCWSTR lpCmdLine,

// int *pNumArgs);

//定义int接收参数个数

int nArgs = 0;

//此项单独用来读取参数个数,用于一些需要先判断个数的程序

CommandLineToArgvW(GetCommandLineW(), &nArgs);

if (nArgs>=2)

{

//处理过程

}

//定义接受参数数据结构

LPWSTR *szArglist = NULL;

//获取参数 以及参数个数。

szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);

if( NULL != szArglist)

{

//szArglist就是保存参数的数组

//nArgs是数组中参数的个数

//数组的第一个元素表示程序本身,也就是szArglist[0],

//其他的元素依次是输入参数

}

//取得参数后,释放CommandLineToArgvW申请的空间

CString str;

for (int i=1;i<nArgs;i)

{

//处理szArglist[i]过程

}

//释放szArglist

LocalFree(szArglist);

//如需要直接退出

//exit(0);

以下为参考资料

让MFC程序支持命令行参数

一般情况下,如果我们的VC工程是Console控制台类型或者是Win32类型的情况下,这两类的工程类型比较容易获得命令行参数,

即,通过其入口点函数

int main(int argc, char *argv[])

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

但是,如果我们的工程类型是MFC对话框或单文档类型的话,如何让我们的程序支持命令行参数呢?

系统没有为我们提供好,那我们只有自己获取了……

一般情况下,需要在MFC程序的主线程初始化函数中进行处理,主线程的初始化函数即:

BOOL CProjCleanerApp::InitInstance(),这里面我们假设工程的名字是ProjCleaner,CProjCleanerApp 即主线程类。

在 BOOL CProjCleanerApp::InitInstance() 函数中进行程序的初始化以及对话框界面的显示工作,其大致代码如下:

BOOL CProjCleanerApp::InitInstance()

{

//省略的其他代码……;

CWinApp::InitInstance();

//省略的其他代码……;

CProjCleanerDlg dlg; //新建主对话框类型对象;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlg.DoModal(); //进行模态对话框的显示;

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-37210-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...