WinAPI: ShellExecute - 打开外部程序或文件

ShellExecute(
  hWnd: HWND;        {指定父窗口句柄}
  Operation: PChar;  {指定动作, 譬如: open、print}
  FileName: PChar;  {指定要打开的文件或程序}
  Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}
  Directory: PChar;  {缺省目录}
  ShowCmd: Integer  {打开选项}
): HINST;            {执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误} //返回值可能的错误有:
                      =   {内存不足}
ERROR_FILE_NOT_FOUND  = ;  {文件名错误}
ERROR_PATH_NOT_FOUND  = ;  {路径名错误}
ERROR_BAD_FORMAT      = ; {EXE 文件无效}
SE_ERR_SHARE          = ; {发生共享错误}
SE_ERR_ASSOCINCOMPLETE = ; {文件名不完全或无效}
SE_ERR_DDETIMEOUT      = ; {超时}
SE_ERR_DDEFAIL        = ; {DDE 事务失败}
SE_ERR_DDEBUSY        = ; {正在处理其他 DDE 事务而不能完成该 DDE 事务}
SE_ERR_NOASSOC        = ; {没有相关联的应用程序} //ShowCmd 参数可选值:
SW_HIDE            = ;  {隐藏}
SW_SHOWNORMAL      = ;  {用最近的大小和位置显示, 激活}
SW_NORMAL          = ;  {同 SW_SHOWNORMAL}
SW_SHOWMINIMIZED  = ;  {最小化, 激活}
SW_SHOWMAXIMIZED  = ;  {最大化, 激活}
SW_MAXIMIZE        = ;  {同 SW_SHOWMAXIMIZED}
SW_SHOWNOACTIVATE  = ;  {用最近的大小和位置显示, 不激活}
SW_SHOW            = ;  {同 SW_SHOWNORMAL}
SW_MINIMIZE        = ;  {最小化, 不激活}
SW_SHOWMINNOACTIVE = ;  {同 SW_MINIMIZE}
SW_SHOWNA          = ;  {同 SW_SHOWNOACTIVATE}
SW_RESTORE        = ;  {同 SW_SHOWNORMAL}
SW_SHOWDEFAULT    = ; {同 SW_SHOWNORMAL}
SW_MAX            = ; {同 SW_SHOWNORMAL}

//举例说明更多问题(别忘了 uses ShellAPI;):

{譬如用记事本打开一个文件}
begin
  ShellExecute(Handle, 'open', 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', nil, SW_SHOWNORMAL);
end;

{第一个参数是用来当作错误提示窗口的父窗口的, 不能是 nil, 可以是 0(也就是桌面窗口)}
begin
  ShellExecute(, 'open', 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', nil, SW_SHOWNORMAL);
end;

{第二个参数如果是 nil, 也会默认位 open}
begin
  ShellExecute(, nil, 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', nil, SW_SHOWNORMAL);
end;

{文件路径可以放在参数五}
begin
  ShellExecute(, nil, 'notepad.exe', 'SchedLgU.Txt', 'C:\WINDOWS', SW_SHOWNORMAL);
end;

{把参数三直接指定为要打开的文件, 文件将用对应默认程序打开; 次数参数四应为 nil}
begin
  ShellExecute(, nil, 'SchedLgU.Txt', nil, 'C:\WINDOWS', SW_SHOWNORMAL);
end;

{如果文件在: 程序目录/当前目录/System32/Windows/PATH环境变量中, 参数五也可以 nil}
begin
  ShellExecute(, nil, 'SchedLgU.Txt', nil, nil, SW_SHOWNORMAL);
end;

{如果参数三是个文件, 可以用参数二命令打印}
begin
  ShellExecute(, 'print', 'SchedLgU.Txt', nil, nil, );
end;

{用 IE 打开网页}
begin
  ShellExecute(Handle, 'open', 'IExplore.EXE', 'about:blank', nil, SW_SHOWNORMAL);
end;

{用火狐打开网页}
begin
  ShellExecute(Handle, 'open', 'firefox.exe', 'about:blank', nil, SW_SHOWNORMAL);
end;

{用默认浏览器打开网页}
begin
  ShellExecute(Handle, 'open', 'Explorer.exe', 'about:blank', nil, SW_SHOWNORMAL);
end;

{还是用默认浏览器打开网页}
begin
  ShellExecute(, nil, 'http://del.cnblogs.com', nil, nil, );
end;

WinAPI: ShellExecute - 打开外部程序或文件的更多相关文章

  1. Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)

    下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...

  2. Qt打开外部程序和文件夹需要注意的细节(注意QProcess的空格问题,以及打开本地文件时,需要QUrl::fromLocalFile才可以)

    下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...

  3. Unity打开外部程序exe/Bat文件方案

    Unity调用外部程序/Bat文件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  4. MFC 用ShellExecute打开外部文件

    知识点: 获取CListCtrl选中文本 用ShellExecute打开外部文件 一.CListCtrl::GetFirstSelectedItemPosition CListCtrl::GetFir ...

  5. 使用ShellExecute打开目标文件所在文件夹并选中目标文件

    转载:http://blog.csdn.net/chenlycly/article/details/7366364 转载:http://bbs.csdn.net/topics/50440550 She ...

  6. ShellExecute打开文件,打开文件夹的用法

    转自https://www.cnblogs.com/nxopen2018/p/11070031.html //方法1 //转换 //char msg[256]; //sprintf_s(msg, &q ...

  7. ShellExecute打开文件打开文件夹的用法

    1 #include <uf.h> 2 #include <uf_part.h> 3 #include <atlstr.h> 4 #include <iost ...

  8. [WinAPI] API 10 [创建、打开、读写文件,获取文件大小]

    在Windows系统中,创建和打开文件都是使用API函数CreateFile,CreateFile通过指定不同的参数来表示是新建一个文件,打开已经存在的文件,还是重新建立文件等.读写文件最为直接的方式 ...

  9. ShellExecute 启动外部程序 参数详细介绍

    ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制. 目录 1基本简介 2原型参数 3返回值 4例子 5特殊用法 ...

随机推荐

  1. mysql存储过程之异常处理篇

    mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[, ...

  2. Linux静态库生成指南

    Linux静态库生成指南   Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...

  3. 分享php中四种webservice实现的简单架构方法及实例

    一:PHP本身的SOAP所有的webservice都包括服务端(server)和客户端(client).要使用php本身的soap首先要把该拓展安装好并且启用.下面看具体的code首先这是服务端实现: ...

  4. oracle唯一索引与普通索引的区别和联系以及using index用法

    oracle唯一索引与普通索引的区别和联系 区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束.添加唯一索引的数据列可以为空,但是只要尊在数 ...

  5. python4delphi 使用

    Python 开发桌面程序, 之前写过一个使用IronPython的博客. 下面这个方案使用 delphi 作为主开发语言,通过 python4delphi 控件包将 python 作为 script ...

  6. [PHP知识点乱炖]四、全局变量——小偷从良记

    本章要讲的是PHP的全局变量. 这里讲个小故事: 很多年前,一个很聪明的小偷,想去偷一户人家的钱.可是他偷不到主人的钥匙,怎么办呢? 他想到了一个办法,去之前嚼了一块口香糖,口香糖的牌子是“大大泡泡糖 ...

  7. 【AngularJS】—— 10 指令的复用

    前面练习了如何自定义指令,这里练习一下指令在不同的控制器中如何复用. —— 来自<慕课网 指令3> 首先看一下一个小例子,通过自定义指令,捕获鼠标事件,并触发控制器中的方法. 单个控制器的 ...

  8. iOS 滑动性能优化

    iOS 滑动性能优化 目录 一. 减少图层的Blend操作 1. UIView的背景色避免使用clearColor 2. 控件贴图避免使用带alpha的图片 3. UIImageView 使用时避免半 ...

  9. Shanghai Regional Online Contest 1004

    Shanghai Regional Online Contest 1004 In the ACM International Collegiate Programming Contest, each ...

  10. hihoCoder挑战赛11.题目4 : 高等理论计算机科学(LCA)

    clj在某场hihoCoder比赛中的一道题,表示clj的数学题实在6,这道图论貌似还算可以... 题目链接:http://hihocoder.com/problemset/problem/1167 ...