zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++ 操作控制台(打开进程、关闭进程、执行命令)

C++进程 操作 关闭 打开 控制台 执行命令
2023-09-11 14:14:03 时间

做批处理不一定要用 .bat , C++ 也可以,所以这说明 C++ 是一个多么棒的语言 ? 错 ——
在这里插入图片描述

因为我懒,所以我只写成我能看懂的样子。(这里面有很多无关紧要的操作,你懂了吧)
有一点需要注意,打开文件一定不要用 system() ,这样会导致无法得到控制台返回的信息。

	// 1. 打开 D:\Program Files\nox\Nox\bin\Nox.exe
	STARTUPINFO si = {sizeof(si)};			// 进程在创建时的外观信息
	PROCESS_INFORMATION pi;					// 进程创建时的信息
	si.dwFlags = STARTF_USESHOWWINDOW;		// STARTF_USESHOWWINDOW :wShowWindow 成员包含其他信息
	si.wShowWindow = TRUE;					// 显示新建进程的主窗口
	if(!CreateProcess(
		NULL,														// 不在此指定可执行文件的文件名
		_tcsdup(TEXT("D:\\Program Files\\nox\\Nox\\bin\\Nox.exe")),	// 命令行参数
		NULL,														// 子进程不继承新进程对象的句柄
		NULL,														// 子进程不继承新线程对象的句柄
		FALSE,														// 当前进程内句柄不被子进程继承
		NULL,														// 继承父进程的控制台
		NULL,														// 使用本进程的环境变量
		NULL,														// 使用本进程的驱动器和目录
		&si,														// 指向 STARTUPINFO 结构体的指针
		&pi															// 指向 PROCESS_INFORMATION 结构体的指针
		)){
		cout << "打开进程 Nox.exe 失败" << endl;
	}
	
	// 2. Sleep2分钟
	Sleep(30000);

	// 3. 执行命令:adb.exe "connect 127.0.0.1:62001"
	system("adb connect 127.0.0.1:62001");
	Sleep(3000);

	// 4. 执行命令:adb.exe "shell am start -n io.busniess.va/io.virtualapp.home.HomeActivity"
	system("adb shell am start -n io.busniess.va/io.virtualapp.home.HomeActivity");

	// 5. Sleep6小时
	Sleep(21600000);

	// 6. 关闭相关进程
	system("taskkill /f /t /im NoxVMSVC.exe");
	system("taskkill /f /t /im NoxVMHandle.exe");
	system("taskkill /f /t /im NoxSrv.exe");
	system("taskkill /f /t /im Nox.exe");

	// end. 循环
	goto Begin;

	getchar();
	return 0;
}

至于你能不能拿来用,就得看缘分啦 。
在这里插入图片描述