真正超高水平的问题

sssoft 2002-07-02 10:09:36
我用ShellExecute打开一个文件。但是我的应用程序并不知道打开这个文件需要
的编辑软将,如doc,或者xls,或者是Bmp甚至是acad的dwg文件
但是我想在进行文件编辑以后,关闭编辑软件时(例如word或者acad),给我的应用程序发一个消息,让我进行一些操作。
...全文
41 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
godanddog 2002-07-04
  • 打赏
  • 举报
回复
下面是我在CB中编的一个方法,供参考
/*****************************************************************
function:调用可执行文件
input:strcommandline——命令行
bolwait——是否监控被调用可执行程序的运行
output:如果程序运行成功,返回true,否则返回false
*****************************************************************/
bool TfrmBackup::funRun( AnsiString strCommandLine ,bool bolWait )
{
bool bolSuccess ;
STARTUPINFO StartupInfo;
PROCESS_INFORMATION proinfo;

memset(&StartupInfo,0,sizeof(STARTUPINFO));
StartupInfo.cb=sizeof(STARTUPINFO);
StartupInfo.lpReserved=NULL;
StartupInfo.lpDesktop=NULL;
StartupInfo.lpTitle=NULL;
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;
StartupInfo.cbReserved2=0;
StartupInfo.lpReserved2=NULL;
if ( bolWait )
StartupInfo.wShowWindow=SW_SHOWMINIMIZED ;
Else
StartupInfo.wShowWindow=SW_SHOWNORMAL ;

ZeroMemory(&proinfo, sizeof(proinfo));
bolSuccess = CreateProcess(NULL, (LPTSTR)strCommandLine.c_str(), NULL, NULL, TRUE,
CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &StartupInfo, &proinfo) ;
if ( bolSuccess )
{
if( bolWait )
{
CloseHandle( proinfo.hThread ) ;
WaitForSingleObject( proinfo.hProcess ,INFINITE ) ;//等待程序运行完毕
CloseHandle( proinfo.hProcess ) ;
}

return true ;
}
else if( ! bolSuccess )
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "信息提示", MB_OK | MB_ICONINFORMATION );

LocalFree( lpMsgBuf );
return false ;
};
}
shuohua 2002-07-03
  • 打赏
  • 举报
回复
哦,虽然不能帮你,但是帮你UP一下!希望你能得到好的解答!
UP! :)
sssoft 2002-07-03
  • 打赏
  • 举报
回复
云霄您好,您给我的链接没有办法浏览
能否再给我贴一个?
螺丝刀2000 2002-07-03
  • 打赏
  • 举报
回复
up
lingfeng_314 2002-07-03
  • 打赏
  • 举报
回复
关注!
wgku 2002-07-02
  • 打赏
  • 举报
回复
http://211.157.102.21/Expert/forum.asp?typenum=8&searchKeys=ShellExecute&roomid=2&author=&tabletype=now

这里有你想要的!!!!!
griefforme 2002-07-02
  • 打赏
  • 举报
回复
用Shell打开可以得到ProcessID
intersun 2002-07-02
  • 打赏
  • 举报
回复
可不可以得到该进程的进程ID,循环看该进程是否结束,如结束就退出循环。
下面代码近似这一过程。
pId = Shell(AppName)
Call EnumWindows(AddressOf EnumWindowsProc, pId)
hProcess = OpenProcess(SYNCHRONIZE, 0, pId)

Do
Call GetExitCodeProcess(hProcess, ExitCode)
DoEvents
Loop While ExitCode = STILL_ALIVE
Call CloseHandle(hProcess)
sssoft 2002-07-02
  • 打赏
  • 举报
回复
各位高手,只要给个思路就行,不需要真正实现

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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