Flex 调用本地应用程序
这两天要完成一个功能,就是swf文件调用本地exe程序,这涉及到两个问题:
1、swf无法直接调用exe文件
2、可以采用swf->调用js->调用本地exe,但是js调用在exe本地使用没问题,发布到web服务器上就有安全性的问题。
解决方法如下
flex中加入以下代码
//通过js程序调用外部exe程序
private function callExe():void
{
ExternalInterface.call("callExe","notepad.exe","c:////ltdz1.txt");
}
然后在flash所在页面加入如下代码
function callExe(shellp,str)
{
try
{
var objShell = new ActiveXObject("wscript.shell");
objShell.Run(shellp+" "+str);
objShell = null;
}
catch (e)
{
alert('找不到文件"'+shellp+'"(或它的组件之一)。请确定路径和文件名是否正确,而且所需的库文件均可用。') ;
}
可以在html中加入控件调用测试javascript的代码
<BUTTON class="button" onclick="Run('notepad','')">记事本</BUTTON><br>
这样在本地调用是成功的,但是把页面发布到web服务器上就会出发异常,提示找不到组件
原因与解决办法如下
那是因为ie里面被禁在外网执行。因此我们可以提示客户端的ie选项的安全的自定义级别里面的"对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本'' 启动就ok了,在里面有四种安全设置。internet 指所有网站都可以运行ActiveXObject,用起来客户端很危险。我们可以让客户端把我们的web服务器添加到受信任的站点,然后对其自定义级别启动"对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本'' 。
//调用exe
function exec(command,type) {
try {
if (navigator.userAgent.indexOf("MSIE") <= 0) {
alert("请使用IE浏览器查看");
return;
}
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FileExists(command)){
var msg="";
if(type=="cz"){
msg="未找到"+command;
}else{
msg="可能未安装视频插件,确定下载安装吗?";
}
var flag=confirm(msg);
if(flag){
return "bucunzai";
}else if(type!="cz"){
return "cunzai"
}
return;
}
}
catch (e) {
if(e.number==-2146823281){
var msg="";
if(type=="cz"){
msg="未找到"+command;
}else{
msg="可能未安装视频插件,确定下载安装吗?";
}
var flag=confirm(msg);
if(flag){
return "bucunzai";
}else if(type!="cz"){
return "cunzai"
}
return;
}
alert(e.number+":"+e.message);
//alert("命令已经被用户禁止!请在ie选项的安全模块将此网站加入可信站点并启动该自定义级别中的'对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本'选项,之后刷新页面");
return "命令已经被用户禁止!请在ie选项的安全模块将此网站加入<可信站点>并<启动>该自定义级别中的'对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本'选项,之后<刷新>页面";
}
if(type!="cz"){
return "cunzai";
}
//alert(command);
window.oldOnError = window.onerror;
window._command = command;
window.onerror = function (err) {
if (err.indexOf("utomation") != -1) {
//alert("命令已经被用户禁止!请在ie选项的安全模块将此网站加入可信站点并启动该自定义级别中的'对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本'选项,之后刷新页面");
return "命令已经被用户禁止!请在ie选项的安全模块将此网站加入<可信站点>并<启动>该自定义级别中的'对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本'选项,之后<刷新>页面";
} else {
return false;
}
};
var wsh = new ActiveXObject("WScript.Shell");
if (wsh) {
wsh.Run(command);
}
window.onerror = window.oldOnError;
return window.oldOnError;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
2011-03-01 深入研究Repeater控件:最大的灵活性
2011-03-01 常用Web Service汇总(天气预报、时刻表等)
2011-03-01 File,FileStream,byte[]3者互相转换总结(转)
2011-03-01 vs 下调试 引用的DLL源码
2011-03-01 jQuery获取文本节点之-text()/val()/html() 方法区别
2011-03-01 动态执行javascript代码