登录    关于
马育民老师的博客

马育民的博客

QQ:65242847

python ShellExecute 打开外部程序或文件

介绍

使用ShellExecute函数,就相当于在资源管理器中双击文件图标,系统会打开相应程序运行

函数

ShellExecute(
  hWnd: HWND;        {指定父窗口句柄}
  Operation: PChar;  {指定动作, 譬如: open、print}
  FileName: PChar;   {指定要打开的文件或程序}
  Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}
  Directory: PChar;  {缺省目录}
  ShowCmd: Integer   {打开选项}
): HINST;            {执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误}

形参:

  • 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}
    

返回值可能的错误有:

                       = 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; {没有相关联的应用程序}

例子

用指定程序打开文件

import win32api

ShellExecute(Handle, 'open', 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', '', 1);

# 用火狐浏览器打开网址
ShellExecute(Handle, 'open', 'firefox.exe', 'http://www.sohu.com', '', 1);

用默认程序打开文件

import win32api 

win32api.ShellExecute(0, 'open', '问题.docx', '', '', 1)

# 用默认浏览器打开网址
win32api.ShellExecute(0, 'open', 'http://www.sohu.com', '', '', 1)   # 打开网页

原文出处:https://malaoshi.top/show_1IX1X6Q5SCbF.html