<msdn 查找关键字> Process and Thread Functions
1.WinExec()
https://msdn.microsoft.com/zh-cn/library/windows/desktop/cc144191(v=vs.85).aspx
UINT WinExec(
LPCSTR lpCmdLine, // command line
UINT uCmdShow); // window style
WinExec("control.exe", SW_NORMAL);
WinExec("c:\windows\system32\control.exe", SW_NORMAL);
WinExec("c:\windows\system32\control.exe MyCpl.cpl", SW_NORMAL);
2.ShellExecute()
https://msdn.microsoft.com/zh-cn/vstudio/bb762153
HINSTANCE ShellExecute(
HWND hwnd, //与窗口联系起来
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
打开文档
ShellExecute(
NULL,
"Edit",
"C:\\test\\xxx.txt",
NULL,
NULL,
SW_SHOWNORMAL
);
打开文件夹
ShellExecute(
NULL,
"explore",
"C:\\test\\xxx.txt",
NULL,
NULL,
SW_SHOWNORMAL
);
3.CreateProcess()
https://msdn.microsoft.com/zh-cn/office/ms682425(v=vs.80).aspx
CREATE_SUSPENDED //创建的进程设置为挂起,等待命令到来才执行;
GetCurrentDirectory();//获得程序当前目录
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0,sizeof(STARTUPINFO));
memset(&pi, 0,sizeof(PROCESS_INFORMATION));
si.cb = sizeof(STARTUPINFO);
TerminateProcess(pi.Process, 0);//结束进程
4
//获取计算器程序的窗口句柄
HWND hWnd = Findwindow("NULL", "计算器");
//计算器程序PID获取:
DWORD dwPID = 0;
dwPID = GetWindowsThreadProcessId(hWnd , &dwPID);
//获取进程的句柄
HANDLE hProcess;
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
//结束目标进程
TerminateProcess(hProcess, 0);
5 CreateProcess()子进程继承,pi.Process 进程内部Index,在子进程可以当进程句柄使用,用其来关闭自身。
6.TerminateProcess属于暴力方法,失去了释放资源的机会,尽量不要使用这个API。
7.遍历任务管理器
//3个api
CreateToolhelp32Snapshot();//创建系统进程状态的快照,在调用API的那瞬间
Process32First(hSnapshot, &ww);
Process32Next()
8遍历窗口
EnumWindows();
GetDesktopWindow
GetWindow();