永发信息网

Delphi如何实现选中文件或文件夹

答案:2  悬赏:60  手机版
解决时间 2021-04-08 19:03
  • 提问者网友:雾里闻花香
  • 2021-04-08 00:23
Delphi如何实现选中文件或文件夹
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-04-08 01:07
13-954 加油!~ 呵呵,很久没见你有动静了!////////////////////楼主的意思其实是像迅雷下载完文件后,在"已下载"列表里对某个已下载的文件执行 右键->打开文件夹 一样的效果,也即直接打开文件所在的目录,并使文件呈蓝色的选定状态,很多软件都能实现这种功能,但相关资料貌似并不多,下边来我来说说这招武林上不外传的玄冥神掌(自吹自擂),揭开它的神效,其实我所知道的有两种方法能实现,先说第一种最简单的,就是用资源管理器命令开关,如下代码:uses Shellapi; //以便使用ShellExecute function OpenAndSetFileSelected(const aFullExename: String): Boolean;
begin
Result:= FileExists(aFullExename);
if Result then
ShellExecute(0, 'open', 'explorer.exe ', PChar('/select, '+aFullExename),nil,SW_NORMAL);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
OpenAndSetFileSelected('C:\WINDOWS\regedit.exe');
end;/////////////////////////////////可以在开始菜单->运行 里试试下边的命令,效果一样的explorer /select,c:\windows\regedit.exe顺便,把其它的开关也一并列出来吧更多信息syntaxEXPLORER.EXE [ /n ] [ /e ] [,/ root,<object> ] [ [,/ select ],< sub object...syntax
EXPLORER.EXE [ /n ] [ /e ] [,/ root,<object> ] [ [,/ select ],< sub object > ]
explorer 命令开关
/n: Opens a new window in single-paned (My Computer) view for each item
selected, even if the new window duplicates a window that is
already open./e: Uses Windows Explorer view. Windows Explorer view is most similar
to File Manager in Windows version 3.x. Note that the default view
is Open view./root,<object>: Specifies the root level of the specified view. The
default is to use the normal namespace root (the
desktop). Whatever is specified is the root for the
display./select,<sub object>: Specifies the folder to receive the initial
focus. If "/select" is used, the parent folder
is opened and the specified object is selected.
若要 to open Windows Explorer view to only objects explore on \\<server name >,use following syntax:
Explorer/e,/ 根,\\ < 服务器名 >
若要查看在 C:\WINDOWS\System32 文件夹并选择 CALC.EXE,使用以下语法:
explorer /select,c:\windows\system32\calc.exe
例子:(可以将下边的命令复制到"运行"里回车试试)打开 c:\windows 目录并选定 explorer.exe 文件
explorer.exe /select,"c:\windows\explorer.exe"
explorer.exe /n,/select,"c:\windows\explorer.exe" 加上 /n, 表示不管当前是否有已打开的c:\windows目录,都会打开一个新的窗口explorer.exe /n,/e,/select,"c:\windows\explorer.exe" 加上 /e, 表示展开左边的目录树
全部回答
  • 1楼网友:孤独的牧羊人
  • 2021-04-08 01:40
建议不要用findnextchangenotification,因为确实不清楚如何获得改变了的文件名,api的话可以使用readdirectorychangesw来完成这个任务(当然还有一个也很好的api shchangenotifyregister)。驱动层的监视更为好,不过这里我就不谈了。 char *strdir = "k:/temp/other"; handle hdirectory; hdirectory = createfile( strdir, generic_read|generic_write, file_share_read|file_share_write|file_share_delete, null, open_existing, file_flag_backup_semantics, null ); const unsigned int dwlistbaselength = sizeof( file_notify_information ) + max_path; char buffer[ dwlistbaselength ] = { 0 }; file_notify_information *pnotify = (file_notify_information *) buffer; dword bytesreturned = 0; readdirectorychangesw( hdirectory, pnotify, sizeof(buffer), true, file_notify_change_file_name, &bytesreturned, null, null ); showmessage( widechartostring( pnotify->filename ) ); 我是用bcb写的,你将她转为delphi就行了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯