一、Windows进程介绍
一个容器,包含程序执行需要的代码、数据、资源等等信息。Windows是多任务操作系统,可以同时执行多个进程。
二、Windows进程的特点:
1、每个进程都有自己的ID号
2、每个进程都有自己的地址空间,进程之间无法访问对方的地址空间。
3、每个进程都有自己的安全属性
4、每个进程当中至少包含一个线程
三、环境信息获取
1、多字节格式
void 环境() {
LPCH pEnv = GetEnvironmentStrings();//返回一个地址,存放的环境变量首地址
LPSTR pText = (LPSTR)pEnv;//为了打印,重新定义一个,原来的需要释放
for (pText;*pText;pText++)
{
while (*pText)
{
putchar(*pText++);
}
putchar('\n');
}
FreeEnvironmentStrings(pEnv);
}
int main() {
环境();
return 0;
}
2、unicode格式
void 环境() {
LPWCH pEnv = GetEnvironmentStrings();
LPCWSTR pText = (LPCWSTR)pEnv;//为了打印重新定义一个,原来的用来释放
for (pText; *pText; pText++)
{
while (*pText)
{
putchar(*pText++);
}
putchar('\n');
}
FreeEnvironmentStrings(pEnv);
}
int main() {
环境();
return 0
}
3、设置和读取环境变量
void sz设置和读取环境() {
SetEnvironmentVariable(L"aiyou", L"bucuoo");//变量名字和路径
wchar_t s1[256] = { 0 };
GetEnvironmentVariable(L"aiyou", s1, 256);
LPCWSTR pText = s1;
for (pText; *pText; pText++)
{
while (*pText)
{
putchar(*pText++);
}
putchar('\n');
}
}
四、进程信息
1、进程ID
GetCurrentProcessId()
2、进程句柄,打印出来是-1,他只是内部使用的
GetCurrentProcess()
3、创建进程
void jc信息() {
STARTUPINFO s = { 0 };
PROCESS_INFORMATION p = { 0 };
CreateProcess(L"C:/Windows/System32/notepad.exe", (LPTSTR)"", NULL, NULL, FALSE, 0,
NULL, NULL, &s, &p);
printf("进程ID:%d,进程句柄:%d\n", (wchar_t)p.dwProcessId, (wchar_t)p.hProcess);
}
4、结束进程
void js结束进程() {
HANDLE hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 18332);//通过ID获取句柄
TerminateProcess(hproc, 0);//通过句柄杀死进程
}
5、等候函数
WaitForSingleObject(p.hProcess, INFINITE);//进程运行,进程句柄无信号,进程结束,才会执行这句话,只有进程句柄才是可等候句柄,infinite无限大时间
阻塞函数,等候句柄的信号,只在句柄有信号或超出等候时间,才会结束等候。