命令行参数wmain (int argc,wchar_t *argv[])
来源:互联网 发布:smtp服务器端口25 编辑:程序博客网 时间:2024/05/21 05:07
命令参数,总是把我搞得头晕,这回决定把它一次弄清
启动程序时,系统会在传入命令行参数给程序
比如下面,
ipconfig /all
显示完整网络配置信息。
%windir%\system32\rundll32.exe powrprof.dll,SetSuspendState
这个在启用休眠的电脑上运行,立即进入休眠
同样
shutdown /h
也能休眠
....
如下图所示
ttt是程序名,它和它后面的东西一起在启动程序时就传给了程序
一般的命令行程序就可以从argc,argv中取得所有的参数
但是如果是windows程序呢,下面就来讲
这是测试代码
//cl ttt.cpp//ttt The last straw that breaks the camel's back#include <windows.h>#include <tchar.h>#include <stdio.h>#include <locale.h>//让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<argc;i++){wprintf(L"[%d]:%s\n",i,argv[i]);}int nargs;WCHAR *psz=GetCommandLineW();wprintf(L"GetCommandLineW()返回:%s\n\n",psz);wprintf(L"CommandLineToArgvW(GetCommandLineW(),&nargs):\n");WCHAR **pszcmdlist=CommandLineToArgvW(psz,&nargs);if(pszcmdlist!=NULL){for(int i=0;i<nargs;i++){wprintf(L"%d,%s\n",i,pszcmdlist[i]);}LocalFree(pszcmdlist);//记得释放pszcmdlist=NULL;}}如何取得完整路径的程序名呢?
如何取得程序路径?
还有程序的执行映像名呢?
找到了这几个API:GetModuleFileNameW() GetCurrentDirectoryW() GetFileTitleW()
完整的源代码
#include <windows.h>#include <tchar.h>#include <stdio.h>#include <locale.h>//让wprintf()支持中文#include <atlstr.h>#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<argc;i++){wprintf(L"[%d]:%s\n",i,argv[i]);}int nargs;WCHAR *psz=GetCommandLineW();wprintf(L"GetCommandLineW()返回:%s\n\n",psz);wprintf(L"CommandLineToArgvW(GetCommandLineW(),&nargs):\n");WCHAR **pszcmdlist=CommandLineToArgvW(psz,&nargs);if(pszcmdlist!=NULL){for(int i=0;i<nargs;i++){wprintf(L"%d,%s\n",i,pszcmdlist[i]);}LocalFree(pszcmdlist);//记得释放pszcmdlist=NULL;}WCHAR AppFileFullName[MAX_PATH];GetModuleFileNameW(NULL,AppFileFullName,MAX_PATH);wprintf(L"完整路径的程序名:%s\n",AppFileFullName);WCHAR AppFileTitleName[MAX_PATH];GetFileTitleW(AppFileFullName,AppFileTitleName,sizeof(AppFileTitleName));wprintf(L"程序标题名:%s\n",AppFileTitleName);WCHAR AppDirectory[MAX_PATH];GetCurrentDirectoryW(sizeof(AppDirectory),AppDirectory);wprintf(L"程序路径:%s\n",AppDirectory);}
0 0
- 命令行参数wmain (int argc,wchar_t *argv[])
- 命令行参数(int argc,char* argv[])
- 命令行参数--argc, argv
- 说说 int main(int argc,char *argv[])两个命令行参数
- int main(int argc,char *argv【】)命令行参数
- _tmain(int argc, _TCHAR* ARGV[])下命令行参数用法
- 命令行参数(argc, argv)
- int main(int argc,char* argv[])参数
- int main(int argc,char *argv[]) 参数
- main(int argc,char *argv[] )参数输入
- main(int argc, char* argv[])参数意义
- main(int argc,char *argv[] )参数输入
- main(int argc,char **argv)参数解析
- c语言中命令行参数argc,argv
- c语言中命令行参数argc,argv
- c语言中命令行参数argc,argv
- c语言中命令行参数argc,argv
- c语言中命令行参数argc,argv
- Android开发:Eclipse导入Android项目 项目导入常见问题 中文乱码解决
- XML - Schema之引入其他Schema的方式
- HDU 3899 求所有人移动到某点的最小距离和 树形dp
- 微信开发者模式 绑定url token 您的服务器没有正确相应token验证
- UVA 11881 Internal Rate of Return
- 命令行参数wmain (int argc,wchar_t *argv[])
- 利用ViewHolder优化自定义Adapter的典型写法
- ttyS、ttySAC、tty、ttyn的区别
- Shell编程基础系列(2)------一些基本的命令
- struts2中如何去掉<s:fielderror>中的<ul><li>样式
- 基于C++标准库的动态绑定设计与实现
- OpenCV之cvSmooth函数平滑滤波
- ant打包build.xml配置
- 微弱光芒暖人心