Delphi Win API 函数 [ ShellAPI ] ShellExecute 函数

引用单元:uses ShellAPI;

函数原型:function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;

  hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。

  Operation:用于指定要进行的操作。为nil时,表示默认执行“open”。

    open:操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;

    print:操作表示打印由FileName参数指定的文件;

    explore:操作表示浏览由FileName参数指定的文件夹。

    

  FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。

  Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。

  Directory:用于指定默认目录。

  ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。

    SW_HIDE 隐藏

    SW_MAXIMIZE 最大化

    SW_MINIMIZE 最小化,并把Z order顺序在此窗口之后(即窗口下一层)的窗口激活

    SW_RESTORE 激活窗口并还原为初始化大小 SW_SHOW 以当前大小和状态激活窗口

    SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态

    SW_SHOWDEFAULT 以默认方式运行

    SW_SHOWMAXIMIZED 激活窗口并最大化

    SW_SHOWMINIMIZED 激活窗口并最小化

    SW_SHOWMINNOACTIVE 最小化但不改变当前激活的窗口

    SW_SHOWNA 以当前状态显示窗口但不改变当前激活的窗口

    SW_SHOWNOACTIVATE 以初始化大小显示窗口但不改变当前激活的窗口

    SW_SHOWNORMAL 激活并显示窗口,如果是最大(小)化,窗口将会还原。第一次运行程序 时应该使用这个值

函数调用成功,则返回被执行程序的实例。若返回值小于32,则表示出现错误。

例如:

打开计算器:ShellExecute(Handle ‘open’, ‘calc.exe’,NULL, NULL,SW_SHOWMAXIMIZED );

打开一个网址:ShellExecute(Handle, ‘open‘, PChar(‘http://www.baidu.com‘), nil, nil, SW_SHOW);

打开指定目录:ShellExecute(Handle, ‘explore‘, PChar(‘c:/windows)‘, nil, nil, SW_SHOW);

打开邮件窗口发邮件:ShellExecute(handle, ‘open’,‘ ***@163.com’, nil, nil, SW_SHOWNORMAL);

更新日期:2019.12.24

来源于:https://www.cnblogs.com/guorongtao/p/12089515.html

原文地址:https://www.cnblogs.com/guorongtao/p/12089515.html

时间: 2024-10-28 20:26:40

Delphi Win API 函数 [ ShellAPI ] ShellExecute 函数的相关文章

ShellExecute函数

原文来自:http://blog.csdn.net/yanjiaye520/article/details/6543165 有三个API函数可以运行可执行文件WinExec.ShellExecute和CreateProcess.1.CreateProcess因为使用复杂,比较少用.2.WinExec主要运行EXE文件.如:WinExec('Notepad.exe Readme.txt', SW_SHOW);3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件. 首先必须引

Delphi 常用API 函数

Delphi 常用API 函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconicWindows 排列一个父窗口的最小化子窗口 AttachThreadInput 连接线程输入函数 BeginDeferWindowPos 启动构建一系列新窗口位置的过程 BringWindowToTop 将指定的窗口带至窗口列表顶部 CascadeWindows 以层叠方式排列窗口 ChildWi

Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统上WinRAR或者好压软件一样的存在. 7-Zip软件下载与安装 网上下载相关安装包并完成安装,找到安装目录,复制7z.dll文件到D盘. .bat文件的制作 通过7-Zip软件使用手册了解到,通过动态命令行调用7z.dll可以把文件压缩成.tar.gz格式的,实际上是先将文件压缩成.tar格式的文

转:ShellExecute函数与ShellExecuteEx函数

ShellExecute函数 ShellExecute函数原型及參数含义例如以下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; hWnd:用于指定父窗体句柄.当函数调用过程出现错误时,它将作为Windows消息窗体的父窗体.比如,能够将其设置为应用程序主窗体句柄,即 Application.Handle,

ShellExecute函数简单说明

平时在delphi写代码的过程中总是能遇到ShellExecute函数,于是索性将它的使用方法整理一下,由于我在微软的站点上也没能查到个详解(当然我查的中文版,俺菜嘛) ShellExecute函数原型及參数含义例如以下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; ●hWnd:用于指定父窗体句柄.当函数

如何通过HOOK改变windows的API函数(找到函数的相对偏移)

我们知道,系统函数都是以DLL封装起来的,应用程序应用到系统函数时,应首先把该DLL加载到当前的进程空间中,调用的系统函数的入口地址,可以通过GetProcAddress函数进行获取.当系统函数进行调用的时候,首先把所必要的信息保存下来(包括参数和返回地址,等一些别的信息),然后就跳转到函数的入口地址,继续执行.其实函数地址,就是系统函数“可执行代码”的开始地址.那么怎么才能让函数首先执行我们的函数呢?呵呵,应该明白了吧,把开始的那段可执行代码替换为我们自己定制的一小段可执行代码,这样系统函数调

Delphi String 常用字串符处理函数

Delphi 在面对跨平台开发,程序语言也改进不少,不过有些改进,让原本 Delphi 开发者有些不适应,最显注的就是字串处理函数了,原本 Pascal 语言字串起始由 1 开始,几乎是它的经典了,新版本字串由 0 开始,这个改变,让很多人不适应,也多有抱怨,虽然 Delphi 尽量保有相容性,但如果要写出一码,跨所有平台,还是建议全部采用新的写法(由0开始),才是一劳永逸的做法,下面就整理常用字串处理函数新旧对照表. Delphi String 常用字串符处理函数: 说明 旧写法(Window

Zookeeper C API 指南三(回调函数)(转)

2013-02-21 12:54 by Haippy, 9237 阅读, 0 评论, 收藏, 编辑 接上一篇<Zookeeper C API 指南二(监视(Wathes), 基本常量和结构体介绍)>,本文重点介绍 Zookeeper C API 中的各种回调函数. Zookeeper C API 中各种回调函数简介 在具体介绍 Zookeeper C API 之前,首先介绍一下 Zookeeper C API 中的各种回调函数的原型: 监视函数(watch function)原型 typede

使用类的成员函数作为API定时器的回调函数

有时候,我们在使用API定时器时,需要使用类的成员函数作为其回调函数,但是,编译器为了保护成员函数,编译是不能通过的.那么我们怎么才能使用类的成员函数作为API定时器的回调函数呢?我们可以嵌入一段汇编代码来绕过编译器的检查.举个例子: 假设我们一个类的成员函数定义为void CALLBACK EXPORT CTestDlg::TimerProc,那么我们在使用API定时器时如果直接这么写是编译通不过的: ::SetTimer(m_hWnd,1,1000,TimerProc); 使用嵌入一段汇编代