困绕N天了。C/S模式,如何获取远程客户端的文件及图标到本地,类似资源管理器,管理远程主机 C/S模式,如何获取远程客户端的文件及图标到本地,类似资源管理器,管理远程主机,谢谢各位了。用什么控件或者什么函数等等,方法是什么。有朋友告诉我用TStringlist获取,但是无法获取远程图标,请各位帮帮忙。来者有分。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 远程图标?文件还是app的图标? 文件及文件夹的图标比如远程c:\下的所有文件文件夹还是文件夹显示程序用程序图标显示文本用文本的图标显示rar用rar的图标显示文件和图标一并读取到本地就好象一个本地的资源管理器管理的确实远程机器的文件 就是xxmmmx 的想法取本地应有的图标对应远程主机文件的图标但是这是如何实现呢?包括获取远程文件夹列表 顺便请教一下samples里面的shelllistview是否能用到远程主机上用来获取远程主机文件列表呢?最重要的是如何获取远程主机列表获取到的列表如何与本地图标关联起来我谢谢各位了 我知道你写的CS程序,难道你在服务器上把一个文件夹共享都不行(不会)吗?比方说你的服务器的挨劈为:192.168.1.110,你共享了一个文件夹ShareFiles那你在程序中就可以象访问本机文件夹一样访问"\\192.168.1.110\ShareFiles\",下面是列出某个目录下文件的代码://Dir为要遍历的路径,Files用来盛放Dir下的文件名,bRecursive用来表示是否变量子文件夹procedure LoadDirFiles(Dir: string; Files: TStrings; bRecursive: Boolean); procedure DoLoad(Dir: string; Files: TStrings); var F: TSearchRec; hFind: Integer; begin if (Dir <> '') and (Dir[Length(Dir)] <> '\') then Dir := Dir + '\'; hFind := FindFirst(Dir + '*.*', faAnyFile, F); while hFind = 0 do begin if (F.Name <> '.') and (F.Name <> '..') then begin if F.Attr and faDirectory <> faDirectory then Files.Add(Dir + F.Name) else if bRecursive then DoLoad(Dir + F.Name, Files); end; hFind := FindNext(F); end; FindClose(F); end;begin Files.BeginUpdate; try Files.Clear; DoLoad(Dir, Files); finally Files.EndUpdate; end;end;//eg:procedure TForm1.Button1Click(Sender: TObject);begin LoadDirFiles(ExtractFilePath(Application.ExeName), Memo1.Lines, False);end; //eg:procedure TForm1.Button1Click(Sender: TObject);begin LoadDirFiles('\\192.168.1.110\ShareFiles\', Memo1.Lines, False);end; 我使用的就是blazingfire的方法,列举某个文件夹下的所有文件名。可是问题是第一、不能共享服务器上的文件。第二、获取不到文件的图标。xxmmmx 的想法很好,使用本地的图标来关联。在我实际操作中有一个问题,我用的是TSTRINGLIST,当他遇到中间有空格的文件名后,会自动分开,比如我获取到的文件名字符串为'aaa,bbb,ccc.txt,ddd.exe,323 (2) 22.rar,111.txt'这里他会将'323' '(2)' '22.rar'进行分开,请问一下如何不让他们分开?我自定义了Delimiter属性与QuoteChar,还是不能将他们合并在一起,请问有什么方法吗?在一个就是如何取得本地图标将类型文件关联起来? 取网络中文件的图标那是不可能的了,你只能取到你网上那个文件类型在你本机上的相应图标,如:你网络上的那个文件是aa.jpg.那你就在你本机在建个XX.JPG然后去读出这个XX.JPG的图标来显示了。 ppdjl 能说的详细点吗?如何读本机的图标?还有一个问题就是TSTRINGLIST 分割字符串,遇到有空格的会自动分割,我不想让他分割,该怎么做?比如我获取到的文件名字符串为'aaa,bbb,ccc.txt,ddd.exe,323 (2) 22.rar,111.txt'这里他会将'323' '(2)' '22.rar'进行分开,请问一下如何不让他们分开? 分割字符串用ExtractStrings()就可以了 你可以下载Indy组件,当中的Demo有个管理图片的,你参考一下。 这个比较简单var FileInfo: TSHFileInfo; ico: TIcon;begin SHGetFileInfo('E:\TestCode\HookTest.rar', 0, FileInfo, SizeOf(FileInfo), SHGFI_SMALLICON + SHGFI_ICON); ico := TIcon.Create; try ico.Handle := FileInfo.hIcon; Image1.Picture.Icon := ico; finally Ico.Free; end;end; 好了,差不多了,结贴。特别感谢blazingfire的热情帮助来者都有分,谢谢各位 请问TACTION问题 跪求XML问题 急,帮忙!!一条SQL语句送分100 怎样实现那种邮箱地址是个链接,,用户一点就会调出默认的邮件程序(如FOXMAIL) 请问如何改变Listbox中特定某一项的字体颜色???急!!! Delphi:如何做成PDF格式的文件?解决送分!Come on delphi串口通信编程的那一本书比较好??是黄军的好一本吗?是叫什么?? 如何中止Timer组件正在执行的OnTimer事件! 快来看看 做安装程序的问题 多线程插入access数据,dbgrid不能即时更新! OCX控件的问题
比如远程c:\下的所有文件
文件夹还是文件夹显示
程序用程序图标显示
文本用文本的图标显示
rar用rar的图标显示
文件和图标一并读取到本地就好象一个本地的资源管理器
管理的确实远程机器的文件
取本地应有的图标对应远程主机文件的图标
但是这是如何实现呢?
包括获取远程文件夹列表
最重要的是如何获取远程主机列表
获取到的列表如何与本地图标关联起来
我谢谢各位了
比方说你的服务器的挨劈为:192.168.1.110,你共享了一个文件夹ShareFiles
那你在程序中就可以象访问本机文件夹一样访问"\\192.168.1.110\ShareFiles\",下面是列出某个目录下文件的代码:
//Dir为要遍历的路径,Files用来盛放Dir下的文件名,bRecursive用来表示是否变量子文件夹
procedure LoadDirFiles(Dir: string; Files: TStrings; bRecursive: Boolean); procedure DoLoad(Dir: string; Files: TStrings);
var
F: TSearchRec;
hFind: Integer;
begin
if (Dir <> '') and (Dir[Length(Dir)] <> '\') then
Dir := Dir + '\';
hFind := FindFirst(Dir + '*.*', faAnyFile, F);
while hFind = 0 do
begin
if (F.Name <> '.') and (F.Name <> '..') then
begin
if F.Attr and faDirectory <> faDirectory then
Files.Add(Dir + F.Name)
else if bRecursive then
DoLoad(Dir + F.Name, Files);
end;
hFind := FindNext(F);
end;
FindClose(F);
end;begin
Files.BeginUpdate;
try
Files.Clear;
DoLoad(Dir, Files);
finally
Files.EndUpdate;
end;
end;//eg:
procedure TForm1.Button1Click(Sender: TObject);
begin
LoadDirFiles(ExtractFilePath(Application.ExeName), Memo1.Lines, False);
end;
//eg:
procedure TForm1.Button1Click(Sender: TObject);
begin
LoadDirFiles('\\192.168.1.110\ShareFiles\', Memo1.Lines, False);
end;
我使用的就是blazingfire的方法,列举某个文件夹下的所有文件名。可是问题是第一、不能共享服务器上的文件。第二、获取不到文件的图标。
xxmmmx 的想法很好,使用本地的图标来关联。
在我实际操作中有一个问题,我用的是TSTRINGLIST,当他遇到中间有空格的文件名后,会自动分开,比如我获取到的文件名字符串为'aaa,bbb,ccc.txt,ddd.exe,323 (2) 22.rar,111.txt'这里他会将'323' '(2)' '22.rar'进行分开,请问一下如何不让他们分开?我自定义了Delimiter属性与QuoteChar,还是不能将他们合并在一起,请问有什么方法吗?
在一个就是如何取得本地图标将类型文件关联起来?
ppdjl 能说的详细点吗?如何读本机的图标?还有一个问题就是TSTRINGLIST 分割字符串,遇到有空格的会自动分割,我不想让他分割,该怎么做?
比如我获取到的文件名字符串为'aaa,bbb,ccc.txt,ddd.exe,323 (2) 22.rar,111.txt'这里他会将'323' '(2)' '22.rar'进行分开,请问一下如何不让他们分开?
var
FileInfo: TSHFileInfo;
ico: TIcon;
begin
SHGetFileInfo('E:\TestCode\HookTest.rar', 0, FileInfo, SizeOf(FileInfo),
SHGFI_SMALLICON + SHGFI_ICON);
ico := TIcon.Create;
try
ico.Handle := FileInfo.hIcon;
Image1.Picture.Icon := ico;
finally
Ico.Free;
end;
end;