13、病毒控制 管道

创建MFC工程,一个按钮,一个标签。添加代码

void CdemoDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	HANDLE hPWrite,hPRead;
	SECURITY_ATTRIBUTES sa = {0};
	sa.nLength = sizeof(sa);
	sa.bInheritHandle = true;
	sa.lpSecurityDescriptor = NULL;

	BOOL bCreate;

	bCreate = CreatePipe(&hPRead,&hPWrite,&sa,0);
	if(!bCreate)
	{
		MessageBox(_T("failed"));
		return;
	}

	PROCESS_INFORMATION pi = {0};
	STARTUPINFO si = {0};
	si.cb = sizeof(si);
	si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
	si.hStdOutput = si.hStdError = hPWrite;
	si.wShowWindow = SW_HIDE;
	si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;

	TCHAR szCmd[MAX_PATH * 2] = {0};
	GetDlgItemText(IDC_EDIT,szCmd,MAX_PATH*2);


	bCreate = CreateProcess(NULL,szCmd,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi);
	CloseHandle(pi.hProcess);
	CloseHandle(pi.hThread);
	if(!bCreate)
	{
		CloseHandle(hPWrite);
		CloseHandle(hPRead);
		MessageBox(_T("failed"));

	}
	else
	{
		CString str;
		CloseHandle(hPWrite);
		TCHAR szBuff[4096];
		DWORD dwRead;
		while(TRUE)
		{
			memset(szBuff,0,sizeof(szBuff));
			if(!ReadFile(hPRead,szBuff,4096,&dwRead,NULL))
				break;
			str += szBuff;
			SetDlgItemText(IDC_EDIT2,str);
		}
		CloseHandle(hPRead);
	}
}

在这里插入图片描述

发布了46 篇原创文章 · 获赞 62 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_42250189/article/details/105582260