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\n", 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;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章