如何执行一个外部程序?有点难度,请高手们进(100分)

  • 主题发起人 主题发起人 dwxm
  • 开始时间 开始时间
D

dwxm

Unregistered / Unconfirmed
GUEST, unregistred user!
调用一个外部程序,老是提示检测到非法程序<br>WinExec CreateProcess ShellExecute 都试了,还是不行<br>但手工给这个可执行程序建立一个快截方式,放到任何地方,都能正常运行<br>即使用chdir的方式,转到目录在执行也不同样提示<br>该程序应该有防止外部程序调用的设计,请大家想想办法,怎么才能调用它?<br><br>祝大家新年快乐!谢谢
 
把程序也一起发上来侃侃啊
 
既然快捷方式可以正常调用,你就用 ShellExecute 调用你创建的快捷方式,间接调用外部程序不就行了。
 
还有,SHELLEXECUTE不行?没见过那种程序,呵呵。程序大吗?什么类型的?<br>不过不管如何,使用CreateProcess来调用都应该能可以。
 
我想问题可能出在这里:你在调用外部程序时,没有指定被调用程序的启动目录。<br>ShellExecute(handle, &nbsp;'Open','c:/rav/update.exe',nil, &nbsp;'c:/rav/', &nbsp;sw_Show);
 
shine007言之有理
 
题外话,<br>注意!!! WinExec在Win98中不兼容,建议用ShellExecute !
 
to yzhshi: 用 CreateProcess &nbsp;不行,调用其他应用程序都可以<br><br>to kaida: 直接调用 快截方式 也不行<br><br>to shine007: 早就试了,还是不行。就因为考虑到了,我还用 ChDir先指定了一次,还是不行<br><br>问题有点棘手,用以上各种方式调用其他应用程序都可以,但惟独调用这个程序不行。这个程序比较大,600M左右,光发个EXE上来也没用。<br><br>而且调用该程序的时候,总是提示,非法调用。其意思就是检查到外部程序在调用它,怎么才能避免呢?<br><br>那假设各位写一段程序,而该程序不准外部任何程序调用,该如何去实现?只要知道了原理,也就好办了。
 
有点难度
 
1、外部程序中 SetCurrentDir<br>2、http://www.delphibbs.com/keylife/iblog_show.asp?xid=16834
 
那是有的程序最大化,最小化,时,你的参数有问题
 
什么程序这么大
 
估计是检测父进程是不是Exeplore了,这两天正好有空如果文件不大发到tseug@263.net
 
to SiWeiLiuLang: 我是指完整程序,并没有说执行程序<br><br>我把执行的程序打了个包放在 http://www1.go168.com/noncgi/test.rar<br>1.25M,希望大家看看,帮我找到解决的办法,不甚感激!先谢谢了
 
to tseug:<br><br>看到你真高兴,希望能解决问题
 
我下了你的test.rar<br>直接运行和用winexec或shellexecute调用都是一样的啊<br>Error:Cannot open game setting file [game.ini]<br>Please check if the directory is correct or re-install the game
 
我用以下代码测试,也没问题:<br>uses shellapi;<br><br>function ExecuteFile(const FileName, Params, DefaultDir: string; &nbsp;ShowCmd: Integer): THandle;<br>var<br> &nbsp;zFileName, zParams, zDir: array[0..79] of Char;<br>begin<br> &nbsp;Result := ShellExecute(Application.MainForm.Handle, nil,<br> &nbsp; &nbsp;StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),<br> &nbsp; &nbsp;StrPCopy(zDir, DefaultDir), ShowCmd);<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> &nbsp;ExecuteFile('C:/test/test.exe','','', SW_SHOWNORMAL);<br>end;
 
procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> &nbsp;winexec('C:/test/test.exe',sw_show);<br>end;<br>就这样不行吗?我都是这样用的。
 
上面的朋友,你们都是什么操作系统?<br>我是 win2000<br><br>即使我完整复制你们的代码,也是提示 检查到非法程序<br>我以为是注册表的问题,刚才把注册表所有和该程序有关的键值都删除完毕,但问题依旧<br><br>不过还是谢谢大家帮我测试,郁闷了
 
我的邮箱 523105@qq.com<br><br>哪位朋友可以把编译好的程序发到我的邮箱,不会是我的delphi有问题吧<br><br>调用其他程序都是正确的,谢谢!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部