用代碼定位硬盤上的文件(使用ShellExecute執行explorer /select命令,其它參數也很全)


問題:如何用代碼控制資源瀏覽器,並定位到指定的文件?

 

答:使用ShellExecute,配合explorer即可

ShellExecute(Application.Handle, 'open', PChar('explorer'), PChar('/select,”D:\ss\ee\test.txt”'), nil, SW_SHOWDEFAULT)

 

下面給出具體解釋

 

1、Explorer.exe

 

鮮為人知的參數 收藏 在Windows中,相信大家對“Explorer.exe”並不陌生!通常情況下,在“開始→運行”中輸 入“Explorer.exe”命令就能以“資源管理器”方式打開“我的文檔”。其實,Explorer.exe還有很多鮮為人知的參數。  命令格式

 

  Explorer [/n][/e][[,/root],[path]][[,/select],[path filename]]

 

  參數說明

 

  /n表示以“我的電腦”方式打開一個新的窗口,通常打開的是Windows安裝分區的根目錄。

 

  /e表示以“資源管理器”方式打開一個新的窗口,通常打開的也是Windows安裝分區的根目錄。

 

  /root,[path]表示打開指定的文件夾,/root表示只顯示指定文件夾下面的文件(夾),不顯示其它磁盤分區和文件夾;[path]表示指定的路徑。

 

  如果不加/root參數,而只用[path]參數,則可以顯示其它磁盤分區和文件夾中的內容。另外,[path]還可以指定網絡共享文件夾。

 

  /select,[path filename]表示打開指定的文件夾並且選中指定的文件,[path filename]表示指定的路徑和文件名。

 

  如果不加/select參數,則系統會用相應的關聯程序打開該文件。如果[path filename]不跟文件名就會打開該文件夾的上級目錄並選中該文件夾。

 

2、ShellExecute

 

ShellExecute(

  hWnd: HWND;        {指定父窗口句柄}

  Operation: PChar;  {指定動作, 譬如: open、print}

  FileName: PChar;   {指定要打開的文件或程序}

  Parameters: PChar; {給要打開的程序指定參數; 如果打開的是文件這里應該是 nil}

  Directory: PChar;  {缺省目錄}

  ShowCmd: Integer   {打開選項}

): HINST;            {執行成功會返回應用程序句柄; 如果這個值 <= 32, 表示執行錯誤}

 

//返回值可能的錯誤有:

                       = 0   {內存不足}

ERROR_FILE_NOT_FOUND   = 2;  {文件名錯誤}

ERROR_PATH_NOT_FOUND   = 3;  {路徑名錯誤}

ERROR_BAD_FORMAT       = 11; {EXE 文件無效}

SE_ERR_SHARE           = 26; {發生共享錯誤}

SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或無效}

SE_ERR_DDETIMEOUT      = 28; {超時}

SE_ERR_DDEFAIL         = 29; {DDE 事務失敗}

SE_ERR_DDEBUSY         = 30; {正在處理其他 DDE 事務而不能完成該 DDE 事務}

SE_ERR_NOASSOC         = 31; {沒有相關聯的應用程序}

 

//ShowCmd 參數可選值:

SW_HIDE            = 0;  {隱藏}

SW_SHOWNORMAL      = 1;  {用最近的大小和位置顯示, 激活}

SW_NORMAL          = 1;  {同 SW_SHOWNORMAL}

SW_SHOWMINIMIZED   = 2;  {最小化, 激活}

SW_SHOWMAXIMIZED   = 3;  {最大化, 激活}

SW_MAXIMIZE        = 3;  {同 SW_SHOWMAXIMIZED}

SW_SHOWNOACTIVATE  = 4;  {用最近的大小和位置顯示, 不激活}

SW_SHOW            = 5;  {同 SW_SHOWNORMAL}

SW_MINIMIZE        = 6;  {最小化, 不激活}

SW_SHOWMINNOACTIVE = 7;  {同 SW_MINIMIZE}

SW_SHOWNA          = 8;  {同 SW_SHOWNOACTIVATE}

SW_RESTORE         = 9;  {同 SW_SHOWNORMAL}

SW_SHOWDEFAULT     = 10; {同 SW_SHOWNORMAL}

SW_MAX             = 10; {同 SW_SHOWNORMAL}

--------------------------------------------------------------------------------

 

//舉例說明更多問題(別忘了 uses ShellAPI;):

 

{譬如用記事本打開一個文件}

begin

  ShellExecute(Handle, 'open', 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', nil, SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{第一個參數是用來當作錯誤提示窗口的父窗口的, 不能是 nil, 可以是 0(也就是桌面窗口)}

begin

  ShellExecute(0, 'open', 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', nil, SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{第二個參數如果是 nil, 也會默認位 open}

begin

  ShellExecute(0, nil, 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', nil, SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{文件路徑可以放在參數五}

begin

  ShellExecute(0, nil, 'notepad.exe', 'SchedLgU.Txt', 'C:\WINDOWS', SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{把參數三直接指定為要打開的文件, 文件將用對應默認程序打開; 次數參數四應為 nil}

begin

  ShellExecute(0, nil, 'SchedLgU.Txt', nil, 'C:\WINDOWS', SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{如果文件在: 程序目錄/當前目錄/System32/Windows/PATH環境變量中, 參數五也可以 nil}

begin

  ShellExecute(0, nil, 'SchedLgU.Txt', nil, nil, SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{如果參數三是個文件, 可以用參數二命令打印}

begin

  ShellExecute(0, 'print', 'SchedLgU.Txt', nil, nil, 1);

end;

--------------------------------------------------------------------------------

 

{用 IE 打開網頁}

begin

  ShellExecute(Handle, 'open', 'IExplore.EXE', 'about:blank', nil, SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{用火狐打開網頁}

begin

  ShellExecute(Handle, 'open', 'firefox.exe', 'about:blank', nil, SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{用默認瀏覽器打開網頁}

begin

  ShellExecute(Handle, 'open', 'Explorer.exe', 'about:blank', nil, SW_SHOWNORMAL);

end;

--------------------------------------------------------------------------------

 

{還是用默認瀏覽器打開網頁}

begin

  ShellExecute(0, nil, 'http://del.cnblogs.com', nil, nil, 1);

end;

http://blog.csdn.net/shuaihj/article/details/6869304


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM