打开记事本上所写的程序
不知道你有没有遇到过这种场景,当你要进行某项工作时,都要打开好几个应用程序,很繁琐,如果能一键打开这些应用就好了,那么接下来的内容可以很轻松的完成你的需求
如图所示,我在记事本上写下了三个程序,我怎样才可以用程序打开这三个程序呢?
答案是:用createProcess函数
实践
#include<stdio.h>
#include<Windows.h>
#define MaxProcCount 10
#define MAX_LINE_LEN 80
int main(void)
{
FILE* CommandFile;
char cmdLine[MaxProcCount][MAX_LINE_LEN];
char tempLine[MAX_LINE_LEN];
int realProcCount = 0;
//注意这里的文件路径和文件名,这里我将文本文件命名为commandText.txt,就放在程序根目录下
if (fopen_s(&CommandFile,"./commandText.txt", "a+"))
{
printf("open failed");
exit(1);
}
while (fgets(tempLine, MAX_LINE_LEN, CommandFile) != NULL)
{
char x = tempLine[strlen(tempLine)-1];
if (x == '\n')
{
strncpy_s(cmdLine[realProcCount++], tempLine, strlen(tempLine) - 1);
}
else
{
strncpy_s(cmdLine[realProcCount++], tempLine, strlen(tempLine));
}
}
for (int i = 0; i < realProcCount; i++)
{
STARTUPINFO startInfo = { sizeof(startInfo) };
PROCESS_INFORMATION procInfo;
startInfo.dwFlags = STARTF_USESHOWWINDOW;
startInfo.wShowWindow = TRUE;
bool success = CreateProcess(
NULL, //不在此指定可执行文件的文件名
cmdLine[i], //命令行参数
NULL, //默认进程安全性
NULL, //默认进程安全性
TRUE, //指定当前进程内句柄可以被子进程继承
CREATE_NEW_CONSOLE, //为新进程创建一个新的控制台窗口
NULL, //使用本进程的环境变量
NULL, //使用本进程的驱动器和目录
&startInfo,
&procInfo
);
if (success)
{
CloseHandle(procInfo.hThread);
CloseHandle(procInfo.hProcess);
}
}
fclose(CommandFile);
getchar();
return 0;
}
成果
只要运行该程序,就能自动一次性打开我在记事本上写下的计算机程序