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; }
上一篇:
Java架构师技术进阶路线图
下一篇:
Wireshark抓包及DNS报文分析