Win32隐藏窗口运行
2013-07-24 16:03
369 查看
由于一些程序是对话框的模式,且有些没有处理隐藏消息,这时候用ShellExecute,或者ShellExecuteEx隐藏方式运行第三方程序,会是失败的。此时使用下面方法,则可以:
BOOL Run(const wchar_t *pszApp)
{
if (NULL == pszApp)
{
return FALSE;
}
TCHAR szDesktop[256] = L"Desktop";
HDESK hDesk = CreateDesktop(szDesktop, NULL, NULL, 0, GENERIC_ALL|DESKTOP_CREATEWINDOW, NULL);
if(hDesk)
{
STARTUPINFO si = {sizeof(si)};
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.lpDesktop = szDesktop;
PROCESS_INFORMATION pi = {0};
TCHAR szTempApp[256] = {0};
wcsncpy(szTempApp, pszApp, sizeof(szTempApp) / sizeof(TCHAR) - 1);
if (CreateProcess(NULL, szTempApp, NULL, NULL, FALSE, 0, NULL,NULL, &si, &pi))
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
CloseDesktop(hDesk);
return TRUE;
}
return FALSE;
}
BOOL Run(const wchar_t *pszApp)
{
if (NULL == pszApp)
{
return FALSE;
}
TCHAR szDesktop[256] = L"Desktop";
HDESK hDesk = CreateDesktop(szDesktop, NULL, NULL, 0, GENERIC_ALL|DESKTOP_CREATEWINDOW, NULL);
if(hDesk)
{
STARTUPINFO si = {sizeof(si)};
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.lpDesktop = szDesktop;
PROCESS_INFORMATION pi = {0};
TCHAR szTempApp[256] = {0};
wcsncpy(szTempApp, pszApp, sizeof(szTempApp) / sizeof(TCHAR) - 1);
if (CreateProcess(NULL, szTempApp, NULL, NULL, FALSE, 0, NULL,NULL, &si, &pi))
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
CloseDesktop(hDesk);
return TRUE;
}
return FALSE;
}
相关文章推荐
- 如何将Win32 console运行后的窗口隐藏
- 隐藏程序运行的窗口
- 将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)
- [VC/MFC]一条语句实现程序运行时隐藏窗口
- 如何隐藏win32 console application的console窗口
- 几种隐藏批处理运行窗口的方法
- 运行时隐藏(不显示)程序窗口(VC)
- win32窗口的最小化,隐藏,和失去焦点
- 一条语句实现程序运行时隐藏窗口
- [VC/MFC]一条语句实现程序运行时隐藏窗口
- win32 单实例程序运行-无窗口程序也可
- 利用vbs 运行程序 并使窗口隐藏
- 如何隐藏win32 console application的console窗口
- [VC/MFC]一条语句实现程序运行时隐藏窗口
- 开机启动bat以及隐藏运行窗口
- 如何隐藏win32控制台应用程序的窗口
- 转:隐藏C#控制台程序运行时的窗口
- MFC隐藏主窗口运行的几种方法
- [VC/MFC]一条语句实现程序运行时隐藏窗口