`
newweapon
  • 浏览: 25550 次
  • 性别: Icon_minigender_1
  • 来自: hefei
最近访客 更多访客>>
社区版块
存档分类
最新评论

ShellExecute与ShellExecuteEx的用法

阅读更多
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","http://www.google.com","","", SW_SHOW );

Q: 如何激活相关程序,发送EMAIL?
ShellExecute(this->m_hWnd,"open","mailto:nishinapp@yahoo.com","","", 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);

From: http://www.cppblog.com/bidepan2023/archive/2007/07/20/28419.html
分享到:
评论

相关推荐

    shellexecute与shellexecuteex的区别

    在探讨“shellexecute与shellexecuteex的区别”这一主题时,我们深入到Win32和Windows CE系统中自带的两种用于打开或执行外部应用程序的API函数——`ShellExecute`与`ShellExecuteEx`。这两者在功能上相似,但实现...

    使用ShellExecuteEx调用控制台程序(exe)并传入多个参数源码

    在Windows编程中,有时我们需要通过代码来启动外部应用程序,并向其传递参数,这通常是通过API函数来实现的。本文将详细讲解如何使用`...通过这种方式,你可以更直观地理解`ShellExecuteEx`函数的使用方法。

    使用ShellExecuteEx调用控制台程序(exe)并传入多个参数

    `image`可能是一些相关的图片资源,而`ShellExecuteExDemo`可能是项目的一个示例程序或者库文件,用于进一步了解和学习`ShellExecuteEx`的使用方法。 总之,`ShellExecuteEx`是一个强大的工具,能够帮助开发者在...

    ShellExecuteHooks

    3. 设置钩子:使用SetWindowsHookEx函数,设置一个系统级钩子,目标是ShellExecute或ShellExecuteEx的入口点。 4. 处理钩子事件:当ShellExecute或ShellExecuteEx被调用时,会触发钩子函数。在钩子函数中,我们可以...

    精选_使用ShellExecute函数实现以管理员身份运行程序_源码打包

    总的来说,使用`ShellExecute`函数以管理员身份运行程序是一种常见的方法,但需要配合适当的用户交互和权限管理策略。源码打包时,除了考虑运行时权限,还要注意代码的兼容性、安全性以及用户体验。理解并妥善处理...

    Delphi深度探索之外壳执行操作记录器

    标题与描述均提到了“Delphi深度探索之外壳执行操作记录器”,这表明文章将深入探讨在Delphi环境中实现对外壳执行操作(如通过ShellExecute或ShellExecuteEx函数调用外部程序)的记录机制。虽然标签为空,但根据标题...

    mfc进程函数ShellExecuteEx

    本文介绍了`ShellExecuteEx`函数的基本用法及常见问题解决方法,同时提供了获取进程句柄和关闭窗口的具体步骤。希望这些内容对您有所帮助。在实际开发过程中,合理利用这些API函数可以极大地提高开发效率并减少错误...

    PB中打开本地文件的四种方法的关键代码.rar

    对于PB10及更高版本,可以使用`ShellExecuteEx` API函数,它比`ShellExecuteA`更强大,支持更多选项。使用前同样需要导入`user32`库。关键代码如下: ```pb import library "user32" alias for "ShellExecuteExA" ...

    vista uac 下调用外部程序

    1. **使用ShellExecuteEx函数**:相比于`Shell`和`ShellExecute`,`ShellExecuteEx`提供了更多的选项和控制。通过设置其结构体成员`lpVerb`为"runas",我们可以请求以管理员权限运行程序。但是,这样做会触发UAC提示...

    精彩编程与编程技巧-SHELL语句用法心得...

    在计算机编程领域,尤其是在Windows操作系统下,掌握SHELL语句的使用方法是非常重要的技能之一。SHELL语句通常用于执行各种系统级别的任务,比如打开应用程序、管理文件和目录等。本文将详细介绍SHELL语句的一些高级...

    调用Windows属性对话框 <img src="/images/sunny.gif" align="ab

    在Windows编程中,调用系统属性对话框是一个常见的任务,这通常涉及到与系统资源和控件的交互。本文将深入探讨如何在编程中实现这一功能,主要关注Windows API的使用,以及如何通过源码实现这一过程。 首先,我们...

    Demo.rar_DEMO_sometimeav3_启动

    在Delphi中,可以使用`ShellExecuteEx`函数,它是`ShellExecute`的增强版本,提供了更多的控制选项。 至于关闭外部应用程序,`TerminateProcess`函数是用来强制结束指定进程的。在Delphi中,可以使用`TProcess`类的...

    程序互相调用代码

    1. **启动进程**:在MFC中,可以使用`CWinApp`类的`WinExec`或`ShellExecute`函数来启动一个新的进程。`WinExec`函数较为简单,但功能有限;而`ShellExecute`则更强大,它可以执行各种操作,如打开文件、打印文件、...

    Visual C++ Windows Shell Programming(- Dino )

    理解和使用ShellExecute及其变体ShellExecuteEx对于Shell编程至关重要。 5. **IShellFolder接口**:IShellFolder接口是Shell编程中的核心接口,用于表示Shell命名空间中的目录或容器。理解如何实现和使用这个接口是...

    delphi如何自动重启程序

    - 重启程序通常使用`ShellExecute`或`ShellExecuteEx`函数来启动新的进程。这两个函数在`shell32.dll`库中。 - 调用格式:`HINSTANCE ShellExecute(HWND hWnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR ...

    delphipgmnote_delphi_

    总之,Delphi调用外部程序主要通过Windows API的`CreateProcess`或`ShellExecute`函数实现,根据项目需求选择合适的方法。在编写这样的代码时,需要注意错误处理,确保程序的稳定性和用户体验。同时,利用现有的库...

    Delphi用法一 收藏

    - **使用 `ShellExecute` 或 `ShellExecuteEx`**: ```delphi function ExecuteFile(const FileName, Params, DefaultDir: string; ShowCmd: Integer): THandle; ExecuteFile('C:\abc\a.txt', 'x.abc', 'c:\abc\'...

    Windows创建进程例程

    除了`WinExec`和`CreateProcess`,Windows还提供了其他创建进程的方式,如`ShellExecute`和`ShellExecuteEx`。这些函数主要用于启动应用程序,并能处理文件关联,比如双击一个`.docx`文件时,会自动启动Word来打开它...

    C# 动态调用其它或执行的EXE程序

    2. **使用ShellExecute API** 除了`Process`类,我们还可以借助Windows API函数`ShellExecute`来执行外部程序。C#中可以通过`DllImport`特性导入该API。这是一个更底层的方法,可以提供更多的控制,但使用时需注意...

    C#调用默认浏览器打开网页的几种方法

    1. 使用`Process.Start()`方法: 这是最简单且常见的方法,通过`System.Diagnostics`命名空间中的`Process`类启动一个新的进程,指定URL作为启动参数。例如: ```csharp using System.Diagnostics; // 调用默认...

Global site tag (gtag.js) - Google Analytics