ShellExecute的使用
深入浅出ShellExecute
译者:徐景周(原作:Nishant S)
Q: 如何打开一个应用程序?
ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW ); 或
ShellExecute(this->m_hWnd,"open","notepad.exe",
"c:\\MyLog.log","",SW_SHOW );
正如您所看到的,我并没有传递程序的完整路径。
Q: 如何打开一个同系统程序相关连的文档?
ShellExecute(this->m_hWnd,"open",
"c:\\abc.txt","","",SW_SHOW );
Q: 如何打开一个网页?
ShellExecute(this->m_hWnd,"open",
"","","", SW_SHOW );
Q: 如何激活相关程序,发送EMAIL?
ShellExecute(this->m_hWnd,"open",
"mailto:nishinapp@","","", SW_SHOW );
Q: 如何用系统打印机打印文档?
ShellExecute(this->m_hWnd,"print",
"c:\\abc.txt","","", SW_HIDE);
Q: 如何用系统查找功能来查找指定文件?
ShellExecute(m_hWnd,"find","d:\\nish",
NULL,NULL,SW_SHOW);
Q: 如何启动一个程序,直到它运行结束?
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "c:\\MyProgram.exe";
ShExecInfo.lpParameters = "";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
或:
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo; //This is an [in] parameter ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field if(CreateProcess("c:\\winnt\\notepad.exe", NULL,
NULL,NULL,FALSE,0,NULL,
NULL,&StartupInfo,&ProcessInfo))
{
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
}
else
{
MessageBox("The process could not be started...");
}
Q: 如何显示文件或文件夹的属性?
SHELLEXECUTEINFO ShExecInfo ={0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = "properties";
ShExecInfo.lpFile = "c:\\"; //can be a file as well ShExecInfo.lpParameters = "";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
最新评论[发表评论][文章投稿]查看所有评论推荐给好友打印
不错,只是,打开后的文件怎么自动关闭呢( fjhong102 发表于2005-3-13 10:06:00)
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "c:\\doc.doc";
ShExecInfo.lpParameters = "";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
基本功能是调用一个外部程序,等待返回时再继续运行。
本人需要调用一个WORD文档,其他软件以上代码都可以满足,可就是WORD文档在打开后,关闭会出长时间等待!不知为什么?怎么解决?请教?( QazQQ 发表于2005-3-4 12:52:00)
写的好啊,能不能多写一些这样的文章,太好了!
我这菜鸟需要你们这些高手指点啊!!!( fpqcj 发表于2004-10-15 17:47:00)
IPCONFIG >> C:\LOG.TXT
应如何处理?( argent 发表于2003-5-27 19:29:00)
二楼的朋友,打开拔号网络这样
::ShellExecute(NULL, "open", "C:\\WINDOWS\\rundll32.exe", "shell32.dll,Control_RunDLL c :\\windows\\system\\Telephon.cpl",NULL,SW_SHOW); ( yangxp 发表于2003-4-17 3:25:00)
是不是是从msdn翻译过来的?( dd 发表于2002-10-20 16:15:00)
如果,我想打开windows的拨号网络窗口该如何用ShellExecute?( 温柔一刀发表于2002-10-5 12:54:00)
请问,使用下面的方式:
void MyEXE(CString FileName)
{
ShellExecute(NULL, NULL, FileName, NULL, NULL, SW_SHOWNORMAL)
}
是否能动态生成要打开的文件名,而不是要指定特定名称的文件?( firewill 发表于
2002-9-24 12:40:00)
据我使用,文件路径必须是绝对路径。
( xg 发表于2002-9-22 0:14:00)
有问题,“find”怎么使用??
d:\\nish 到底是搜索路径还是你要搜索的文件名?
搜索路径和搜索文件名至少有一个不能给出!!!
这算什么搜索?
请指教!
( wukw 发表于2002-8-29 19:32:00)。
shellexecute用法
shellexecute用法(最新版)目录1.ShellExecute 简介2.ShellExecute 函数用法3.ShellExecute 参数详解4.ShellExecute 使用示例5.ShellExecute 注意事项正文【ShellExecute 简介】ShellExecute 是一个用于在 Windows 操作系统中执行外部程序或文件的 API 函数。
它可以用来打开一个新的进程,运行一个可执行文件,或者打开一个文档。
ShellExecute 函数在 Windows 系统中具有很高的灵活性和可用性,可以满足各种复杂场景的需求。
【ShellExecute 函数用法】ShellExecute 函数的原型为:```cint ShellExecute(__in HWND hWnd,__in LPCTSTR lpCmdLine,__in int nCmdShow);```函数需要三个参数:1.`hWnd`:一个窗口句柄,表示在何处打开新的程序或文件。
如果设置了此参数,那么新的程序或文件将在指定的窗口中打开;如果没有设置此参数,则在默认的窗口中打开。
2.`lpCmdLine`:一个字符串,表示要执行的外部程序或文件的路径。
可以是一个可执行文件、一个文档或者一个网址等。
3.`nCmdShow`:一个整数,表示新程序或文件的显示方式。
例如,可以设置为 SW_SHOW(显示窗口)或者 SW_MINIMIZE(最小化窗口)等。
【ShellExecute 参数详解】- `hWnd`:窗口句柄,可以是任何有效的窗口句柄,例如桌面、任务栏、对话框等。
如果设置了此参数,那么新的程序或文件将在指定的窗口中打开;如果没有设置此参数,则在默认的窗口中打开。
- `lpCmdLine`:字符串参数,表示要执行的外部程序或文件的路径。
可以是一个可执行文件、一个文档或者一个网址等。
此参数必须是以 null 结尾的字符串。
如果`lpCmdLine`中包含空格或其他特殊字符,需要用双引号将该字符串括起来。
pb中 shellexecute用法
pb中shellexecute用法在PowerBuilder(PB)中,ShellExecute函数通常用于启动外部应用程序或打开文件,它会调用操作系统的默认关联程序打开指定的文件或运行指定的可执行文件。
以下是ShellExecute函数的基本用法:integer li_return// 定义ShellExecute函数的原型FUNCTION ulong ShellExecute (uint hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, uint nShowCmd) LIBRARY "shell32.dll"// 示例用法li_return = ShellExecute(0, "open", "C:\Path\To\Your\File.txt", "", "", 1)IF li_return < 32 THENMessageBox("Error", "Failed to open file. Error code: " + String(li_return), StopSign!)END IF上述代码中,ShellExecute函数接受以下参数:•hwnd: 父窗口的句柄,通常可以设置为0,表示没有父窗口。
•lpOperation: 指定要执行的操作,常用的是"open"。
•lpFile: 指定要打开的文件的路径。
•lpParameters: 指定传递给应用程序的参数,通常为空字符串。
•lpDirectory: 指定启动应用程序时的工作目录,通常为空字符串。
•nShowCmd: 指定窗口的显示方式,常用的是1 表示显示正常。
ShellExecute详细用法
ShellExecute详细⽤法ShellExecute的功能是运⾏⼀个外部程序,或者打开⼀个已注册的⽂件、打开⼀个⽬录、打印⽂件等等功能,它可以打开电脑内的任何⽂件,也可以打开URL。
函数的原型:HINSTANCE ShellExecute(HWND hwnd,LPCTSTR lpOperation,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd);hWnd:⽤于指定⽗窗⼝的句柄。
当函数调⽤过程中出现错误时,它将作为Windows消息窗⼝的⽗窗⼝。
lpOperation:⽤于指定要进⾏的操作,当参数为NULL时,默认操作"open"。
"open",表⽰执⾏由lpFile参数指定的程序,或者打开由lpFile参数指定的⽂件或⽂件夹。
"explort",表⽰打开由lpFile参数指定的⽂件夹。
"print",表⽰打印由lpFile参数指定的⽂件。
lpParameters:若lpFile参数是⼀个可执⾏⽂件,则此参数指定命令⾏参数,否则此参数应设为NULL。
lpDirectory:⽤于指定默认⽬录。
nShowCmd:⽤于指定程序窗⼝初始显⽰⽅式。
#define SW_HIDE 0 /*隐藏窗体,并激活另⼀个窗体*/#define SW_SHOWNORMAL 1 /*与SW_RESTORE相同*/#define SW_SHOWMINIMIZED 2 /*激活并以最⼩化的形式显⽰窗体*/#define SW_SHOWMAXIMIZED 3 /*激活并以最⼤化的形式显⽰窗体*/#define SW_MAXIMIZE 3 /*最⼤化指定的窗体*/#define SW_SHOWNOACTIVATE 4 /*以上次的状态显⽰指定的窗体,但不激活它*/#define SW_SHOW 5 /*激活窗体,并将其显⽰在当前的⼤⼩和位置上*/#define SW_MINIMIZE 6 /*最⼩化指定的窗体,并激活另⼀个窗体*/#define SW_SHOWMINNOACTIVE 7 /*以最⼩化形式显⽰指定的窗体,但不激活它*/#define SW_SHOWNA 8 /*以当前的状态显⽰指定的窗体,但不激活它*/#define SW_RESTORE 9 /*以原本的⼤⼩和位置,激活并显⽰指定的窗体*/#define SW_SHOWDEFAULT 10 /*设置显⽰的状态由STARTUPINFO结构体指定*/打开计算器:1 ShellExecute(this->m_hWnd, "open", "calc.exe",NULL, NULL,SW_SHOWMAXIMIZED );打开⼀个指定的程序:1 ShellExecute(this->m_hWnd, "open","D:\\Program Files (x86)\\Notepad++\\notepad++.exe",NULL,NULL,SW_SHOWMAXIMIZED );2 ShellExecute(this->m_hWnd, "open", "notepad++.exe",NULL, "D:\\Program Files (x86)\\Notepad++",SW_SHOWMAXIMIZED );3 ShellExecute(this->m_hWnd,"open", "notepad++.exe",NULL, "D:\\Program Files (x86)\\Notepad++\\",SW_SHOWMAXIMIZED );4 //三个语句其结果都是⼀样打开⼀个指定的⽂件:1 ShellExecute(this->m_hWnd,"open", "F:\\C\\MFC\\MFC.pdf",NULL,NULL,SW_SHOWMAXIMIZED );2 ShellExecute(this->m_hWnd,"open", "MFC.pdf",NULL,"F:\\C\\MFC\\",SW_SHOWMAXIMIZED );打开⼀个指定的⽂件夹:1 ShellExecute(this->m_hWnd, "open", "F:\\C\\MFC",NULL,NULL,SW_SHOWMAXIMIZED );2 ShellExecute(this->m_hWnd, "open", NULL,NULL,"F:\\C\\MFC",SW_SHOWMAXIMIZED );3 ShellExecute(this->m_hWnd,"explore", NULL,NULL,"F:\\C\\MFC",SW_SHOWMAXIMIZED );打开URL:1 ShellExecute(this->m_hWnd, "open", "/2012/", NULL, NULL,SW_SHOWMAXIMIZED ); hWnd,可以设为NULL。
powerbuilder中shellexecute用法 -回复
powerbuilder中shellexecute用法-回复"PowerBuilder中ShellExecute用法"在PowerBuilder中,ShellExecute函数用于执行外部程序,并且它可以接受多个参数来指定要执行的程序、执行方式以及传递给程序的参数。
本文将逐步介绍使用ShellExecute函数的方法和注意事项。
一、ShellExecute函数的基本介绍ShellExecute函数是Windows API中的一个函数,它可以启动其他应用程序或打开文件。
在PowerBuilder中,可以使用这个函数来启动外部程序、打开文件、访问网页等等。
ShellExecute函数的基本格式如下:long ShellExecute(long hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, long nShowCmd)其中,各参数的含义如下:hwnd:父窗口的句柄,一般为当前应用程序的窗口句柄,用于指定新程序的父窗口。
lpOperation:要执行的操作,如"open"表示打开文件,默认值为"open"。
lpFile:要执行的程序或文件路径。
lpParameters:传递给程序的参数,可以为空。
lpDirectory:新程序的初始工作目录。
nShowCmd:新程序窗口的显示方式。
二、使用ShellExecute函数打开文件下面以打开一个文本文件为例,介绍如何使用ShellExecute函数。
1. 创建一个CommandButton控件,并在其Click事件中添加以下代码:long ll_returnstring ls_file, ls_operation, ls_param, ls_dirll_return = ShellExecute(0, "open", "c:\test.txt", "", "", 1)如果该文件存在,点击Button后将会打开文本文件,如果不存在则没有任何反应。
shellexecute用法
shellexecute用法ShellExecute 是一个Windows API 函数,用于在 Windows 操作系统中执行外部应用程序、打开文件、链接等操作。
它通常被用于从应用程序中打开其他文件、启动外部程序或访问 URL。
在不同的编程语言中,调用 ShellExecute 的方式可能有所不同,下面以C++为例,演示一下它的基本用法。
cpp#include <Windows.h>int main() {// 要打开的文件路径、程序路径或URLconst char* filePath = "C:\\path\\to\\file.txt";// 使用ShellExecute函数打开文件、程序或URLHINSTANCE result = ShellExecute(NULL, "open", filePath, NULL, NULL, SW_SHOWNORMAL);// 检查执行结果if ((int)result > 32) {// 成功执行return 0;} else {// 执行失败return 1;}}上述代码使用 ShellExecute 打开了指定的文件路径filePath,"open" 参数表示要打开这个文件,SW_SHOWNORMAL 参数表示以正常窗口状态打开。
如果 ShellExecute 返回值大于32,说明操作成功,否则操作失败。
请注意,ShellExecute 可以用于打开文件、程序和URL,但它不提供对操作结果的详细错误信息。
在实际使用时,您可能需要根据您的编程环境和需求适当调整参数和错误处理。
shell.shellexecute 方法
shell.shellexecute 方法`shell.shellexecute` 方法是一种Python语言中的方法,用于在操作系统上打开、运行或查看文件、URL或其他资源。
它将文件或资源作为参数,并在适当的程序中打开该资源。
该方法支持多种操作系统和文件类型,并提供了各种选项和参数以满足不同需求。
语法:`shell.shellexecute(file, operation='open', args='', path='', verb='', directory='', show=True)`参数说明:- `file`: 要操作或查看的文件或资源的名称或路径。
- `operation`: 要执行的操作类型。
默认值为“open”,表示打开文件或URL。
- `args`: 要传递给操作的附加参数。
- `path`: 要搜索文件或资源的路径。
默认值为空字符串。
- `verb`: 与操作关联的动词。
默认值为空字符串。
- `directory`: 指定要在其中打开文件或资源的目录。
- `show`: 指示程序是否应显示在屏幕上。
默认值为True,表示显示。
示例:pythonimport osimport shutilimport winshell# 在默认浏览器中打开网站winshell.ShellExecuteEx(lpVerb='open', lpFile='nShow=winshell.SW_SHOWNORMAL)# 在系统中打开文件file_path = 'C:/Users/user1/Documents/myfile.txt' winshell.shellexecute(file_path)# 以只读方式打开PDF文件pdf_path = 'C:/Users/user1/Documents/myfile.pdf' winshell.shellexecute(pdf_path, operation='read', verb='open', show=False)# 使用Windows默认的邮件程序发送电子邮件to = 'johndoe@example'subject = 'Test email'body = 'This is a test email from Python'winshell.ShellExecuteEx(lpVerb='open',lpFile='mailto:%s?subject=%s&body=%s' % (to, subject, body))。
shellexecute的参数详解
shellexecute的参数详解ShellExecute函数是Windows操作系统提供的一个API函数,用于执行一个外部程序,并且可以传递一些参数给该程序。
ShellExecute的参数如下:1. hwnd:该参数是一个窗口句柄,表示要将程序的输出显示在哪个窗口中,通常可以传入NULL表示不关心输出窗口。
3. lpFile:这个参数指定了要执行的程序或者文件的名称,可以是一个绝对路径,也可以是相对路径。
如果路径中包含空格或者其他特殊字符,需要使用双引号将整个路径括起来。
4. lpParameters:这个参数是一个字符串,用于指定传递给程序的命令行参数。
可以是一个空字符串,表示没有参数。
5. lpDirectory:这个参数用于指定程序的工作目录,如果程序是一个控制台应用程序,可以指定为空字符串。
6. nShowCmd:这个参数用于指定程序窗口的显示方式,可以是以下几个常用的值或者自定义的值:-SW_HIDE:隐藏窗口。
-SW_SHOW:窗口正常显示。
-SW_MAXIMIZE:最大化窗口。
-SW_MINIMIZE:最小化窗口。
7.返回值:函数执行成功返回TRUE,失败返回FALSE。
ShellExecute函数可以执行一个外部程序,比如打开一个文本文件,启动一个浏览器,启动一个视频播放器等。
下面是一个示例代码:```cpp#include <windows.h>int mainShellExecute(NULL, "open", "notepad.exe", "example.txt", "C:\\", SW_SHOW);return 0;```上面的代码会打开一个名为"example.txt"的文本文件,使用记事本程序打开,并且打开该文件的工作目录为"C:\\",窗口正常显示。
shellexecute 参数
shellexecute 参数`shellexecute` 是一个 Windows API 函数,用于在 Windows 操作系统中执行外部程序。
它可以通过传递参数来控制程序的行为。
以下是 `shellexecute` 函数的参数:1. `ExecutableFile`:要执行的外部程序的路径。
可以是绝对路径或相对路径。
2. `Operation`:执行操作的类型。
可以是以下值之一:* `SEE_MASK_NOCLOSEPROCESS`:执行程序并等待程序结束。
* `SEE_MASK_NOWAIT`:执行程序但不等待程序结束。
* `SEE_MASK_WAITALL`:执行程序并等待所有子进程结束。
3. `Options`:执行选项的类型。
可以是以下值之一:* `SEE_OPTION_DEFAULT`:默认选项。
* `SEE_OPTION_svm`:将文件作为 Windows 命令行参数处理。
4. `ParamCount`:参数的数量。
如果为 0,则表示没有参数。
5. `Params`:参数的字符串。
如果是 NULL,则表示没有参数。
以下是一个示例代码,展示如何使用 `shellexecute` 函数执行一个外部程序并传递参数:```c++#include <Windows.h>int main() {// 要执行的程序的路径LPCTSTR executableFile = TEXT("C:\\path\\to\\program.exe");// 执行操作的类型DWORD operation = SEE_MASK_NOWAIT;// 执行选项的类型DWORD options = SEE_OPTION_DEFAULT;// 参数的数量DWORD paramCount = 1;// 参数的字符串LPTSTR params = TEXT("arg1 arg2 arg3");// 执行程序ShellExecuteEx(NULL, TRUE, executableFile, params, NULL, options);return 0;}```注意,`shellexecute` 函数需要管理员权限才能正常工作。
excelvba shellexecute用法
excelvba shellexecute用法Shellexecute是Excel VBA中的一个方法,用于执行存储在Microsoft Scripting Host环境中的外部程序或命令。
这种方法可以用来调用外部应用程序或命令,并传递参数来执行它们。
在Excel VBA中使用Shellexecute方法可以方便地调用其他应用程序的功能,而无需手动启动这些应用程序。
一、语法Shellexecute方法的基本语法如下:```vbShellExecute(hwnd, verb, file, args, directory, nshow)```参数说明:* `hwnd`:可选参数,指定要打开的窗口的句柄。
如果省略此参数,则ShellExecute将根据文件类型启动一个新程序。
* `verb`:必需参数,指定要执行的操作的动词。
对于外部程序,常用的动词包括"open"(打开程序)和"run"(运行程序)。
* `file`:必需参数,指定要执行的文件的完整路径和文件名。
此参数可以是绝对路径或相对路径。
* `args`:可选参数,传递给外部程序的参数列表。
可以使用空格分隔多个参数。
* `directory`:可选参数,指定外部程序的位置。
如果省略此参数,则ShellExecute将在当前用户目录中查找文件。
* `nshow`:可选参数,指定是否显示外部程序窗口。
如果设置为True,则ShellExecute将显示外部程序的窗口。
二、使用示例下面是一个使用Shellexecute方法执行外部程序的示例代码:```vbaSub ExecuteExternalProgram()Dim path As StringDim args As StringDim result As Integer' 指定要执行的程序的路径和参数path = "C:\Path\to\program.exe"args = "arg1 arg2"' 执行程序并获取结果代码result = ShellExecute(0, "open", path, args, "", False)' 检查是否成功执行程序If result = 0 ThenMsgBox "Failed to execute program."ElseMsgBox "Program executed successfully."End IfEnd Sub```在上面的示例中,我们指定了要执行的程序的路径和参数,并使用Shellexecute方法打开该程序。
shellexecuteinfo 参数
shellexecuteinfo 参数shellexecuteinfo 参数详解及应用Shellexecuteinfo 参数是Windows操作系统中的一个结构体,用于执行外部程序或打开文件。
它提供了一种方便的方式来启动其他应用程序,执行命令,并且可以控制外部程序的运行方式。
在本文中,我们将详细解析shellexecuteinfo 参数,并探讨其在实际应用中的使用。
一、shellexecuteinfo 参数的结构和用法shellexecuteinfo 参数是一个结构体,包含了一系列成员变量,用于指定要执行的外部程序或打开的文件的相关信息。
下面是shellexecuteinfo 参数的主要成员变量及其作用:1. cbSize:结构体的大小,用于指定结构体的版本。
2. fMask:用于指定其他成员变量的标志,控制执行的方式和行为。
3. hwnd:指定调用窗口的句柄。
4. lpVerb:指定执行的动作,如“open”、“edit”等。
5. lpFile:指定要执行的外部程序或打开的文件路径。
6. lpParameters:指定传递给外部程序或打开的文件的参数。
7. lpDirectory:指定程序的工作目录。
8. nShow:指定程序窗口的显示方式。
9. hInstApp:返回程序实例的句柄。
10. lpIDList:指定要打开的文件的ID列表。
11. lpClass:指定文件的类型。
12. hkeyClass:指定文件类型的注册表键。
我们可以根据实际的需求,设置shellexecuteinfo 参数的成员变量,以达到我们想要的执行效果。
二、shellexecuteinfo 参数的应用场景shellexecuteinfo 参数可以在多种场景中使用,下面将介绍几个常见的应用场景。
1. 打开文件shellexecuteinfo 参数可以用于打开各种类型的文件,如文本文件、图片文件、音频文件等。
我们可以通过设置lpFile为文件路径来实现打开文件的操作。
