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);
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