HINSTANCE FindExecutable( LPCTSTR lpFile, // pointer to string for filename LPCTSTR lpDirectory, // pointer to string for default directory LPTSTR lpResult // pointer to buffer for string for executable file on return );
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ShellAPi, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); var buf:array[0..256] of char; begin FindExecutable(PChar('ping.exe'),'',buf); ShowMessage(String(buf)); end;end. 成功!!!!!!!!!!!!!!!!!!!!
第一:extractfilename and other 都可以,因为他们都找windows搜索路径 第二:如果找不到说明搜索路径中没有该文件所在路径,你该告诉用户相应文件找不到的信息 第三:如果你的程序依赖该文件,告诉用户程序无法执行信息 第四:如果你在搜索该文件,那么用Kingron(戒网中……) 的法子吧,任何一个操作系统都不会做帮你搜索所有文件这件事的,m$也不会,如果你一定要费事找,那么可能M$windows的搜索功能可能藏在某一个dll中,在你的硬盘上翻翻看吧
to Kingron(戒网中……): ee!速度会很慢啊,有更好的办法么?to:fontain():如果不在特殊目录下呢?你找不到而返回错误,那有什么用?我的目的是要找到某个地方的某个应用程序而去执行啊,找不到那……(所要调用的程序是肯定安装的,但是它不在特殊目录下(windows或system或本应用程序下))!
LPCTSTR lpDirectory, // pointer to string for default directory
LPTSTR lpResult // pointer to buffer for string for executable file on return
);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellAPi, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var buf:array[0..256] of char;
begin
FindExecutable(PChar('ping.exe'),'',buf);
ShowMessage(String(buf));
end;end.
成功!!!!!!!!!!!!!!!!!!!!
其限制就是它只能找windows或者system或本应用程序下的其他应用程序!
我也一直在想这个问题的解决方案,关注!!!!
第二:如果找不到说明搜索路径中没有该文件所在路径,你该告诉用户相应文件找不到的信息
第三:如果你的程序依赖该文件,告诉用户程序无法执行信息
第四:如果你在搜索该文件,那么用Kingron(戒网中……) 的法子吧,任何一个操作系统都不会做帮你搜索所有文件这件事的,m$也不会,如果你一定要费事找,那么可能M$windows的搜索功能可能藏在某一个dll中,在你的硬盘上翻翻看吧
难道自己不会用FindFirst() & FindNext() & FindClose()写一个递归过程吗?难道要别人给你源代码?
如果你要找的的那个可执行文件不存在呢。