WindowsAPI实现远程调启exe可执行程序,C++实现

// 10-winAPI调用外部可执行程序.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>
#include <Tlhelp32.h>
#include <comdef.h>//字符串类型转换
using namespace std;

int main()
{
          
   
	//启动有一个外部程序
	//system("start C:\Users\Administrator\Desktop\acv\10_9_a.exe");//父子进程分离,创建后互不影响
	WinExec("C:\Users\Administrator\Desktop\acv\10_9_a.exe", SW_SHOWNORMAL);//子进程继承父进程
	//查找外部指定程序
	DWORD needstopProID=0;
	PROCESSENTRY32 pe32;
	pe32.dwSize = sizeof(pe32);
	HANDLE hSnapshot_proc = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (hSnapshot_proc != INVALID_HANDLE_VALUE)
	{
          
   
		BOOL check = Process32First(hSnapshot_proc, &pe32);
		while (check)
		{
          
   
			_bstr_t b(pe32.szExeFile);
			const char* lpchar = b;
			if (strcmp("10_9_a.exe", lpchar)==0)
			{
          
   
				needstopProID = pe32.th32ProcessID;
				printf("id:%d name :%s
", pe32.th32ProcessID, lpchar);
				
			}
			check = Process32Next(hSnapshot_proc, &pe32);
		}
	}
	
	

	Sleep(3000);
	//通过进程id 拿到进程句柄 结束进程
	if (needstopProID != 0)
	{
          
   
		HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, needstopProID);
		if (hProcess == NULL)
		{
          
   
			printf(" There is no process to stop");
			return 0;
		}
		else
		{
          
   
			TerminateProcess(hProcess, 0);
		}
		
	}
	else
	{
          
   
		printf(" There is no process to stop");
		
	}
	Sleep(3000);

	return 0;

}
经验分享 程序员 微信小程序 职场和发展