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