MFC带参数启动指令发送与接收
MFC带参数启动指令发送与接收
发送
使用ShellExecute函数打开文件或执行程序。
函数原型:
HINSTANCE ShellExecute(
_In_opt_ HWND hwnd,//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL
_In_opt_ LPCTSTR lpOperation,//操作
_In_ LPCTSTR lpFile,//要打开的文件名、执行的程序名、浏览的文件夹等。
_In_opt_ LPCTSTR lpParameters,//可执行程序的参数,否则为 NULL
_In_opt_ LPCTSTR lpDirectory,//默认目录
_In_ INT nShowCmd//显示类型
);
lpOperation是一个字符串,通常为:
- edit: 用编辑器打开 lpFile 指定的文档,如果 lpFile 不是文档,则会失败
- explore: 浏览 lpFile 指定的文件夹
- find: 搜索 lpDirectory 指定的目录
- open: 打开 lpFile 文件,lpFile 可以是文件或文件夹
- print: 打印 lpFile,如果 lpFile 不是文档,则函数失败
- properties: 显示属性
- runas: 请求以管理员权限运行,比如以管理员权限运行某个exe
- NULL: 执行默认"open"动作
nShowCmd是执行操作之后程序显示类型,指定该参数后运行起来的程序不一定能按照指定参数显示,只是通知程序的显示状态。类型如下:
- SW_HIDE 隐藏窗口,活动状态给令一个窗口
- SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
- SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
- SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
- SW_SHOWMAXIMIZED 最大化窗口,并将其激活
- SW_SHOWMINIMIZED 最小化窗口,并将其激活
- SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
- SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
- SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
- SW_SHOWNORMAL 与SW_RESTORE相同
示例:
//打开程序
ShellExecute(NULL,L"open",L"notepad.exe", command, NULL, SW_SHOW );
//用系统打印机打印文档
ShellExecute(NULL,L"print", L"c:\\abc.txt",NULL, NULL, SW_HIDE);
//用系统查找功能来查找指定文件
ShellExecute(NULL,L"find",L"d:\\nish", NULL, NULL, SW_SHOW);
接收:参数单个的话建议方法一,多个的话建议方法三
方法一(不带本程序路径的所有参数作为整体获取)
MFC中的AFXWIN.H中自带一个成员变量m_lpCmdLine,该成员变量用来保存可执行文件名后的参数。
在工程的app类的InitInstance初始化函数中,添加对m_lpCmdLine变量的判断。
示例
m_command="无参数";//要现在app类中定义此变量
if ((m_lpCmdLine[0] != _T('\0')) )//例子
{
m_command = m_lpCmdLine;
}
方法二(带本程序地址的所有参数作为整体获取)
CString sCmdline = ::GetCommandLine();
AfxMessageBox(sCmdline);
\\将获取到 "C:\test\app.exe -1 -2"
方法三(分开获取多个参数)
c++程序的main函数有两个参数:
int main(int argc, char* argv[]) 或者int main(int argc, char** argv)
- argc = argument count :表示传入main函数的数组元素(参数)个数,为int类型
- argv = argument vector :表示传入main函数的指针数组(参数数组),为char**类型。char **argv与char *argv[]等价。
第一个数组元素argv[0]是程序名称,并且包含程序所在的完整路径。argc至少为1,即argv数组至少包含程序名。
示例:
for (int i = 0; i < __argc; i++)
{
__argv[i];
AfxMessageBox(__argv[i]);
}
//将依次得到"C:\test\app.exe","参数一", "参数二"
MFC带参数启动指令发送与接收的更多相关文章
- mfc 带参数的构造函数
知识点 默认的构造函数 带参数的构造函数 重载构造函数 一.默认的构造函数 二.带参数的构造函数 三.重载构造函数 class Tdate { public: int year;//年 int mon ...
- 【转】winform带参数启动另一个exe
启动EXE string arg1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; string arg2 = "bbbbbbbbbbbbbbbb ...
- MFC实现http连接、发送和接收数据
#include <afxinet.h> // 设置超时 CInternetSession session; session.SetOption(INTERNET_OPTION_CONNE ...
- Intellij IDEA带参数启动Springboot注意事项
问题 不同版本的spring-boot-maven-plugin的jvm参数配置有所不同,同时与通过main方法启动springboot程序传递参数也有所不同. 分析 在运行main方法时,可以通过j ...
- shell脚本带参数启动项目
用maven工程打包时,会将数据库连接一并打进去,如果需要经常修改数据库连接,则需要打开jar包然后修改配置,这样很麻烦耗时并且容易出错. 因此需要将数据库配置放入项目外,这样修改数据库时去固定的配置 ...
- C++第四十七篇 -- VS2017带参数启动调试程序
参考链接:https://www.cnblogs.com/kileyi/p/10163269.html 举例:Test_Bluetooth.exe -help Test_Bluetooth.cpp # ...
- VS2017 带参数启动调式程序
有些程序,比如FFPlay,需要传递命令行参数才能运行想要的功能,比如字幕, ffplay -vf subtitles=mv.mkv mv.mkv 参数是 -vf subtitles=mv.mkv m ...
- docker 带参数启动 配合springboot profile
dockerfile FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD test-push-service--SNAPSHOT.jar app. ...
- 【转】如何在命令行脚本中启动带参数的Windows服务
我们有一个自己编写的Windows服务,我们希望该服务在启动时可以根据用户输入的参数实现不同的功能. 要实现这样的需求并不是很难,下面这个例子我用来示范如何编写该服务 using System; us ...
随机推荐
- sql注入原理+mysql相关知识点
什么是SQL注入 sql就是经常说的数据库,而sql注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.SQL注入是比较常见的网络攻击 ...
- ansible的基础概念与部署(一)
- C++多线程队列实现
C++多线程队列实现 C++多线程队列学习 介绍 在项目中,进行多线程队列实现是一个比较麻烦的事, 找到了一个实现比较好的多线程队列实现, 自己做了一点修改更加适应自己的项目, 记录下来, 有需要的自 ...
- HTML JavaScript 基础(下)
一.JavaScript 函数 1.普通函数-有函数名 function func(){ } 2.匿名函数-无函数名 setInterval(function(){ console.log(123); ...
- 程序员最喜欢用的在线IDE代码编译器,什么?你竟然不知道!
1.网址https://tech.io/snippet 支持 20+ 种编程语言,页面上没有杂七杂八的东西,非常简约,非常干净,另外,它上面的代码段还可以嵌入到网页之中. 2.网址 https://w ...
- codeforce 225B Code Parsing
Little Vitaly loves different algorithms. Today he has invented a new algorithm just for you. Vita ...
- P2542 【[AHOI2005]航线规划】
P2542 [[AHOI2005]航线规划] 一个无向图,m个操作 删去一条边 给定两个点,求有多少边使得如果这条边不存在,给定的两个点不连通 一般这种删边的题目,考虑逆序加边处理 在删完的图中,任意 ...
- Nmon 的安装及使用
一.安装 Nmon 1.下载地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download 2.下载对应系统的 nomn 工具(我用 centos6 ...
- 配置 Ant 执行 Jmeter 脚本
1.将 Jmeter 下 extras 目录中 ant-jmeter-1.1.1.jar 包拷贝至 ant 安装目录下的lib目录中,否则会报错 ant-jmeter-1.1.1 不存在 2.创建 ...
- MySQL命令3
连接 mysql -u username -p 查看进程 SHOW processlist