最近自己要写一个程序能够创建进程并同时隐藏这个窗口,因为比较好弄,网上随便百度一下copy代码下来,结果不能够隐藏,无能怎么设置都不可以,但发现可以隐藏笔记本。
网上隐藏的普遍代码
PROCESS_INFORMATION pi;
STARTUPINFO si; //隐藏进程窗口
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.cbReserved2 = NULL;
si.lpReserved2 = NULL;
BOOL ret = CreateProcess(NULL,"notepad.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
if(ret)
{
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess,INFINITE);
GetExitCodeProcess(pi.hProcess,&dwExitCode);
CloseHandle(pi.hProcess);
CString tmp;
tmp.Format("进程关闭",i);
AfxMessageBox(tmp);
}
后面自己分析估计只是CreateProcess 只针对非MFC的工程,自己创建一个win32的代码,结果发现是可以的,稍微跟踪一下win32的代码,发现这里设置si.wShowWinows赋值到 <

在尝试使用CreateProcess创建并隐藏进程窗口时遇到困难,发现该方法对MFC工程无效。分析发现MFC的模态对话框不响应nCmdShow参数。解决方法包括:1) 修改MFC工程代码,使CreateProcess行为与Win32一致;2) 对于他人编写的MFC程序,可能需要借助钩子技术来实现窗口隐藏。
最低0.47元/天 解锁文章
775

被折叠的 条评论
为什么被折叠?



