命令行参数wmain (int argc,wchar_t *argv[])

命令参数,总是把我搞得头晕,这回决定把它一次弄清
启动程序时,系统会在传入命令行参数给程序
比如下面,
ipconfig /all
 显示完整网络配置信息。
%windir%\system32\rundll32.exe powrprof.dll,SetSuspendState
这个在启用休眠的电脑上运行,立即进入休眠
同样
shutdown /h 
也能休眠
....
如下图所示
ttt是程序名,它和它后面的东西一起在启动程序时就传给了程序
一般的命令行程序就可以从argc,argv中取得所有的参数
但是如果是windows程序呢,下面就来讲

命令行参数wmain (int argc,wchar_t *argv[])_第1张图片

这是测试代码

 

//cl ttt.cpp
//ttt  The last  straw that breaks the camel's back
#include 
#include 
#include 
#include //让wprintf()支持中文
#pragma comment(lib,"shell32.lib")
int wmain (int argc,wchar_t *argv[]) 
{
	setlocale(LC_CTYPE,"CHS");//让wprintf()支持中文
	wprintf(L"main (int argc,char *argv[])\n");

	wprintf(L"命令行中可执行文件名argv[0]为:%s",argv[0]); 
	wprintf(L"总共有argc:%d个参数:\n",argc); 
	for(int i=0;i

如何取得完整路径的程序名呢?
如何取得程序路径?
还有程序的执行映像名呢?

找到了这几个API:GetModuleFileNameW()  GetCurrentDirectoryW() GetFileTitleW() 

命令行参数wmain (int argc,wchar_t *argv[])_第2张图片

完整的源代码

#include 
#include 
#include 
#include //让wprintf()支持中文
#include 
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"comdlg32.lib")

int wmain (int argc,wchar_t *argv[]) 
{
	setlocale(LC_CTYPE,"CHS");//让wprintf()支持中文
	wprintf(L"main (int argc,char *argv[])\n");

	wprintf(L"命令行中可执行文件名argv[0]为:%s",argv[0]); 
	wprintf(L"总共有argc:%d个参数:\n",argc); 
	for(int i=0;i

 

 

 

 

 

你可能感兴趣的:([编程],windows,命令行参数,完整路径程序名)