紧急求助:打开文件的时候怎么获取文件名和路径?(100分)

W

wjj0310

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]打开一个文件的时候怎么获取到该文件的文件名和路径?
比如我点击D盘根目录下的a.doc文件,我就可以获得它的全路径即:D:/a.doc
有什么api可以调用吗?
还是有其他高招? -------------------最近比较郁闷这个,望能人赐教~![/blue]
 
procedure TForm1.Button1Click(Sender: TObject);
var
FileName: String;
begin

if FileListBox1.ItemIndex<>-1 then

FileName:= FileListBox1.FileName
else

FileName:= DirectoryListBox1.Directory;
Edit1.Text:= FileName;
SHGetFileInfo(pChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_DISPLAYNAME);
Edit2.Text:= FileInfo.szDisplayName;
SHGetFileInfo(pChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_TYPENAME);
Edit3.Text:= FileInfo.szTypeName;
SHGetFileInfo(pChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_ICON);
Image1.Picture.Icon.Handle:= FileInfo.hIcon;
end;
 
不知道你说的打开,是用什么方式打开,是程序中弹出对话框选择?
还是取exe路径?还是别的
ExtractFilePath(Application.ExeName)可取应用程序的所在路径
 
to:zbr
我的意思是,我们不能手动输入文件的名字如‘a.doc’,是要鼠标点到该文件
单击或者双击,这个事件就触发某个系统消息。

举个例子:就像是windows底下,你打开.doc文件,系统会运行word程序,问题就是word程序如何获取.doc文件的文件名和路径。

我就是不明白怎么样才能获得到它的完整路径名,
 
to :icc
打开文件的时间没有窗体,只要鼠标点击到该文件,我就可以获得它的路径名和文件名。觉得跟系统消息有关吧
我也下载了一个软件,它安装后点击文件,点击鼠标右键就有拷贝文件路径的按钮,点击就能把路径拷贝到剪贴板中。。。。。就是不明白怎么交互的。。
 
楼主,你是怎样打开文件呢 ? 用什么控件?
 
ExtractFilePath(Paramastr(0)+'yourTable');//路径和文件名一起取得
 
to zbr
没有控件。相当与监控鼠标动作,鼠标钩子函数之类的吧。。
 
怎么没有人帮帮我啊~!!!

帮顶下也好啊。。。等高人出现~!
 
是你自己打开还是别的程序打开?
 
举个例子:
就像是windows底下,你打开.doc文件,系统会运行word程序,问题就是word程序如何获取.doc文件的文件名和路径。
我就是不明白怎么样才能获得到它的完整路径名,

这是文件关联。当你试图打开.doc文件时,windows获得你的意图,从注册表中查找用什么
打开*.doc文件,假定找到是x:/ffff/yyy/word.exe,就运行类似于word.exe mmm(其中mmm是你doc的完整路径),这样word.exe就从命令行参数获得了你打开文件的完整路径。

上面全是猜测,并且word也不是那样调用的,通过{9DBD2C50-62AD-11d0-B806-00C04FD706EC}查找WORD接口调用的,但自己做的程序应该可以这样关联

另你的问题不清楚,不知道问什么问题。:)
 
WORD 是通过他的 DDE 打开
如果是自己程序的话,可以自己注册一个类型 然后 paramstr(1)就是文件 全名了
还有就是扫描系统的历史记录 打开一般的文件他都记录的
C:/Documents and Settings/Administrator/Recent
还有就是 HOOK API 与过滤驱动
 
他的问题我明白了,就是&quot;Windows下安装一个第三方软件&quot;,这个软件怎么在不启动最界面交互的情况下(没有任何窗体),监控你的鼠标点了哪文件,举例来说,就是KV,RSing,Winrar那样的程序
 
不是吧。。我的问题说的还不够清楚吗?
应该可以看的懂我的意图吧。。我说的就是我鼠标点击某文件文件,系统是不是就有相应的事件响应?我的目的就是要得到它的文件全路径。现在就是不知道用什么方法来读取它。
TO Toysun:我现在的目的就是要的到你所说的“mmm”文件的完整路径。你有试过吗?我做的是一个插件,我想的是激活插件后,插件里的一个变量的值就是当前我点击的文件的完整路径,该明白了点吧。。。还不明白我就晕了~!!

TO 菜鸟的问题:能不能给个实例,
 
你的问题是不是文件关联问题?
...
 
需求分析:
请实现以下程序:
1、最终文件可以是ocx、dll、exe,选一种即可
2、该程序安装、或在系统中注册(仅对ocx、dll)后,打开Windows资源管理器,用键点击文件或文件夹,其中多出一项菜单“复制路径”,选择该菜单,在文本控件中即可粘贴该文件夹或文件的路径。

举例:winrar中,如点击 ABC.doc,则右键菜单中有“添加到 ABC.rar”的菜单项,这个不会不明白吧?此程序与此类似

----月夜风筝
 
ExtractFilePath(Application.ExeName)
 
可以用一个opendialog空间打开文件,然后有extractfilepath(opendialog.filename)
 
to wbqlove:
你通过ExtractFilePath(Application.ExeName) 获取,其中ExeName是指什么?是文件名称还是可执行文件的名称?你这样的ExeName相当于打开‘a.doc’文件的可执行文件‘winword.exe’的名称吗~!

to 游荡孤云:
opendialog控件那是要手动选择,而且我要求的不是可视的,,,呵呵~!不然早搞定了~!
 
to :icc
我有下载了你说的那个软件,就是安装后在右键菜单里多了条复制路径。点击文件右键的复制路径后就可以把文件的路径复制到剪贴板上。。我就是要点文件就可以自动复制该文件的完整路径,再付值给我的某个变量。这个交互借口我找不到。。。不懂那软件是怎么从系统消息中得到路径信息的。。。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部