高分求教!先给100分,不够再加!

phisherr 2005-09-23 11:59:03
我的问题是:
我在程序a 中用ShellExecuteEx()打开程序b后,消息全部封锁在程序b中,
程序a 不能做任何操作,请问如何将消息返回到程序a?
...全文
174 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yayaniuniu502 2005-09-25
  • 打赏
  • 举报
回复
我以前也遇到过,你是不是把ShExecInfo.fMask的属性设置成了SEE_MASK_NOCLOSEPROCESS?

可以改成SEE_MASK_NO_CONSOLE
yayaniuniu502 2005-09-25
  • 打赏
  • 举报
回复
我以前也遇到过,用了ShellExecuteEx()后,a程序根本就看不见了,进程还有,但是程序是“未响应”一样的状态,这是什么原因啊?
goodboyws 2005-09-23
  • 打赏
  • 举报
回复
用CreateProcess
DentistryDoctor 2005-09-23
  • 打赏
  • 举报
回复
消息全部封锁在程序b中?什么意思?
yayaniuniu502 2005-09-23
  • 打赏
  • 举报
回复
回不回是ShellExecuteEx()的参数设置不对啊?
i_noname 2005-09-23
  • 打赏
  • 举报
回复
钩子
KennyLiu 2005-09-23
  • 打赏
  • 举报
回复
你想返回什么信息啊??用ShellExecuteEx()之后,a跟b都是独立的
he_sl 2005-09-23
  • 打赏
  • 举报
回复
koko1998 2005-09-23
  • 打赏
  • 举报
回复
CWinThread::CreateThread
balloy 2005-09-23
  • 打赏
  • 举报
回复
要的是这个吗?

bool DoEvents()
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if(msg.message == WM_QUIT) return false;

::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return true;
}

bool LaunchAppAndWait(const TCHAR * pszCmdLine, WORD nShow = SW_SHOW, DWORD dwMilliseconds= INFINITE)
{
bool bResult = false;

TCHAR szBuffer[1024] = _T("");
_tcscpy(szBuffer, pszCmdLine);

PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo;
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow = nShow;

if(::CreateProcess( NULL, szBuffer, NULL, NULL,
FALSE, CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS,
NULL, NULL, &StartupInfo, &ProcessInfo))
{
while(::WaitForSingleObject(ProcessInfo.hProcess, dwMilliseconds) == WAIT_TIMEOUT)
{
if(!DoEvents()) break;
}

::CloseHandle(ProcessInfo.hThread);
::CloseHandle(ProcessInfo.hProcess);

bResult = true;
}

return bResult;
}


调用函数LaunchAppAndWait即可
rageliu 2005-09-23
  • 打赏
  • 举报
回复
up

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧