Windows程序设计打开另一个程序的三种方法

注意:打开其他程序时有的方法不可行,可都使用一遍进行测试

均已打开 记事本(notepad)为例

1、创建一个新线程打开应用


	PROCESS_INFORMATION processInfo;
	char dir[MAX_PATH] ;
	char cCmdLine[MAX_PATH];
	DWORD dwExitCode;
	STARTUPINFO si = {
    sizeof(si) };

	// 得到Windows目录 

	GetWindowsDirectory(dir, MAX_PATH);


	//char di[100] = "C:\WINDOWS\system32";
	// 启动 记事本 程序命令行
	CString sCmdLine = CString(dir) + "\\Taskmgr.exe";
	::strcpy(cCmdLine, sCmdLine);

	// 启动 记事本 作为子进程
	if (CreateProcess(NULL, cCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &processInfo))
	{
   
		// 等待子进程的退出 
		WaitForSingleObject(processInfo.hProcess, INFINITE);
		// 获取子进程的退出码
		GetExitCodeProcess(processInfo.hProcess, &dwExitCode);
		// 关闭子进程句柄
		CloseHandle(processInfo.hProcess);
	}

2、调用Windows自带函数

WinExec(_T("c:\\windows\\taskmgr.exe"), SW_SHOWDEFAULT);

第二个参数为:窗口的打开风格

参数可选值:
SW_HIDE = 0; {隐藏, 并且任务栏也没有最小化图标}
SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}
SW_NORMAL = 1; {同 SW_SHOWNORMAL}
SW_SHOWMINIMIZED = 2; {最小化, 激活}
SW_SHOWMAXIMIZED = 3; {最大化, 激活}
SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}
SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}
SW_SHOW = 5; {同 SW_SHOWNORMAL}
SW_MINIMIZE = 6; {最小化, 不激活}
SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}
SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}
SW_RESTORE = 9; {同 SW_SHOWNORMAL}
SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}
SW_MAX = 10; {同 SW_SHOWNORMAL}

3、使用 ShellExecute 打开文件或执行程序

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相同

返回值:
返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。错误如下:

0 系统内存或资源不足

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌宝儿姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值