高手看过来,当ShellExecuteEx遇到MS-WORD时。。。

cctime 2005-06-15 12:03:38
用ShellExecuteEx加SEE_MASK_NOCLOSEPROCESS选项,可以方便地打开某个文档,并用WaitForSingleObject(x.hProcess)等待。但是当打开.doc文档时,SHELLEXECUTEINFO结构里的hProcess总是返回NULL。why? and how?
...全文
114 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2005-06-21
  • 打赏
  • 举报
回复
是否正确的打开
某鸟 2005-06-21
  • 打赏
  • 举报
回复
hProcess
Handle to the newly started application. This member is set on return and is always NULL unless fMask is set to SEE_MASK_NOCLOSEPROCESS. Even if fMask is set to SEE_MASK_NOCLOSEPROCESS, hProcess will be NULL if no process was launched. For example, if a document to be launched is a URL and an instance of Microsoft® Internet Explorer is already running, it will display the document. No new process is launched, and hProcess will be NULL.
蒋晟 2005-06-21
  • 打赏
  • 举报
回复
有些程序是设计为单实例的,第二个实例启动之后会通知第一个实例打开对应的文档并退出。
Hendy_So 2005-06-20
  • 打赏
  • 举报
回复
你到是说说打开哪种word文档出问题了,还有你的代码?
cctime 2005-06-20
  • 打赏
  • 举报
回复
不是吧,高手都不在CSDN了?去哪了?
cctime 2005-06-16
  • 打赏
  • 举报
回复
我的程序是要支持打开任何文档的,如果再遇到其他类似.doc这种文件,那岂不是又要做特殊处理,那根本没通用性了。

经测试发现:1、用“cmd.exe /c c:\a.doc”这样的方法可以打开并等待word进程,但是98下面用command.com的话未经测试,但这样感觉也不爽;
2、用“Wscript.Shell”的Run("c:\\a.doc", x, TRUE)也可以等待,但担心目标环境的WshShell对象的可用性,因为某些机器为了安全目的,把该组件禁用掉了;

所以有没有通过win32 api实现的方法?
hwndhwnd 2005-06-16
  • 打赏
  • 举报
回复
用MSWord提供的COM对象模型操作WORD岂不更好?
BigFanOfCpp 2005-06-16
  • 打赏
  • 举报
回复
打开WORD文档的时候可以直接打开其.DOC文件.
或者用WORD提供的OFFICE组件(.TLB)打开WORD.
cctime 2005-06-16
  • 打赏
  • 举报
回复
to Hendy_So(横笛):
不要那么简单好不好,我不懂耶。
用:FindExecutable + CreateProcess 方式也有问题,因为有些文件关联的程序是dll,所以无法用CreateProcess。

继续讨论!
Hendy_So 2005-06-16
  • 打赏
  • 举报
回复
CreateProcess
WinExec

15,471

社区成员

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

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