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[] 这样的输入格式了,正则表达式将第一个出现的边界类字符串作为命令或程序路径的结束位置,后面所以的字符串作为命令的参数。

转载于:https://www.cnblogs.com/cnLiou/archive/2010/04/04/1704348.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值