【VB声明】 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【别名】 ShellExecuteA【说明】 查找与指定文件关联在一起的程序的文件名 【返回值】 Long,非零表示成功,零表示失败。会设置GetLastError 【参数表】 hwnd ----------- Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框 lpOperation ---- String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它 lpFile --------- String,想用关联程序打印或打开一个程序名或文件名 lpParameters --- String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数 lpDirectory ---- String,想使用的完整路径 nShowCmd ------- Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
一个发邮件的例子: 模块中内容 Public 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 Public Const SW_SHOW = 5窗体中内容 Private Sub Label3_Click() Dim HyperJump Dim w w = Label3.Caption HyperJump = ShellExecute(0&, vbNullString, w, vbNullString, vbNullString, vbNormalFocus) End Sub Private Sub Command1_Click() k = "mailto:" + Text1.Text ShellExecute hwnd, "open", k, vbNullString, vbNullString, SW_SHOW End Sub
他要的是ShellExecuteEX,不是ShellExecute,呵呵 'Example Name:Implementing the API File Property Page '------------------------------------------------------------------------------ ' ' Form Code ' '------------------------------------------------------------------------------ Option ExplicitPrivate Type SHELLEXECUTEINFO cbSize As Long fMask As Long hwnd As Long lpVerb As String lpFile As String lpParameters As String lpDirectory As String nShow As Long hInstApp As Long lpIDList As Long 'Optional lpClass As String 'Optional hkeyClass As Long 'Optional dwHotKey As Long 'Optional hIcon As Long 'Optional hProcess As Long 'Optional End TypePrivate Const SEE_MASK_INVOKEIDLIST = &HC Private Const SEE_MASK_NOCLOSEPROCESS = &H40 Private Const SEE_MASK_FLAG_NO_UI = &H400Private Declare Function ShellExecuteEx Lib "shell32" _ Alias "ShellExecuteExA" _ (SEI As SHELLEXECUTEINFO) As Long Private Sub Form_Load() Command1.Caption = "Show Properties"
'assure string points to a valid file 'on your system Text1.Text = "c:\windows\notepad.exe"
End Sub Private Sub Command1_Click()
'show the properties dialog, passing the filename 'and the owner of the dialog Call ShowProperties(Text1.Text, Me.hwnd) End Sub Private Sub Command2_Click()
Unload Me
End Sub Private Sub ShowProperties(sFilename As String, hWndOwner As Long)
'open a file properties property page for 'specified file if return value Dim SEI As SHELLEXECUTEINFO
'Fill in the SHELLEXECUTEINFO structure With SEI .cbSize = Len(SEI) .fMask = SEE_MASK_NOCLOSEPROCESS Or _ SEE_MASK_INVOKEIDLIST Or _ SEE_MASK_FLAG_NO_UI .hwnd = hWndOwner .lpVerb = "properties" .lpFile = sFilename .lpParameters = vbNullChar .lpDirectory = vbNullChar .nShow = 0 .hInstApp = 0 .lpIDList = 0 End With
'call the API to display the property sheet Call ShellExecuteEX(SEI)
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【别名】
ShellExecuteA【说明】
查找与指定文件关联在一起的程序的文件名 【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError 【参数表】
hwnd ----------- Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框 lpOperation ---- String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它 lpFile --------- String,想用关联程序打印或打开一个程序名或文件名 lpParameters --- String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数 lpDirectory ---- String,想使用的完整路径 nShowCmd ------- Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
模块中内容
Public 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
Public Const SW_SHOW = 5窗体中内容
Private Sub Label3_Click()
Dim HyperJump
Dim w
w = Label3.Caption
HyperJump = ShellExecute(0&, vbNullString, w, vbNullString, vbNullString, vbNormalFocus)
End Sub
Private Sub Command1_Click()
k = "mailto:" + Text1.Text
ShellExecute hwnd, "open", k, vbNullString, vbNullString, SW_SHOW
End Sub
'Example Name:Implementing the API File Property Page '------------------------------------------------------------------------------
'
' Form Code
'
'------------------------------------------------------------------------------
Option ExplicitPrivate Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long 'Optional
lpClass As String 'Optional
hkeyClass As Long 'Optional
dwHotKey As Long 'Optional
hIcon As Long 'Optional
hProcess As Long 'Optional
End TypePrivate Const SEE_MASK_INVOKEIDLIST = &HC
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
Private Const SEE_MASK_FLAG_NO_UI = &H400Private Declare Function ShellExecuteEx Lib "shell32" _
Alias "ShellExecuteExA" _
(SEI As SHELLEXECUTEINFO) As Long
Private Sub Form_Load() Command1.Caption = "Show Properties"
'assure string points to a valid file
'on your system
Text1.Text = "c:\windows\notepad.exe"
End Sub
Private Sub Command1_Click()
'show the properties dialog, passing the filename
'and the owner of the dialog
Call ShowProperties(Text1.Text, Me.hwnd) End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub ShowProperties(sFilename As String, hWndOwner As Long)
'open a file properties property page for
'specified file if return value Dim SEI As SHELLEXECUTEINFO
'Fill in the SHELLEXECUTEINFO structure
With SEI
.cbSize = Len(SEI)
.fMask = SEE_MASK_NOCLOSEPROCESS Or _
SEE_MASK_INVOKEIDLIST Or _
SEE_MASK_FLAG_NO_UI
.hwnd = hWndOwner
.lpVerb = "properties"
.lpFile = sFilename
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
'call the API to display the property sheet
Call ShellExecuteEX(SEI)
End Sub
shellexecute hwnd, "open", 'http://www.csdn.net', 0, 0, 0