只有一个文件名而去找他的路径,好象是太困难了。FindFirstFile()也只能找一个文件夹下的,你就挨个的找吧!

解决方案 »

  1.   

    ExtractFilePath(Application.ExeName)得到的是当前程序的路径,而我要的并不是当前程序的路径,只是知道一个可执行的文件名,想得到它的路径。我用过ExtractFilePath(文件名),但是不行。有没有其他什么办法吗?
      

  2.   

    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 
       );
     
      

  3.   

    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.
    成功!!!!!!!!!!!!!!!!!!!!
      

  4.   

    结果找到ping.exe的绝对路径是:c:\windows\ping.exe
      

  5.   

    赫赫,BCB啊,那样的路径有限制的?
      

  6.   

    是有限制的啊,你不妨试试:先把你的ping.exe应用程序剪切到别的地方(如:c:\ping.exe),然后再试试你的程序,呵呵,你将看到什么?
    其限制就是它只能找windows或者system或本应用程序下的其他应用程序!
    我也一直在想这个问题的解决方案,关注!!!!
      

  7.   

    呵呵,ExtractFilePath(filename)也不可以!!!你试试?可别把应用程序放在特殊的目录中(windows或者system或本应用程序下)!
      

  8.   

    "ExtractFilePath或者ExtractFileDir "????你何不也试试???能行么???呵呵,结果是impossible!!!
      

  9.   

    Kingron(戒网中……):具体在程序中如何实现呢?理论都会…… 
      

  10.   

    第一:extractfilename and other 都可以,因为他们都找windows搜索路径
    第二:如果找不到说明搜索路径中没有该文件所在路径,你该告诉用户相应文件找不到的信息
    第三:如果你的程序依赖该文件,告诉用户程序无法执行信息
    第四:如果你在搜索该文件,那么用Kingron(戒网中……) 的法子吧,任何一个操作系统都不会做帮你搜索所有文件这件事的,m$也不会,如果你一定要费事找,那么可能M$windows的搜索功能可能藏在某一个dll中,在你的硬盘上翻翻看吧
      

  11.   

    >>Kingron(戒网中……):具体在程序中如何实现呢?理论都会……  
    难道自己不会用FindFirst() & FindNext() & FindClose()写一个递归过程吗?难道要别人给你源代码?
      

  12.   

    to Kingron(戒网中……): ee!速度会很慢啊,有更好的办法么?to:fontain():如果不在特殊目录下呢?你找不到而返回错误,那有什么用?我的目的是要找到某个地方的某个应用程序而去执行啊,找不到那……(所要调用的程序是肯定安装的,但是它不在特殊目录下(windows或system或本应用程序下))!
      

  13.   

    to wuyh78(阿华)
     如果你要找的的那个可执行文件不存在呢。