一、API函數 用法
1. 函數功能:
運行一個外部程序(或者是打開一個已註冊的文件、打開一個目錄、打印一個文件等等),並對外部程序有一定的控制。
(
hWnd: HWND; {指定父窗口句柄}
Operation: PChar; {指定動作, 譬如: 函數原型及參數含義如下:
open、print、runas、edit、explore、find}
FileName: PChar; {指定要打開的文件或程序}
Parameters: PChar; {給要打開的程序指定參數; 如果打開的是文件這裏應該是 nil}
Directory: PChar; {缺省目錄}
ShowCmd: Integer {打開選項}
): HINST; {執行成功會返回應用程序句柄; 如果這個值 <= 32, 表示執行錯誤}
//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}
3.返回值
4.使用方法:
用缺省的位圖編輯器打開一個叫iloveu.bmp的位圖文件,這個缺省的位圖編輯器可能是 Microsoft Paint, Adobe Photoshop, 或者 Corel PhotoPaint。
這個函數能打開任何文件,甚至是桌面和URL快捷方式( .ink或 .url)。 解析系統註冊表HKEY_CLASSES_ROOT中所有的內容,判斷啓動那一個執行程序,並且啓動一個新的實例或使用DDE將文件名連到一打開的實例。然後,
返回打開文件的應用的實例句柄。
(NULL, "open", "http://www.microsoft.com", NULL, NULL, SW_SHOWNORMAL);
這個代碼使你能訪問微軟的主頁。當 遇到文件名前面的“http:”時,可以判斷出要打開的文件是Web文件,隨之啓動Internet
Explorer 或者 Netscape Navigator 或者任何你使用的別的瀏覽器打開文件。
還能識別其它協議,象FTP、GOPHER。甚至識別“mailto”,如果文件名指向“mailto:[email protected]”,它啓動電子郵件程序並打開一個待編輯的新郵件,例如:
(NULL, "open",“mailto:[email protected]”, NULL, NULL, SW_SHOWNORMAL);打開新郵件窗口。 (NULL,"open","iloveu.bmp",NULL,NULL,SW_SHOWNORMAL);
總之, 函數就是如此簡單地打開磁盤文件和Internet文件。如果將第二個參數“OPEN”改爲“PRINT”或者“EXPLORE”, 將能打印文件和打開文件夾。 還有一個擴展函數 Ex,所帶參數中有一個特殊的結構,功能更強,或者任何你使用的別的瀏覽器打開文件。
5.特殊用法
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to paramcount do
if ParamStr(i)<>'' then showmessage(ParamStr(i));
end;
最後的那個參數,爲窗口指定可視性方面的一個命令。二、實例代碼
以下代碼僅適合於 Excel 2010:
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Sub ShowGraphic()
Dim FileName As String
Dim Result As Long
FileName = ThisWorkbook.path & "\flower.jpg"
Result = ShellExecute(0&, vbNullString, FileName, _
vbNullString, vbNullString, vbNormalFocus)
If Result < 32 Then MsgBox "Error"
End Sub
Sub OpenTextFile()
Dim FileName As String
Dim Result As Long
FileName = ThisWorkbook.path & "\textfile.txt"
Result = ShellExecute(0&, vbNullString, FileName, _
vbNullString, vbNullString, vbNormalFocus)
If Result < 32 Then MsgBox "Error"
End Sub
Sub OpenURL()
Dim URL As String
Dim Result As Long
URL =” http://nothingwmm.blog.163.com“
Result = ShellExecute(0&, vbNullString, URL, _
vbNullString, vbNullString, vbNormalFocus)
If Result < 32 Then MsgBox "Error"
End Sub
Sub StartEmail()
Dim Addr As String
Dim Result As Long
Addr = “mailto:[email protected]”
Result = ShellExecute(0&, vbNullString, Addr, _
vbNullString, vbNullString, vbNormalFocus)
If Result < 32 Then MsgBox "Error"
End Sub
Sub OpenFile()
Dim FileName As String
Dim Result As Long
FileName = "E:\1.sqd"
Result = ShellExecute(0&, vbNullString, FileName, _
vbNullString, vbNullString, vbNormalFocus)
If Result < 32 Then MsgBox "Error"
End Sub