程序很简单,一个exe,只有一个窗口,我在这个窗口的WM_CLOSE消息的时候ShellExecute一个*.AVI文件(8M左右)。
可是发现一个问题,exe退出了,WMP也开起来了,但是却没有自动播放这个AVI文件。若我单独双击这个AVI文件能打开且能自动播放。
或者我在ShellExecute之后Sleep几秒钟(比如::Sleep(3000)),也能打开且自动播放文件。为什么?有人能说一下原因么?

解决方案 »

  1.   

    我用ProcessExplorer监控了一下
    发现ShellExecute之后,其实wmp.exe是属于我的exe进程的子进程,可是因为我的exe若不暂停一下,马上关闭,那wmp.exe就变成一个独立的进程了,所以我在想,是不是因为这个变化导致没有播放文件。
      

  2.   

    子进程启动时需要从父进程继承一些信息,例如当前目录,环境变量等
    试试用ShellExecuteEx返回一个进程句柄,然后对这个句柄调WaitForInputIdle等待初始化结束
      

  3.   

    ShellExecute启动wmp.exe,然后把*.AVI用命令行参数传递给wmp.exe
      

  4.   

    但是我换成 WinExec 却没有这个问题
    囧~~~按理讲ShellExecute应该是兼容前者的
      

  5.   

    我想不是使用WinExec 这个函数就没问题,而是没触发异常而已,你多测试一下,就会出现了,可能处理机恰好分配给其他的进程了