1.windows进程控制

1. 程序入口

GUI是WINMAIN,,w是宽字符集的意思(unicode)

获取系统版本信息

OSVERSIONINFO vs = {sizeof(vs)};
	GetVersionEx(&vs);
	if (vs.dwPlatformId = VER_PLATFORM_WIN32_NT)
	{
		//printf("this is windows NT");
	}


创建进程

BOOL CreateProcess(
//可执行文件的名称
LPCTSTR lpApplicationName,
//指定了要传递给执行模块的参数
LPTSTR lpCommandLine,
//进程安全性
LPSECURITY_ATTRIBUTES lpP
//线程安全性
LPSECURITY_ATTRIBUTES lpT
//指定了当前进程中可继承句柄是否可被新进程继承
BOOL bInheritHandles,
//指定进程优先级和其它创建标志
DWORD dwCreationFlags,
//指定新进程使用的环境变量
LPVOID lpEnvironment,
//新进程使用的当前目录
LPCTSTR lpCurrentDirectory,
//指定新进程中主窗口的位置、大小和标准句柄等
LPSTARTUPINFO lpStartupInfo,
//返回新建进程的标志信息,如ID号、句柄等
LPPROCESS_INFORMATION lpProcessInformation
);
typedef struct _STARTUPINFO
{
DWORD cb; //本结构的长度
LPTSTR lpReserved; //保留字段
LPTSTR lpDesktop; //指定桌面名称
LPTSTR lpTitle; //指定控制台窗口标题
DWORD dwX; //指定新窗口的位置和大小
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
//指定控制台窗口行列数
DWORD dwXCountChars;
DWORD dwYCountChars;
//用于设定控制文本和背景颜色
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow; //窗口显示方式
WORD cbReserved2; //保留,必须为0
LPBYTE lpReserved2; //保留,必须为NULL
HANDLE hStdInput; //控制台标准句柄
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO,
*LPSTARTUPINFO;

创建进程

l 创建新的控制台CreateProcess(NULL, TEXT("cmd"), NULL, NULL, FALSE,

CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

创建非控制台进程

CreateProcess(

NULL,
“notepad.exe”
, NULL, NULL, FALSE,NULL, NULL, NULL, &si, &pi);

创建自定义程序的进程

CreateProcess(NULL,
”child.exe”
, NULL, NULL, FALSE,
CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

进程控制

1.获取系统进程 

PROCESSENTRY32

CreateToolhelp32Snapshot

Process32First

Process32Nex

打开进程

OpenProces

终止当前进程(自己调用,相当于我杀我自己?)

ExitProcess

终止其它进程(打开之后才能他杀)

TerminateProces

猜你喜欢

转载自blog.csdn.net/yonggandess/article/details/88942830