shellexecute的一些"高级"问题?请看看!

nadir 2000-08-06 12:28:00
问题1:一般的应用软件如下语句可运行:
shellexecute(handle,'open','exe文件路径','','',SW_SHOWNORMAL);
但是有时我发现,并不是每一个系统下的exe文件都可利用此方法运行(首先申明,
这些exe文件并无运行参数),比如我想运行E:\wabdc2000\wabdc.exe(即我爱背单词),
可是编译后运行,却提示我"找不到声音文件,打开出错",这种情况下,如何解决呢?

问题2:我用ole控件直接引入.exe文件也可运行固定路径的exe文件,这两种方法哪个
更好?为什么?,如果exe文件路径不固定,如何解决?
...全文
202 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
saite 2001-08-10
  • 打赏
  • 举报
回复
把我要说的给说了,真是的!
Kingron 2001-08-10
  • 打赏
  • 举报
回复
分数应该给Wingsun(孙春阳) 
Wingsun 2000-08-07
  • 打赏
  • 举报
回复
象《我爱背单词》之类的软件在启动时需要在他的工作目录下查找文件,所以你应该给他指定他的工作路径,也就是给出ShellExecute的倒数第二个参数。即
shellexecute(handle,'open','exe文件路径','','exe文件工作路径',SW_SHOWNORMAL)
「已注销」 2000-08-07
  • 打赏
  • 举报
回复
确认是输入成E:\\wabdc2000\\wabdc.exe?

不过最好还是使用CreateProcess来运行吧。

BOOL CreateProcess(

LPCTSTR lpApplicationName, // pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
);

Michaelyfj 2000-08-07
  • 打赏
  • 举报
回复
要使用CreateProcess的具体例子吗?
码狂 2000-08-06
  • 打赏
  • 举报
回复
你倒数第二个参数应设为EXE文件所在的路径。要不然你可以运行一个快捷方式。
Michaelyfj 2000-08-06
  • 打赏
  • 举报
回复
前一种方法会更好,但建议你用CreateProcess来运行更Ok

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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