zoukankan      html  css  js  c++  java
  • Windows Gadget开发之运行外部程序

    在Windows侧边栏工具开发时,想做一个和Windows一样的功能,基本上是以下两个功能:

    1. 可以直接运行系统Path环境变量中列出路径下的程序

    2. 可以直接运行UNC地址,URL网址和FTP地址,即支持常见的网络协议访问方式

    其实gadget开发API中已有函数支持此功能的函数,只不过我开始选错了,我开始用的是

    var winShell = new ActiveXObject("Shell.Application");
    winShell.ShellExecute("\""+q+"\"");
    winShell = null;

    发现该方法只能运行程序,但是不支持参数传递,幸好有找到个替代产品,System.Shell.execute(appPath, null, null, open);

    函数原型定义为:

    execute Method

    Launches an application.

    Syntax

     
    System.Shell.execute(strFile [, strArgs] [, strDir] [, strOperation])

    Parameters

    strFile

    Required. String that specifies a Universal Naming Convention (UNC) path to an executable file, a filename, or a URL.

    strArgs

    Optional. If strFile specifies an executable file then String specifies the parameters to be passed to the application. For example, a UNC path such as System.Gadget.path + "\\MyFile.Txt".

    Note  If strFile specifies a filename or URL, strArgs is unneccessary and should be blank, null, or an empty string.

    strDir

    Optional. String that specifies the UNC path for the default (working) directory of the executable file.

    strOperation

    Optional. String that specifies the action (or Microsoft Windows Shell verb) to be performed. The set of available verbs depends on the particular file or folder.

    edit
    Opens the file specified by strArgs for editing.
    explore
    Opens the folder specified by strDir for exploring.
    find
    Opens the folder specified by strDir for searching.
    open
    Opens the file specified by strArgs.
    print
    Prints the file specified by strArgs on the default printer.

    Return Value

    No return value.

    Remarks

    Supplying a path to a filename (with extension) or a URL for strFile will launch the default application associated with that file extension and load the filename specified.

    Note  Alternatively, a path to a known application .exe can by supplied for strFile while strArgs, strDir, and strOperation are used to specify the rest of the file information.

    strArgs, strDir, and strOperation can be assigned values in combination as required.

    UNC paths should escape special characters with a '\'.

    System.Shell.execute第一个参数是应用程序的路径,第二个参数是参数列表,第三个参数是应用程序工作目录,第四个是打开方式。

    用上这个函数实现运行栏的功能还需要做一个命令行的解析工作,由于gadget工作在页面中,用javascript进行解析需要正则表达式来识别应用程序路径和参数列表,代码如下:

    function retApp(str, retPart){
       var s = str;
       var re = new RegExp("[ \f\n\r\t\v]*(\".+\")|([^ \f\n\r\t\v]+)","ig");
       
       var arr = re.exec(s);
      if (retPart == 0) {
       return(RegExp.lastMatch);
      } else {
       return(RegExp.rightContext);
      }
      
       return("");
    }

    System.Shell.execute(retApp(q, 0), retApp(q, 1), null, open);

    现在命令行解析有了,执行命令也有了,就可以接收 command.exe  args[] 这样的输入格式了,正则表达式将第一个出现的边界类字符串作为命令或程序路径的结束位置,后面所以的字符串作为命令的参数。
  • 相关阅读:
    在linux下搭建wiki环境【转】
    GitLab版本管理【转】
    linux设备驱动中的并发控制【转】
    分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace【转】
    Git常用命令总结【转】
    Linux中断(interrupt)子系统之一:中断系统基本原理【转】
    大话Linux内核中锁机制之原子操作、自旋锁【转】
    自旋锁spin_lock和raw_spin_lock【转】
    Linux内核同步机制之(四):spin lock【转】
    spin_lock浅析【转】
  • 原文地址:https://www.cnblogs.com/cnLiou/p/1704348.html
Copyright © 2011-2022 走看看