进程A 通过CreateProcess创建一个B进程 通过传命令行参数
进程A代码
#include "stdafx.h"
#include <windows.h>
void main(int ,TCHAR *srcv[])
{
DWORD dwEvent=0;
SECURITY_ATTRIBUTES sa={sizeof(SECURITY_ATTRIBUTES)};
sa.bInheritHandle=TRUE;//设置可继承
STARTUPINFO si={sizeof(STARTUPINFO)};
PROCESS_INFORMATION pi={0};
HANDLE hEvent=CreateEvent(&sa,0,0,0);
TCHAR buffer[256];
swprintf_s(buffer,TEXT("C:/Users/Administrator/source/repos/2017_First/Debug/2017_First.exe %x"),hEvent);
CreateProcess(0,buffer,0,0,1,CREATE_NEW_CONSOLE,0,0,&si,&pi);
Sleep(3000);
SetEvent(hEvent);
getchar();
}
进程B 代码
#include "pch.h"
#include <iostream>
#include<Windows.h>
int main(int ,char* srcv[])
{
DWORD dwEvent = 0;
char pszBuffer[256] = { 0 };
memcpy_s(pszBuffer,8, srcv[1],8);
sscanf_s(pszBuffer,("%x"), &dwEvent);
printf("开始等待内核对象 %x\n", dwEvent);
HANDLE hEvent = (HANDLE)dwEvent;
WaitForSingleObject(hEvent, INFINITE);
printf("等到内核对象");
getchar();
return 0;
}