分享

VB ShellExecute 函数应用技巧(ZT)

 ufo999 2012-06-08
ShellExecute 
声明: 
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 
原型: 
HINSTANCE ShellExecute( 
  HWND hwnd,          //父窗口句柄 
  LPCTSTR lpOperation,     //操作,"open","print","explore" 
  LPCTSTR lpFile,       //文件名,前面可加路径 
  LPCTSTR lpParameters,    //参数 
  LPCTSTR lpDirectory,     //默认文件夹 
  INT nShowCmd         //显示方式 
); 

打开一个应用程序 
ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW ); 
 
ShellExecute(this->m_hWnd,"open","notepad.exe","c:MyLog.log","",SW_SHOW ); 

打开一个同系统程序相关连的文档 
ShellExecute(this->m_hWnd,"open","c:abc.txt","","",SW_SHOW ); 

激活相关程序,发送EMAIL 
ShellExecute(this->m_hWnd,"open","mailto:xxf@5y6s.com","","", SW_SHOW ); 

打开文件夹 

ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL) 

用系统打印机打印文档 
ShellExecute(this->m_hWnd,"print","c:abc.txt","","", SW_HIDE); 

本函数还可以用来连接到网页,照下面写就行了: 
ShellExecute 0&, vbNullString, "", vbNullString, vbNullString, vbNormalFocus 

  或者这样写来发送Email: 
ShellExecute me.hwnd, "open", "mailto:xxf@5y6s.com", vbNullString, vbNullString, SW_SHOW 

另外有ShellExecute的替代用法,更加简单实用,不用API,一句Shell搞定! 

连接到网页: 
  Shell "rundll32.exe url.dll,FileProtocolHandler " 
打开文件: 
  Shell "rundll32.exe url.dll,FileProtocolHandler " & App.Path & "SHELLTST.TXT" 
ShellExecute API应用整理 


作者: yanek 

1. 执行“打开”,“查找”,“资源管理器”和“打印” 
必要的声明: 
’ nShowCmd 
Public Const SW_HIDE = 0 
Public Const SW_SHOWNORMAL = 1 
Public Const SW_SHOWMINIMIZED = 2 
Public Const SW_SHOWMAXIMIZED = 3 
Public Const SW_MAXIMIZE = 3 
Public Const SW_SHOWNOACTIVATE = 4 
Public Const SW_SHOW = 5 
Public Const SW_MINIMIZE = 6 
Public Const SW_SHOWMINNOACTIVE = 7 
Public Const SW_SHOWNA = 8 
Public Const SW_RESTORE = 9 

’ Error Code 
Public Const ERROR_FILE_NOT_FOUND = 2 
Public Const ERROR_PATH_NOT_FOUND = 3 
Public Const ERROR_BAD_FORMAT = 11 

Public Const SE_ERR_FNF = 2 
Public Const SE_ERR_PNF = 3 
Public Const SE_ERR_ACCESSDENIED = 5 
Public Const SE_ERR_OOM = 8 
Public Const SE_ERR_SHARE = 26 
Public Const SE_ERR_ASSOCINCOMPLETE = 27 
Public Const SE_ERR_DDETIMEOUT = 28 
Public Const SE_ERR_DDEFAIL = 29 
Public Const SE_ERR_DDEBUSY = 30 
Public Const SE_ERR_NOASSOC = 31 
Public Const SE_ERR_DLLNOTFOUND = 32 

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 



“打开“操作 
ShellExecute Me.hwnd, "open", _ 
Text1.Text, _ 
vbNullString, vbNullString, _ 
SW_SHOWNORMAL 


“查找“操作 
ShellExecute Me.hwnd, "find", _ 
LocalDir, _ 
vbNullString, vbNullString, _ 
SW_SHOWNORMAL 


“打印“操作 
ShellExecute Me.hwnd, "print", _ 
Text1.Text, _ 
vbNullString, vbNullString, _ 
SW_SHOWNORMAL 


“资源管理器“ 
ShellExecute Me.hwnd, "explore", _ 
LocalDir, _ 
vbNullString, vbNullString, _ 
SW_SHOWNORMAL 


打开“我的文档“ 
ShellExecute Me.hwnd, _ 
"open", "explorer", _ 
vbNullString, vbNullString, _ 
SW_SHOWNORMAL 


打开“我的电脑“ 
’ 我的电脑 
’ HKEY_CLASSES_ROOTCLSID’ {20D04FE0-3AEA-1069-A2D8-08002B30309D} 

ShellExecute Me.hwnd, "open", _ 
"explorer", _ 
"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", _ 
vbNullString, SW_SHOWNORMAL 


打开“网上邻居“ 
’ 网上邻居 
’ HKEY_CLASSES_ROOTCLSID’ {208D2C60-3AEA-1069-A2D7-08002B30309D} 

ShellExecute Me.hwnd, "open", _ 
"explorer", _ 
"::{208D2C60-3AEA-1069-A2D7-08002B30309D}", _ 
vbNullString, SW_SHOWNORMAL 


打开“回收站“ 
’ 回收站 
’ HKEY_CLASSES_ROOTCLSID’ {645FF040-5081-101B-9F08-00AA002F954E} 

ShellExecute Me.hwnd, "open", _ 
"explorer", _ 
"::{645FF040-5081-101B-9F08-00AA002F954E}", _ 
vbNullString, SW_SHOWNORMAL 


ShellExecuteEx API演示 
必要声明: 
Public 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 
’ Optional fields 
lpIDList As Long 
lpClass As String 
hkeyClass As Long 
dwHotKey As Long 
hIcon As Long 
hProcess As Long 
End Type 

’ fMask 
Public Const SEE_MASK_CLASSKEY = &H3 
Public Const SEE_MASK_CLASSNAME = &H1 
Public Const SEE_MASK_CONNECTNETDRV = &H80 
Public Const SEE_MASK_DOENVSUBST = &H200 
Public Const SEE_MASK_FLAG_DDEWAIT = &H100 
Public Const SEE_MASK_FLAG_NO_UI = &H400 
Public Const SEE_MASK_HOTKEY = &H20 
Public Const SEE_MASK_ICON = &H10 
Public Const SEE_MASK_IDLIST = &H4 
Public Const SEE_MASK_INVOKEIDLIST = &HC 
Public Const SEE_MASK_NOCLOSEPROCESS = &H40 

Public Declare Function ShellExecuteEX Lib "shell32.dll" _ 
Alias "ShellExecuteEx" _ 
(lpExecInfo As SHELLEXECUTEINFO) As Boolean 


执行调用“文件属性“对话框 
Dim dwReturn As Long 
Dim lpExecInfo As SHELLEXECUTEINFO 

With lpExecInfo 
.cbSize = Len(lpExecInfo) 
.fMask = SEE_MASK_NOCLOSEPROCESS or _ 
SEE_MASK_INVOKEIDLIST or _ 
SEE_MASK_FLAG_NO_UI 
.hwnd = Me.hwnd 
.lpVerb = "properties" 
.lpFile = LocalDir & File1.FileName 
.lpParameters = vbNullChar 
.lpDirectory = vbNullChar 
.nShow = SW_SHOWNORMAL 
.hInstApp = 0 
.lpIDList = 0 
End With 

dwReturn = ShellExecuteEX(lpExecInfo) 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多