ShellExecute成功后返回值究竟是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ShellExecute成功后返回值究竟是啥?相关的知识,希望对你有一定的参考价值。
看网上的文章介绍是返回被启动的程序的句柄,而看msdn上则说则是一个大于32的值
究竟哪个是正确的?
另外,如果msdn上是正确的,那我要如何取得被启动的程序的句柄啊?
有没有高手能说一下,谢谢^_^
返回值可能有的错误如下: = 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 参考技术A 参考MSDN的说法,这个函数的返回值是一个整数,只是在返回时被转换成了一个HINSTANCE类型,不过它并不是一个真正的HINSTANCE,所以它唯一的作用就是重新转换成整数,来判断操作是否成功。
如果需要控制创建的应用程序,必须使用另外的API
CreateProcess
它的返回参数PROCESS_INFORMATION包含了子进程的句柄。本回答被提问者采纳 参考技术B 函数】
ShellExecute
【操作系统】
Win9X:Yes
WinNT:Yes
【声明】
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
【说明】
查找与指定文件关联在一起的程序的文件名
【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError
【其它】
【参数表】
hwnd ----------- Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框
lpOperation ---- String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它
lpFile --------- String,想用关联程序打印或打开一个程序名或文件名
lpParameters --- String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数
lpDirectory ---- String,想使用的完整路径
nShowCmd ------- Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
实例如下:
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
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
'Send an E-Mail to the KPD-Team
ShellExecute Me.hwnd, vbNullString, "mailto:KPDTeam@Allapi.net", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
请问delphi中ShellExecute的功能,和直接用show有啥不同?
都是显示所创建的新界面,有什么不一样,在实现什么功能时需要使用ShellExecute?
并且 我用ShellExecute 打开的界面 无法对界面的按键等的进行操作 这个是与ShellExecute有关吗?
结束 Explorer.exe 文件 然后在
文件/新建任务/数据 explorer 就可以更新了
可以使用 C# 的 Process.Start();
Process.Kill();
具体方法可以查询百度哦 参考技术D ShellExecute可以打开其他的EXE文件本回答被提问者和网友采纳
以上是关于ShellExecute成功后返回值究竟是啥?的主要内容,如果未能解决你的问题,请参考以下文章
VB中Shell函数和ShellExecute函数的使用方法、联系、区别?