`

javascript flash 调用 exe 可执行文件 的例子

阅读更多
直接转载自:
http://blog.sina.com.cn/s/blog_5ca9fdd80100bdh1.html

<script   language="JavaScript"> 
  function   open_exe(shellp,str) 
  { 
  a=new   ActiveXObject("wscript.shell"); 
  a.run(shellp+"   "+str); 
  } 
  
  function   cq() 
  { 
  b=new   ActiveXObject("wscript.shell"); 
  b.run("rundll32.exe") 
  } 
  </script> 
  <button   onclick="open_exe('notepad.exe','c:\\ltdz1.txt')">打开notepad</button> 
  <button   onclick="open_exe('winword.exe','c:\\long.doc')">打开word</button> 
  <button   onclick="open_exe('ACDSee.exe','c:\\oaautomatic\\images\\APY.gif')">打开Acdsee</button> 
  <button   onclick="cq();">重启</button>


************************************************************************************************************************
************************************************************************************************************************
1.0 用java调用windows系统的exe文件,比如notepad,calc之类:
public class Demo{
public static void main(String args[]){

Runtime rn=Runtime.getRuntime();
Process p=null;

try{
p=rn.exec(notepad);
}catch(Exception e){
System.out.println("Error exec notepad");
}
}
}
2.0调用其他的可执行文件,例如:自己制作的exe,或是下载安装的软件
public class Demo{
public static void main(String args[]){
Runtime rn=Runtime.getRuntime();
Process p=null;

try{
p=rn.exec("\"D:/AnyQ/AnyQ.exe\"");
}catch(Exception e){
System.out.println("Error exec AnyQ");
}
}
}

##########################################################################################################################
##########################################################################################################################

fscommand调用exe文件详解
作者:龙族酷少   类型:转载   来源:闪吧  很多朋友在贴子里常常问:为什么我的FLASH无法调用本地机器里的EXE文件呢,可是AS写得却没有错误,我是这样写的啊



on(release){
fscommand("exec", "***.exe");
}
是的,粗粗看来,确实在AS中没有任何错误,我一开始的时候也是这个模式,可是就是调用不了文件,首先,我们来了解一下fscommand的几个命令的意思

fscommand(cmd_string, arg_string) 执行主机端指令。cmd_string指定所要执行的指令名,可为FlashPlayer的
指令或浏览器javascript函数。arg_string声明该指令所用到的参数。
FlashPlayer的指令有(只能在独立播放器时使用):
"fullscreen" 是否全屏播放,参数为true或false
"allowscale" 是否允许通过拉伸窗口缩放影片,参数为true或false
"showmenu" 是否在播放器显示菜单,参数为true或false
"trapallkeys" 是否屏蔽播放器的快捷键(如Esc表示停止播放并恢复
"save" 隐藏属性,作用是存变量到文本文件.
视窗显示),参数为true或false。但Alt+F4系统快捷
键(关闭窗口)依然可用。
"exec" 运行arg_string所指定的文件。

以下只介绍exec命令的用法

EXEC是通过FLASH文件调用本地EXE文件的一个命令,下面我们来看图:

首先,新建一文件夹,命名为myflash



打开flash,在场景中添加一按钮,在AS面板中写下代码:


on (release) {
fscommand("exec", "popo.exe");
}
至于为什么要取EXE文件的名字为popo,这个在后面会解释





将刚才的flash文件保存为1.fla,另外创建一个1.swf文件





在同一文件夹下新建一文件夹,命名为fscommand,这个文件夹是放置以后要调用的EXE文件的





这时候你可以把EXE文件先放置到fscommand文件夹下了,钢材我用的popo.exe文件其实是网易泡泡的安装程序,其实是不是POPO无所谓,只要是以EXE为后醉的文件都可以





这个时候有些朋友就开始ENTER+CTRL进行测试了,可是没有反应
没错啊,我钢材写的代码也没问题啊,我的路经也没问题啊,为什么就无法调用文件呢?

其实问题在这里!
Flash MX中增强了安全性,它虽然也可以调用exe文件,但它是有条件的。

1.你的flash文件不能是swf,而应该是exe文件,比如1.exe;
2.要在1.exe同一目录中新建一命名fscommand目录,你要调用的外部可执行文件要在fscommand目录下

这句话不知道大家有没有看懂,说得通俗一点:SWF文件不能直接调用EXE文件!也就是说,只有将你钢材做好的那个带按钮想调用popo.exe的1.swf文件转换成EXE文件才可以调用popo.exe,其实也就是EXE调用EXE拉,只不过是前面的这个EXE必须是SWF转换过来的

转换方法如下:
导出exe格式
发布方法如下:
选中 File -> Publish Settings 或按ctrl+shift+F12
它默认的发布类型为HTML(.html)与Flash(.swf),
你将这两项取消,选中Windows Projectors(.exe)
即可将你的Flash文件直接发布为exe可执行文件
按ctrl+F12即可发布
若你的文件尚未保存则它会发布在你flash的安装目录中
若你的文件已保存则会发布在你的文件同一目录下
还有一种比较简便的方法是:
先用 File -> Export Movie...或按Ctrl+Alt+Shift+S 导出swf文件
再打开这个文件,通过 文件 -> 创建播放器 即可产生EXE可执行文件

你要把SWF转成这个样子:





现在打开你的1.exe,点一下中间的按钮试试看?





经过以上的步骤,你是不是自己摸索出了一点规律和失败的原因了吗?

下面我替各位总结一下以上的内容:

首先,调用EXE文件最重要的一点,必须把你的SWF文件先转换成EXE,也就是FLASH的播放器,为什么要先转换成EXE文件?我们都知道,随着MACROMEDIA公司的flash软件在全球的兴起,也带来了一股flash热潮,当然了,更多的人是用在了商业用途中,比如说做flash首页,做动画,这都是有利益驱使的,如果没有金钱,谁也不会去做(当然除了象我们这些业余爱好者除外),所以也出现了一些利用flash转空子的人,他们利用flash强大的功能在网络中进行破坏活动,使一些用户遭受了巨大的损失,其中很大的一方面就是因为fscommand命令而造成的,在flashmx推出之前,使用flash5的用户在使用这个命令的时候,都可以直接通过SWF来调用EXE文件(只要你把EXE文件放在fscommand文件夹下就行),破坏分子就是利用这个漏洞对一些网上的FLASH文件进行攻击和破坏活动,现在flashmx的推出的同时,也把AS中的此代码改成了EXE调用EXE来执行命令,从而保护了用户的安全

其次,必须把你要调用的EXE文件放在同一目录的fscommand文件下,不然flash就无法查找该文件的具体路经

另外说一下,如果你不想放在该文件夹下也可以,但是要具体写明它的位置

具体的方法如下:

开启一个外部可执行程序:扩展名.exe可以省略。具体来说,若一个exe文件(假设为another.exe)和该swf文件本身在同一个目录下,则直接键入程序文件名即可。如:
fscommand("exec","another")
否则,应写明路径。如打开IE浏览器窗口:
fscommand("exec","c:\\progra~1\\intern~1\\iexplore")
//注意DOS下对长文件(夹)名的处理形式。
下面两种情况也可以不写路径——
(1)当可执行程序是在c:\windows目录下时,可以不写路径。如调用windows的计算器,下面三种写法均可:
fscommand("exec","c:\\windows\\calc.exe")
fscommand("exec","c:\\windows\\calc")
fscommand("exec","calc")
(2)调用DOS命令也可省略路径。如下例打开MS-DOS下的Edit编辑器:
fscommand("exec","edit.com")
如果熟悉批处理文件写法,通过FSCommand->exec命令执行批处理文件可以一举多得。

当然,我个人认为,保持一个良好的习惯是必要的,所以还是复制一个EXE文件到fscommand文件夹下吧:)


############################################################################################################################
**********************&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
用Javascript网页代码直接调用计算机中的程序

网页制作的简单小技巧,用网页中的代码直接可以调用计算机中的可执行文件。

把下面代码直接放到HTML网页的<body>里面。

<SCRIPT Language="JScript">
function runcmd() {
File="cmd.exe";
WSH=new ActiveXObject("WScript.Shell");
WSH.run(File);
}
</SCRIPT>

<A href="#" onClick="runcmd(); return false;">运行 CMD.exe</A>

在这里我们创建了一个函数runcmd()直接调用计算机中的cmd.exe文件,当然如果你直接调用其它文件的话要把路径写清楚。(例:C:\\FOLDER\\SUBFOLDER\\application.exe). 上面代码我们是直接通过点击一个超级连接就可以调用可执行文件。

如果你想让访客打开你的网页就直接调用计算机中的可执行文件,那么就直接修改<body>标签就可以了!

<body onLoad="javascript:runcmd();">
注意:上面的网页当打开时会直接弹出阻止信息的!如果在Firefox中上面代码会如何呢?
分享到:
评论
1 楼 msnvip 2009-03-13  
在网上获得了如下资料:
  <body MS_POSITIONING="GridLayout">

    <form id="Form1" method="post" runat="server">
请输入要运行的程序:<br/><input name=exe type=text size=20 value="regedit"><BUTTON class=button onclick="Run(exe.value)">确定</BUTTON><BUTTON class=button onclick=exe.value="";>重新输入</BUTTON><br/>
<BUTTON class=button onclick="Run('notepad')">记事本</BUTTON><br/>
<BUTTON class=button onclick="Run('mspaint')">画图板</BUTTON><br/>
<BUTTON class=button onclick="Run('calc')">计算器</BUTTON><br/>
<BUTTON class=button onclick="Run('cmd')">cmd</BUTTON><br/>
<BUTTON class=button onclick="Run('Regedit')">Regedit</BUTTON><br/>
<BUTTON class=button onclick="Run('Msconfig')">Msconfig</BUTTON><br/>
<BUTTON class=button onclick="Run('file:///d:\hello.exe)">WINAMP</BUTTON><br/>
<BUTTON class=button onclick="Run('IEXPLORE.EXE')">IE</BUTTON><br/>
<BUTTON class=button onclick="Run('..')">..</BUTTON><br/>
<BUTTON class=button onclick="Run('%windir%')">%windir%</BUTTON><br/>
<BUTTON class=button onclick="Run('%temp%')">%temp%</BUTTON><br/>
<BUTTON class=button onclick="Run('file:///D:/Program%20Files/Tencent/qq.EXE')">WINAMP</BUTTON><br/>
     </form>
<SCRIPT language=JavaScript>
function Run(command)
{
window.oldOnError = window.onerror;
                window._command = command;
                window.onerror = function (err)
                {
if (err.indexOf('utomation') != -1)
{
alert('命令' + window._command + ' 已经被用户禁止!');
return true;
}
else
return false;
}
                var wsh = new ActiveXObject('WScript.Shell');
                 if (wsh)
wsh.Run(command);
                window.onerror = window.oldOnError;
}

</SCRIPT>
  </body>

该段代码打开如:word,excel,notepad,画板等都能打开,
但是自已写的应用程序为什么打不开呢?报错说:
系统找不到指定的路径。
正在装载数据……






想要IE或word点击超链接打开本地的EXE应用程序,这个怎么办?

比如点击这样的链接
<a href="vip:123-MonacoGP-19279-Senna">打开我的协议</a>

将打开我的EXE应用程序?

首先你要修改注册表,要让IE看的懂像href="vip:123-MonacoGP-19279-Senna" 这样的协议.

c#如何写注册表?
//写注册表RegistryKey key = Registry.ClassesRoot.CreateSubKey("vip");key.SetValue("", "URL:vip Protocol");key.SetValue("URL Protocol","");RegistryKey Subkey= key.CreateSubKey("DefaultICon");Subkey.SetValue("", "exe文件路径");Subkey = key.CreateSubKey("shell").CreateSubKey("open").CreateSubKey("Command");Subkey.SetValue("","exe文件路径");

这段代码是在 注册表 HKEY_CLASSES_ROOT 下新建vip 的键

结构是这样的

HKEY_CLASSES_ROOT
vip
  (Default) = "URL:vip Protocol"
  URL Protocol= ""
  DefaultIcon
   (Default) = "c:\somepath\APPTest.exe"
  shell
   open
    command
     (Default) = "c:\somepath\APPTest.exe" "%1"

创建完以后当你点击这样(vip:123-MonacoGP-19279-Senna)的链接,就可以打开外部的自己定义的应用程序了.

当然winform 应用程序还可以接收你传过来的值

比如 EXE应用程序启动的时候接收链接传过来的 123-MonacoGP-19279-Senna字符串,你可以在winform 启动的时候捕获这个值
[STAThread]static void Main(string[] args){if (args.Length > 0){//arg[0]就是刚刚链接传过来的// 赋值=arg[0];}Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}

如何给IE工具栏添加图标和按钮,菜单,打开自己的应用程序?
可以看看这篇
http://www.codeproject.com/useritems/CorKatIEExtension.asp

关于快速的操作注册表
你可以参考
http://www.codeproject.com/cs/system/quickregistry1.asp

本文来源http://www.codeproject.com/aspnet/APPHyperlinks.asp

//

上面所有链接文章的源代码下载地址

http://www.blogjava.net/Files/wujun/APPTest.rar

//END

相关推荐

    一个实现ActionScript 与JavaScript 进行相互通信的程序例子

    2. **定义可调用的ActionScript方法**:在ActionScript中定义一个公开的方法,这个方法会被JavaScript调用。例如: ```actionscript public function callFromJavaScript(param1:String):void { trace("Received ...

    js调用as函数方法例子

    由于JavaScript和ActionScript之间的通信涉及到浏览器和Flash Player之间的跨域调用,因此可能会有性能开销。在处理大量数据或频繁调用时,应优化交互设计以减少不必要的通信。 7. **错误处理** 两边的错误处理也...

    flash与java交互的方法

    - **`methodName`**: `String`类型,从JavaScript调用ActionScript函数时可使用的名称。此名称不必与ActionScript方法的实际名称匹配。 - **`instance`**: `Object`类型,在该方法中被解析成的对象。此对象不一定是...

    Flex与JavaScript交互实例

    首先,我们看一个Flex调用JavaScript的例子。在`FlexConnectJavaScript.mxml`中,我们定义了一个Flex应用程序,其中包含一个按钮和一个标签。当用户点击按钮时,会触发`invokeJavaScript`函数,这个函数使用`...

    vb 与flash9直接通信的实例

    2. **ActionScript与VB通信接口**:Flash的ActionScript代码可以通过定义外部接口(External Interface)暴露给VB,使得VB可以通过JavaScript-like语法调用Flash的函数。 3. **VB代码示例**:在VB中,你可以使用如`...

    flex 与 js 通信的小例子

    ActionScript代码会定义一个可从JavaScript调用的方法,例如: ```actionscript if (ExternalInterface.available) { ExternalInterface.addCallback("callFromJS", function(param1, param2):void { // 处理来自...

    Flex4.6-js修正版,之前一版JS无法调用flex,特此纠正

    - 另一方面,Flex也可以监听浏览器的事件,例如通过`ExternalInterface.addCallback('jsFunction', flexFunction)`注册一个回调函数,当JavaScript调用`jsFunction()`时,`flexFunction`会被执行。 4. **错误排查*...

    SWFUpload例子

    SWFUpload是一个开源的JavaScript库,它允许网页在不依赖Flash插件的浏览器环境中实现复杂的文件上传功能。这个工具在2006年由Vivantech公司开发,目的是解决传统HTML表单上传文件的限制,如无法批量上传、进度显示...

    flash 小游戏

    开发者可以使用Flash Professional编辑.FLA文件,然后导出为.FLV(Flash视频)或.SWF(Flash播放器可执行文件)格式,供用户在线游玩。 4. **打地鼠游戏机制**:游戏通常有分数系统,每成功击中一只地鼠,玩家得分...

    flashpaper api外部调用例子(查找字符串,隐藏ui,翻页)

    FlashPaper API 是Adobe Flash的一个组件,它允许开发者将动态文档如PDF、Word文档转换为交互式的Flash文件,便于在网络上传播和展示。这个API提供了丰富的功能,包括对生成的FlashPaper文档进行各种操作,比如搜索...

    swfupload-example

    3. **上传触发**:JavaScript调用SWFUpload API开始上传,Flash组件开始向服务器发送文件数据。 4. **进度反馈**:SWFUpload通过事件回调向JavaScript报告上传进度,更新UI展示进度条。 5. **服务器响应**:服务器...

    《在网页中调用VC写的对话框》配套源代码

    在这个例子中,VC++被用来编写这个OCX控件,它包含了一个对话框的实现,可以在网页中被调用。 2. `testocx.htm`:这是一个HTML文件,通常用于测试ActiveX控件。在HTML代码中,开发者会通过`&lt;OBJECT&gt;`标签或者`...

    flex与JS交互示例

    3. 在HTML文件(index.template.html)中,添加JavaScript代码,监听Flex的调用,并可能更新HTML元素的内容或执行其他操作。 4. 部署Flex应用到HTML页面,确保Flash Player设置正确,运行示例。 通过这个示例,你...

    精通JavaScript

    • 1.3.htm 调用外部JavaScript文件 • 1.3.js 1.3.htm使用的外部JavaScript文件 第2章(\第2章) • 2.1.htm Infinity应用 • 2.2.htm NaN与isNaN()的用法 • 2.3.htm Infinity值...

    精通javascript

    • 1.3.htm 调用外部JavaScript文件 • 1.3.js 1.3.htm使用的外部JavaScript文件 第2章(\第2章) • 2.1.htm Infinity应用 • 2.2.htm NaN与isNaN()的用法 • 2.3.htm Infinity值...

    Asp.net上传视频时将视频格式转换成.flv格式(我只试过AVI)

    // FFmpeg可执行文件路径 startInfo.Arguments = $"-i \"{sourceFilePath}\" -vcodec flv -acodec libmp3lame -ar 22050 -ab 64k -f flv \"{targetFilePath}\""; startInfo.UseShellExecute = false; startInfo....

    网管教程 从入门到精通软件篇.txt

    EXE:可执行文件(程序) F FAV:Microsoft Outlook导航条 FAX:传真类型图像 FCD:虚拟CD-ROM FDF:Adobe Acrobat表单文档文件 FLA:Macromedia Flash电影 FND:Microsoft Explorer保存的搜索文件(Find ...

    jquery模仿flash动画导航菜单

    在这个例子中,`.menu`是导航菜单的类名,`500`是动画执行的时间,单位为毫秒。`.stop()`用于停止当前进行的动画,避免鼠标快速移动时动画的堆积。 此外,还可以使用jQuery的其他方法如`.fadeToggle()`、`.slideUp...

    js弹出层包含flash 不能关闭隐藏的2种处理方法

    在JavaScript和Flash交互的场景中,有时会遇到一个棘手的问题:当JavaScript尝试关闭或隐藏一个包含Flash内容的弹出层时,操作无法正常执行。这种情况可能是由于Flash对象的独立运行机制导致的,使得弹出层尽管其他...

    ASP音乐网站例子程序

    ASP可以调用JavaScript或Flash等客户端技术来控制音频播放。例如,使用HTML5的Audio API可以实现在浏览器中的音频播放、暂停、音量控制等功能。另外,考虑到跨平台兼容性,开发者可能还利用了如Flash Player这样的...

Global site tag (gtag.js) - Google Analytics