提供 SE_ERR_XXX 之类的错误代码是为了兼容 ShellExecute使用 GetLastError可以获得更详细的错误信息。返回值可以使下列之一:

 

Error

Description

ERROR_FILE_NOT_FOUND

指定文件不存在

ERROR_PATH_NOT_FOUND

指定路径不存在

ERROR_DDE_FAIL

动态数据交换 (DDE) 处理失败

ERROR_NO_ASSOCIATION

没有与制定文件名扩展对应的应用程序

ERROR_ACCESS_DENIED

访问指定文件被拒绝

ERROR_DLL_NOT_FOUND

无法找到运行应用程序所必须的库文件

ERROR_CANCELLED

这个函数要求用户提供更多其他信息(译注:比如弹出对话框),但请求用户被取消了

ERROR_NOT_ENOUGH_MEMORY

没有足够的内存来执行操作

ERROR_SHARING_VIOLATION

共享违规发生了

Windows 95/98/Me: ShellExecuteEx 为 Microsoft Layer for Unicode (MSLU) 所支持。为了使用这个函数,必须添加额外的文件到应用程序中去,请参考: Microsoft Layer for Unicode on Windows Me/98/95 Systems .

 

函数信息:

 

Minimum DLL Version

shell32.dll version 3.51 or later

Custom Implementation

No

Header

shellapi.h

Import library

shell32.lib

Minimum operating systems

Windows NT 4.0, Windows 95

Unicode

Implemented as ANSI and Unicode versions

 

 

 

下面举例说明如何使用这个函数, executePackage 这个函数用来执行某个应用程序。

1. bool  executePackage( LPCWSTR  fileName,  LPCWSTR  args,  LPCWSTR  baseDir,  bool  wait)  

2. {  

  1. 3.     SHELLEXECUTEINFOW sei = { sizeof (SHELLEXECUTEINFOW) };  
  2. 4.   
  3. 5.     sei.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;  
  4. 6.   
  5. 7.     sei.lpFile = fileName;  
  6. 8.     sei.lpParameters = args;  
  7. 9.     sei.lpDirectory = baseDir;  
  8.   
  9.     if  (!ShellExecuteExW(&sei)) {  
  10.         return   false ;  
  11.     }  
  12.   
  13.     if  (wait) {  
  14.         HANDLE  hProcess = sei.hProcess;  
  15.         if  (hProcess != 0) {  
  16.             WaitForSingleObject(hProcess, INFINITE);  
  17.             CloseHandle(hProcess);  
  18.         }  
  19.     }  
  20.   
  21.     return   true ;  
  22. }  

 

查看评论

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

个人资料


okadler0518

  • 访问:49445次
  • 积分:1963分
  • 排名:第2559名
  • 原创:134篇
  • 转载:57篇
  • 译文:1篇
  • 评论:36条

文章搜索

窗体顶端

 

窗体底端

文章分类

文章存档

阅读排行

评论排行

推荐文章

最新评论

mapeijie888: 够清楚 .................遇见你专家了

gejjun: 装了虚拟网卡就有了。

okadler0518: 绘制图像,必须要的是刷新。WM_PAINT就是这个功能。图片的绘制有3-4中方法,也就是函数不一样而...

Wang471981125: 除了这种机制 还有其他的方法来进行图像的绘制吗?

okadler0518: gdc = BeginPaint (hwnd, &ps);gdc = GetDC (hwnd...

okadler0518: 2. WM_PAINT里面,最好用BeginPaint。我一开始都说很清楚了。

okadler0518: 1. break,是switch的循环跳出语句。是c/c++基础。

shmylm4201: 想问一下,假如我写一个WM_PAINT:break;这表示什么意思?还有我想在一个窗口中播放rtsp...

shangwei97: 正要做这方面的工作。谢谢

leewckk:

 

关机