c语言的shellexecute函数打开文件和system函数打开文件有什么区别
这个字符串。“C:\a.exe” 在命令行下是可以直接运行的,所以直接填到参数里就行了。不过需要注意的是,字符串作为参数的时候“\”要做一下转义,要变成“\\”才行。
所以正确的使用方法应该是
system("C:\\a.exe");
注意,system在调用的时候需要加上#include 的头文件。
[create_time]2018-11-05 20:57:27[/create_time]2018-11-12 10:38:56[finished_time]2[reply_count]1[alue_good]DoramiHe[uname]https://himg.bdimg.com/sys/portrait/item/public.1.ee7a511b.CbHafK9LDnVW50VE3esYbg.jpg[avatar]知道合伙人互联网行家[slogan]2011年中山职业技术学院毕业,现担任毅衣公司京东小二[intro]338[view_count]
帮助调试C程序,ShellExecute的用法
在MFC做的基于对话框或SDI里很容易实现的。
某个关联控件的消息响应函数可以如下:
void CMyDlg::OnCalc()
{
ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
}
至于控制台下怎么实现就不清楚了。
[create_time]2006-12-01 12:02:40[/create_time]2006-12-13 10:38:11[finished_time]5[reply_count]0[alue_good]斌馥6829[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.4bea1b6.ctocRelWvCeSOEKYmT8vKg.jpg?time=2929&tieba_portrait_time=2929[avatar]TA获得超过567个赞[slogan]这个人很懒,什么都没留下![intro]1841[view_count]
ShellExecuteA怎么用?
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。1.CreateProcess因为使用复杂,比较少用。2.WinExec主要运行EXE文件。如:WinExec('Notepad.exe Readme.txt', SW_SHOW);3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。首先必须引用shellapi.pas单元:uses ShellAPI;1).标准用法 ShellExecute函数原型及参数含义如下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。 ●Operation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。 ●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。 ●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。 ●Directory:用于指定默认目录。 ●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。 若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。 上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。2).特殊用法 如果将FileName参数设置为“http:”协议格式,那么该函数将打开默认浏览器并链接到指定的URL地址。若用户机器中安装了多个浏览器,则该函数将根据Windows 9x/NT注册表中http协议处理程序(Protocols Handler)的设置确定启动哪个浏览器。 格式一:http://网站域名。 如:ShellExecute(handle, ‘open’, http://www.neu.edu.cn’, nil, nil, SW_SHOWNORMAL); 格式二:http://网站域名/网页文件名。 如:ShellExecute(handle, ‘open’, http://www.neu.edu.cn/default.htm’,nil,nil,SW_SHOWNORMAL); 如果将FileName参数设置为“mailt”协议格式,那么该函数将启动默认邮件客户程序,如Microsoft Outlook(也包括MicrosoftOutlook Express)或Netscape Messanger。若用户机器中安装了多个邮件客户程序,则该函数将根据Windows 9x/NT注册表中mailto协议处理程序的设置确定启动哪个邮件客户程序。 格式一:mailt 如:ShellExecute(handle,‘open’, ‘mailt’, nil, nil, SW_SHOWNORMAL);打开新邮件窗口。 格式二:mailt用户账号@邮件服务器地址 如:ShellExecute(handle, ‘open’,‘ mailtwho@mail.neu.edu.cn’, nil, nil, SW_SHOWNORMAL);打开新邮件窗口,并自动填入收件人地址。若指定多个收件人地址,则收件人地址之间必须用分号或逗号分隔开(下同)。 格式三:mailt用户账号@邮件服务器地址?subject=邮件主题&body=邮件正文 如:ShellExecute(handle, ‘open’, ‘ mailtwho@mail.neu.edu.cn?subject=Hello&Body=This is a test’, nil, nil,SW_SHOWNORMAL);打开新邮件窗口,并自动填入收件人地址、邮件主题和邮件正文。若邮件正文包括多行文本,则必须在每行文本之间加入换行转义字符%0a。例子(Delphi):在一个应用程序调用c:\Project1.exe;ShellExecute(handle, 'open','c:\Project1.exe','字串内容',nil, SW_SHOWNORMAL);在Project1.exe里可以调用:procedure Tform1.formCreate(Sender: TObject);vari: integer;beginfor i:=1 to paramcount doif ParamStr(i)'' then showmessage(ParamStr(i));end;最后的那个参数,为窗口指定可视性方面的一个命令。请用下述任何一个常数:SW_HIDE 隐藏窗口,活动状态给令一个窗口SW_MINIMIZE 最小化窗口,活动状态给令一个窗口SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态SW_SHOWMAXIMIZED 最大化窗口,并将其激活SW_SHOWMINIMIZED 最小化窗口,并将其激活SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口SW_SHOWNORMAL 与SW_RESTORE相同
[create_time]2019-03-23 11:27:45[/create_time]2019-04-04 13:45:58[finished_time]1[reply_count]1[alue_good]良玉小帝[uname]https://pic.rmb.bdstatic.com/bjh/user/a08c247ca70c37582a3fd7951dc2df1c.jpeg[avatar]个人日常精心汇总合集[slogan]个人日常精心汇总合集[intro]1741[view_count]
求Delphi中createprocess、pipe、winexec、shellexecute的详细用法
三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。 WinExec 两个参数,前一个指定路径,后一个指定显示方式。 ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。 CreateProcess 一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。 三个SDK函数( WinExec、ShellExec、CrateProcess )的语法:WinExec这个函数最简单,只有两个参数,原型如下: UINT WinExec( LPCSTR lpCmdLine, // 命令路径 UINT uCmdShow // 显示方式 );使用方法如下:WinExec("Notepad.exe", SW_SHOW); // 打开记事本WinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe需要注意的是若用 SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如Neterm,Calc 等等,就不会出现正常的 窗体,但是已经被加到任务列表里了。 ShellExecute原型如下: HINSTANCE ShellExecute( HWND hwnd, //父窗口句柄 LPCTSTR lpOperation, //操作, 打开方式 "edit","explore","open","find","print","NULL" LPCTSTR lpFile, //文件名,前面可加路径 LPCTSTR lpParameters, //参数 LPCTSTR lpDirectory, //默认文件夹 INT nShowCmd //显示方式 );使用方法如下:ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL); // 打开C:\Test.txt 文件ShellExecute(NULL, "open", "http://www.google.com",/ NULL, NULL, SW_SHOWNORMAL); // 打开网页www.google.comShellExecute(NULL,"explore", "D:\\C++",NULL,NULL,SW_SHOWNORMAL); // 打开目录D:\C++ShellExecute(NULL,"print","C:\\Test.txt",NULL,NULL, SW_HIDE); // 打印文件C:\Test.txtShellExecute不支持定向输出。 CreateProcess原型如下: BOOL CreateProcess( LPCTSTR lpApplicationName, //执行程序名 LPTSTR lpCommandLine, // 参数行 //下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性 LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes BOOL bInheritHandles, // 继承标志 DWORD dwCreationFlags, // 创建标志 LPVOID lpEnvironment, // 环境变量 LPCTSTR lpCurrentDirectory, // 运行该进程的初始目录 LPSTARTUPINFO lpStartupInfo, // 用于在创建子进程时设置各种属性 LPPROCESS_INFORMATION lpProcessInformation //用于在进程创建后接受相关信息 );使用方法如下: PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si,0,sizeof(si)); si.cb=sizeof(si); si.wShowWindow=SW_SHOW; si.dwFlags=STARTF_USESHOWWINDOW; bool fRet=CreateProcess("D:\\putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);可以看出,通过上面的几个不同的方法,都可以实现在应用程序中打开其他应用程序的目的,其中有些方法可能会麻烦一点,所以就需要我们根据不同的目的去选择最适合自己的方法去实现自己的目的! 关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的其他注意事项:1、定义头文件在头文件stdafx.h中必须定义以下两个头文件:#include // 可替换为 windows.h#include 如果定义了头文件 #include 的话就不必定义 #include 了,"windows.h" 不光是包含了"shellapi.h",它还定义了许多数据类型,如果没有这些数据类型,shellapi.h本身会出错。2、定义路径C++中所表示的路径要用 " \\ "而不是平常所用的" \ ",所以以上三个函数表示路径都为:Disk:\\Directory\\...\\File nameWinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED);ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL);bool fRet=CreateProcess("D:\\putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi); ///////////////////////////////////////////////////////////////WinAPI: WinExec - 运行外部程序//声明WinExec( lpCmdLine: LPCSTR; {文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量} uCmdShow: UINT {启动选项}): UINT;//返回值:大于 31 {调用成功}等于 0 {内存不足}ERROR_FILE_NOT_FOUND = 2; {文件名错误}ERROR_PATH_NOT_FOUND = 3; {路径名错误}ERROR_BAD_FORMAT = 11; {EXE 文件无效}//uCmdShow 参数可选值: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}--------------------------------------------------------------------------------//举例, 启动记事本:procedure TForm1.Button1Click(Sender: TObject);begin WinExec('notepad.exe', SW_SHOWNORMAL);end;
[create_time]2016-01-08 17:22:22[/create_time]2011-07-08 19:44:00[finished_time]2[reply_count]3[alue_good]李白韩信杜甫[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.9a124cce.7VbnteMrWzkgsfW3IAUC2g.jpg?time=2976&tieba_portrait_time=2976[avatar]TA获得超过1339个赞[slogan]这个人很懒,什么都没留下![intro]4186[view_count]
C语言shellexecute函数的用法
ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。有几个API函数都可以实现这些功能,但是在大多数情况下ShellExecute是更多的被使用的,同时它并不是太复杂。
返回值:
执行成功会返回应用程序句柄
返回的HINSTANCE可以将它转换为一个整数(%d),并比较它的值大于还是小于32或比较它的错误代码
返回值大于32表示执行成功
返回值小于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; {没有相关联的应用程序}
示例:
下面的示例演示如何启动一个应用程序或将文档加载到其关联的应用程序。Windows API ShellExecute() 函数是文档的不同于 Visual Basic Shell() 函数,可以将 ShellExecute() 函数传递的名称,它将启动关联的应用程序,然后将文件名传递给应用程序。
在 Visual Basic 中开始一个新项目。默认情况下,将创建 Form1。
将以下代码添加到 Form1 的通用声明部分:
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As String, ByVal lpszFile As String, ByVal lpszParams As String,ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Const SW_SHOWNORMAL = 1
Const SE_ERR_FNF = 2&
Const SE_ERR_PNF = 3&
Const SE_ERR_ACCESSDENIED = 5&
Const SE_ERR_OOM = 8&
Const SE_ERR_DLLNOTFOUND = 32&
Const SE_ERR_SHARE = 26&
Const SE_ERR_ASSOCINCOMPLETE = 27&
Const SE_ERR_DDETIMEOUT = 28&
Const SE_ERR_DDEFAIL = 29&
Const SE_ERR_DDEBUSY = 30&
Const SE_ERR_NOASSOC = 31&
Const ERROR_BAD_FORMAT = 11&
Function StartDoc(DocName As String) As Long
Dim Scr_hDC As Long
Scr_hDC = GetDesktopWindow()
StartDoc = ShellExecute(Scr_hDC, "Open", DocName, "", "C:\", SW_SHOWNORMAL)
End Function
Private Sub Form_Click()
Dim r As Long, msg As String
r = StartDoc("C:\WINDOWS\ARCADE.BMP")
If r <= 32 Then 'There was an error
Select Case r
Case SE_ERR_FNF
msg = "File not found"
Case SE_ERR_PNF
msg = "Path not found"
Case SE_ERR_ACCESSDENIED
msg = "Access denied"
Case SE_ERR_OOM
msg = "Out of memory"
Case SE_ERR_DLLNOTFOUND
msg = "DLL not found"
Case SE_ERR_SHARE
msg = "A sharing violation occurred"
Case SE_ERR_ASSOCINCOMPLETE
msg = "Incomplete or invalid file association"
Case SE_ERR_DDETIMEOUT
msg = "DDE Time out"
Case SE_ERR_DDEFAIL
msg = "DDE transaction failed"
Case SE_ERR_DDEBUSY
msg = "DDE busy"
Case SE_ERR_NOASSOC
msg = "No association for file extension"
Case ERROR_BAD_FORMAT
msg = "Invalid EXE file or error in EXE image"
Case Else
msg = "Unknown error"
End Select
MsgBox msg
End If
End Sub
特殊用法:
如果将FileName参数设置为“http:”协议格式,那么该函数将打开默认浏览器并链接到指定的URL地址。若用户机器中安装了多个浏览器,则该函数将根据Windows 9x/NT注册表中http协议处理程序(Protocols Handler)的设置确定启动哪个浏览器。
格式一:http://网站域名
如:ShellExecute(Handle, "open", "http:// ;
www.neu.edu.cn", "", "", SW_SHOWNORMAL);
格式二:http://网站域名/网页文件名
如:ShellExecute(Handle, "open"," http:// ;
www.neu.edu.cn/default.htm","","",
SW_SHOWNORMAL);
如果将FileName参数设置为“mailto:”协议格式,那么该函数将启动默认邮件客户程序,如Microsoft Outlook(也包括Microsoft Outlook Express)或Netscape Messanger。若用户机器中安装了多个邮件客户程序,则该函数将根据Windows 9x/NT注册表中mailto协议处理程序的设置确定启动哪个邮件客户程序。
格式一:mailto
如:ShellExecute(Handle,"open", "mailto:", "", "", SW_SHOWNORMAL);打开新邮件窗口。
格式二:mailto:用户账号@邮件服务器地址
如:ShellExecute(Handle, "open"," mailto:who@mail.neu.edu.cn", "", "", SW_SHOWNORMAL);打开新邮件窗口,并自动填入收件人地址。若指定多个收件人地址,则收件人地址之间必须用分号或逗号分隔开(下同)。
格式三:mailto:用户账号@邮件服务器地址
subject=邮件主题&body=邮件正文
如:ShellExecute(handle, ‘open’, ‘ mailto:who@mail.neu.edu.cn?subject=Hello&Body=This is a test’,"", "", SW_SHOWNORMAL);打开新邮件窗口,并自动填入收件人地址、邮件主题和邮件正文。若邮件正文包括多行文本,则必须在每行文本之间加入换行转义字符%0a。
例子(delphi):
在一个应用程序调用c:\Project1.exe;
ShellExecute(handle, 'open',"c:\Project1.exe",'字串内容',"", SW_SHOWNORMAL);
在Project1.exe里可以调用:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to paramcount do
if ParamStr(i)'' then showmessage(ParamStr(i));
end;
最后的那个参数,为窗口指定可视性方面的一个命令。
请用下述任何一个常数
SW_HIDE 隐藏窗口,活动状态给另一个窗口
SW_MINIMIZE 最小化窗口,活动状态给另一个窗口
SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED 最大化窗口,并将其激活
SW_SHOWMINIMIZED 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同
[create_time]2016-08-25 01:09:37[/create_time]2006-12-13 10:37:42[finished_time]4[reply_count]2[alue_good]艳阳高照的午后[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.beff7051.KabKXwD3pHp5nNXvFCFsng.jpg?time=4046&tieba_portrait_time=4046[avatar]TA获得超过1万个赞[slogan]这个人很懒,什么都没留下![intro]9812[view_count]
ShellExecute在哪个dll里面
ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。
有几个API函数都可以实现这些功能,但是在大多数情况下ShellExecute是更多的被使用的,同时它并不是太复杂。
[create_time]2017-02-07 20:54:35[/create_time]2017-02-07 23:47:37[finished_time]1[reply_count]0[alue_good]蓝月Alice[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.525f5f21.KgyPztxAt0CkWi9w5l4aHQ.jpg?time=3661&tieba_portrait_time=3661[avatar]TA获得超过1679个赞[slogan]这个人很懒,什么都没留下![intro]234[view_count]
VC怎么使用ShellExecute调用其他程序/文件(图片,文本,音频)给个完整的的程序例子
void CXxDlg::OnOK() {ShellExecute(GetSafeHwnd(),TEXT("PRINT"),TEXT("C:\\WINDOWS\\system.ini"),TEXT(""),NULL,SW_SHOWNORMAL);//打印文本ShellExecute(GetSafeHwnd(),TEXT("OPEN"),TEXT("C:\\WINDOWS\\system.ini"),TEXT(""),NULL,SW_SHOWNORMAL);//打开文本文件ShellExecute(GetSafeHwnd(),TEXT("OPEN"),TEXT("C:\\WINDOWS\\Media\\chimes.wav"),TEXT(""),NULL,SW_SHOWNORMAL);//播放音频ShellExecute(GetSafeHwnd(),TEXT("EDIT"),TEXT("C:\\WINDOWS\\Rhododendron.bmp"),TEXT(""),NULL,SW_SHOWNORMAL);//编辑图片ShellExecute(GetSafeHwnd(),TEXT("explore"),TEXT("C:\\WINDOWS"),TEXT(""),NULL,SW_SHOWNORMAL);//浏览文件夹}
[create_time]2016-03-30 18:07:06[/create_time]2015-02-08 16:10:42[finished_time]1[reply_count]2[alue_good]intehel[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.effcdaea.abbp3B271RI3I8t9t2BuOA.jpg?time=2898&tieba_portrait_time=2898[avatar]TA获得超过1287个赞[slogan]这个人很懒,什么都没留下![intro]379[view_count]
VB怎么添加ShellExecute函数声明
在模块声明段加: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
[create_time]2013-08-01 20:09:41[/create_time]2013-08-14 21:57:43[finished_time]2[reply_count]1[alue_good]匿名用户[uname]https://iknow-base.cdn.bcebos.com/yt/bdsp/icon/anonymous.png?x-bce-process=image/quality,q_80[avatar][slogan]这个人很懒,什么都没留下![intro]2320[view_count]
VB中的shell函数是干什么的?怎么用啊?
Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0,shell一个非常重要的特性是它可作为一种编程语言来使用。Shell的语法:Shell(PathName[,WindowStyle])。PathName 为必需参数,类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量。扩展资料:因为shell是一个解释器,所以它不能对为它编写的程序进行编译,而是在每次从磁盘加载这些程序时对它们进行解释,而程序的加载和解释都是非常耗时的。 针对此问题,许多shell(如BourneAgainShell)都包含shell函数,shell把这些函数放在内存中,这样每次需要执行它们时就不必再从磁盘读入。参考资料来源:百度百科-shell函数
[create_time]2020-03-24 08:36:03[/create_time]2006-04-07 17:45:05[finished_time]3[reply_count]9[alue_good]四舍五不入6[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.2e321ffe.MLb40bRZReQ2-28VMyqe-A.jpg?time=4520&tieba_portrait_time=4520[avatar]醉心答题,欢迎关注[slogan]这个人很懒,什么都没留下![intro]34910[view_count]VB SHELLEXECUTE 参数讲解
ShellExecute
分别参考了:
http://baike.baidu.com/view/1044533.htm
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}
http://support.microsoft.com/kb/224816
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
例子:
Private Sub Command1_Click()
Dim r As Long
r = ShellExecute(0, "open", "http://www.microsoft.com", 0, 0, 1)
End Sub
[create_time]2018-03-08 14:31:30[/create_time]2011-03-24 20:48:01[finished_time]1[reply_count]14[alue_good]zongsifeng[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.e3951094.ZLcajsCkapj26pSf4G1nBA.jpg?time=2980&tieba_portrait_time=2980[avatar]TA获得超过209个赞[slogan]这个人很懒,什么都没留下![intro]14699[view_count]