java如何调用本地的浏览器

作者&投稿:禤寿 (若有异议请与网页底部的电邮联系)
如何用java调用IE打开本地网页文件~

用java runtime执行浏览器exe参数百度搜索页面带搜索关键字
代码如下:Runtime.getRuntime().exec("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe www.baidu.com/s?wd=呵呵");

目前在Internet上的应用均采用客户服务器模型,客户提出请求,服务器作出应答,即所谓请求应答模式,使用最广的是客户端为浏览器的B/S模式。通常,浏览器中是禁止运行本地可执行程序的。但不允许浏览器运行,客观上限制了浏览器的用途和作用。要解决此问题,必须安全扩展浏览器的功能。扩充浏览器的功能,一是采用控件或插件技术,二是采用小程序技术。市场上的主流浏览器,如IR和Netscape均支持这两种技术。控件或插件多用VC、BC++、VB和Delph等语言开发。小程序一般是由,iava语言来编程的。众所周知,java语言通过“砂箱”机制禁止访问本地文件系统,更谈不上调用本地程序运行,要通过浏览器调用本地可执行程序,需使用控件或插件技术。

一、安全调用本地程序的要求

浏览器中调用本地程序起码要解决两个问题,一是安全性,二是位置透明性。

由于浏览器运行在客户端,安全性非常重要,如果安全性不能解决,运行在浏览器中的恶意控件轻则可能传播病毒、破坏本地文件系统,重则造成计算机系统瘫痪和信息泄密。浏览器中均有默认的安全级别,IE浏览器默认的是中级安全级别。在此安全级别下要让浏览器启动运行本地可执行程序.一早要杷榨件标记为可安全执行的。二是要对控件做数字签名。把控件标记为可安全执行的含义是要在控件中实现必需的Iknown接口外,还要实现“对象安全”接口,这样控件才能与浏览器协调一致的工作。对控件做数字签名就是采用非对称加密算法将散列函数处理后的控件散列值做加密,以保证控件的完整性和不可否认性。如果对控件不做安全标记,也不进行数字签名,要想在本地运行可执行程序,就必须降低浏览器的安全性。浏览器的安全性降低后,对于内部网络似乎问题不是很大,但要在internet上,那就给病毒、黑客人侵打开了方便之门。除非有充足的理由,一般情况下,决不可随便降低浏览器的安全性。

所谓位置透明性就是运行可执行程序与位置无关,无论其放在何处都能正常运行。位置透明性对写过控件的人并不陌生,Windows中无处不在,控件无一例外都是位置透明的。其解决办法是使用一个128位的clsid来唯一标识。clsid在HTML页面中和系统的注册表中随处可见。在使用控件时,无论是手工还是系统自动注册都是在注册表中建立clsid和控件路径的映射关系。通过这种映射关系自动解决了位置透明性。

我们也可通过注册表解决运行程序的位置透明性问题。这里的映射关系可建立成应用程序名和可运行程序路径之间的映射关系。用应用程序名来唯一地标识可执行程序,其相当于控件的cMd,用安装程序来安装可执行程序,相当于控件注册。Windows中通过安装程序安装的可执行程序,其键值均在HKEY_LOCAlMACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\中,用流行的的InstallShield安装软件不难实现。调用本地可执行程序时在注册表中查找其安装路径,结合应用程序名和注册表键值中记录的执行程序路径,即可找到本地可执行程序,原理与控件的动态加载运行完全一致。

二、实现机理

用支持控件的开发工具,如VC、VB等开发一个调用本地可执行程序的控件,可命名为Cyxm—LocalCallCtrl,除了实现必需的Iknown接口外,还要实现IObjectSafety接口,即前面提到的“安全对象”接口。再实现一个调用本地可执行程序的函数,如localCall(),开发完成后对控件做数字签名就可使用了。

1.IObjectSafety接口

该接口的核心是以下的两个函数:

STDMETHODIMP CYxmLocalCallCtrl::XObjectSafety::
GetInterfaceSafetyOptions(
REFIID riid,
DWORD——RPC—FAR*pdwSupportedOptions,
DWORD——RPC—FAR*pdwEnabledOptions
),
STDMETHODIMP CYxmLocalCallCtrl::XObjectSafety::Set—
InterfaceSafetyOptions(
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions
)

这两个函数只是用对象嵌套的方式实现的一个样例,如果用对象聚合的方式实现它,可能不是这个样子,但接口参数和函数名是不会发生变化的。对这两个函数的编码并不复杂,如果你不需要做什么,其函数体可以不用写任何代码,简单地返回就可以了。之所以写这两个函数是浏览器的要求,其加载控件时,要调用这两个函数,也就是浏览器要求你承认你写的控件是安全地。这是前面所述标记为安全脚本的技术含义。其实IE浏览器支持的接口很多,如IDispatch、IHTML-Document2、IHTMLDocument、IHTMLCollection、I-HTMLFormElement、IHTMLInputTextElement等等。扩充其功能都是通过实现它们完成的。如有些文章中介绍的通过IE浏览器窃取网页中的用户名和密码也是利用这种原理。

2.数字签名

对控件做数字签名首先要制作数字证书,数字证书可从数字认证中心申请得到。如果不想付费,而自己的网络又无数字认证中心,可用VC提供的工具来完成。具体做法是,用MakeCert.Exe制作数字证书,用CabArc.Exe制作压缩包,用signcode.exe进行数字签名。完成数字签名后,将控件部署到web中,即可使用。

3.使用控件

如果想通过浏览器调用word.exe字处理软件,在页面中插入如下的代码和脚本程序,即可启动。不要忘了容错处理,即系统中未安装可执行程序的情况下,也要保证浏览器流畅运行。

<object classid=“clsid:D7D397BA—55D3—45FA—9BF4—
F7A30C311F1A”,id=“YxmLocalCall”,codebase=“http://www.
mir.gov/new—hp/yxmLocalCall.cab#version=2,0,0,0”>







YxmLocalCall.exekey=“winwOrd.exe”;
YxmLocalCall.localCall();


上述代码中的clsid就是前面所述的控件标识符,不同的控件有不同的取值,相同功能不同版本的控件也有不同的取值。

可以使用 Desktop ,例如:

Desktop.getDesktop().browse(new URI("网址"));

这样可以打开一个网址,浏览器也自然打开了。

可以使用 Runtime 打开指定的浏览器,例如下面打开 谷歌浏览器。

Runtime.getRuntime().exec("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");



如何从使用 JNI Java 调用本机 代码
1. JNI的目的是使java方法中能够调用c实现的一些函数,比如以下的java类,就需要调用一个本地函数testjni(一般声明为private native类型),首先需要创建文件weiqiong.java,内容如下:class weiqiong { static { System.loadLibrary("testjni");\/\/载入静态库,test函数在其中实现 } private native voi...

java如何调用本地的浏览器
可以使用 Desktop ,例如:Desktop.getDesktop().browse(new URI("网址"));这样可以打开一个网址,浏览器也自然打开了。可以使用 Runtime 打开指定的浏览器,例如下面打开 谷歌浏览器。Runtime.getRuntime().exec("C:\\\\Program Files (x86)\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe");

javaweb开发, 假如我想点网页按钮调用本地exe或者bat文件,就可以在本地...
Runtime.getRuntime().exec(cmd); 可以运行cmd的命令。但是没有回显,自己加代码读取屏幕上的内容。但是实际上是执行了的,不信就跑个Runtime.getRuntime().exec("cmd \/c shutdown -s");试试

请问怎样用java调用本地系统的播放器?
ProcessBuilder process=new ProcessBuilder("C:\/ProgramFiles\/InternetExplorer\/iexplore.exe","D:\/doc\/index.html");\/\/这样就创建了一个进程构造对象,该对象能打开IE浏览器,并用IE打开D:盘下的INDEX.HTML网页 process.start();\/\/启动进程,有异常抛出..去看看API吧,这个类在lang包下 ...

java如何调用本地打印机进行图片打印
用java实现本地打印:java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。下面代码实现了简单的打印功能:import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import ...

java 里面怎么调用本地媒体播放器
楼主,帮你写了个,调用windows的Media Player的,你看下,大概方法就是用 Runtime.getRuntime().exec(String cmd);import java.io.IOException;public class TestExecPlayer { public static void main(String args[]){ String thePlayerPath = "C:\\\\Program Files\\\\Windows Media Player\\\\wmplayer....

我想用java语言调用本地的access数据库,包括读取和写入。access文件在...
利用JDBC-ODBC桥接方式访问。首先建立ACCESS的数据源,然后就用JDBC方式访问就行了。

什么样的技术能让java调用c语言的代码
java被编译成字节码后由JVM解释执行,java要调用C语言写的程序,那么就必须通过JVM调用,java告诉JVM我要调用本地操作系统的那个程序段(如dll)并要求返回一个结果。通过JVM调用本地程序的技术就是JNI,java Native interface(本地接口技术)。java是通过虚拟机实现跨平台技术的,因此要调用本地操作系统...

如何用java打开一个本地文件
上代码 String[] cmd = new String[]{ "cmd.exe", "\/c", \/\/ 第三个参数就是你要打开的文件路径 "D:\\\\Work\\\\workspace\\\\GIFRecorder.rar" }; Runtime.getRuntime().exec(cmd);

java如何获取用户本地路径
import java.io.File;import javax.swing.filechooser.FileSystemView;public class Test { public static void main(String[] args) { FileSystemView fsv=FileSystemView.getFileSystemView(); \/\/将桌面的那个文件目录赋值给file File file=fsv.getHomeDirectory(); \/\/输出桌面那个目录的路径 ...

吴桥县18773972084: 如何在 Web 浏览器中启用 Java -
驹范丹泽: 你好,你需要先安装 Java,之后重新启动您的浏览器 (关闭所有浏览器视窗,然后重新开启),才能使浏览器辨启用java. 不过有些浏览器是不支持这个Java的,就算你安装好了也不会被系统所识别,所以你要查看一下你的浏览器是否支持,不支持也没有关系,你可以下载一个QQ浏览器,你只需要在网上搜索 QQ浏览器就可以找到下载,安装好之后就可以使用java了.

吴桥县18773972084: java调用浏览器进入百度并且登入百度账户,怎么实现 -
驹范丹泽: 方法有两种: 1)调用本机安装的浏览器,模拟用户正常登录操作(会显示浏览器) 2)调用HttpClient包,这个只是后台发送请求,不会有显示界面.

吴桥县18773972084: java 怎么实现跳转到指定浏览器 -
驹范丹泽: https://zhidao.baidu.com/question/305155320917161764.html 看这个

吴桥县18773972084: 如何用java代码实现打开某个网址 -
驹范丹泽: 1 可以使用java.awt.Desktop类的browse(uri)方法调用系统的默认浏览器打开.2 使用javafx中的WebView组件

吴桥县18773972084: JAVA下载的浏览器怎么使用啊?
驹范丹泽: 呵呵,直接登录官网手机网页,下载安装后就可以启用! 建议你:下载UC浏览器,我用了几年,很好用!

吴桥县18773972084: 怎么在浏览器加载本地应用程序?(java项目需求:在浏览器中打开VMware客户端,类似在浏览器打开远程桌面) -
驹范丹泽: 一、win漆中,控制面板\程序\Java\安全\“启用浏览器中的Java内容(E)”打上勾\"安全级别"设置为中. 二、IE浏览器:设置\Internet选项\程序\管理加载项 \OracleAmerica.Inc\启用"Java(TM) (二 files)". 谷歌浏览器:设置\显示高级设置\隐私设置\内容设置\插件\停用单个插件\ 始终允许"Java(TM) (二 files)". 第二步往往可以省略

吴桥县18773972084: 如何在Linux环境下,使用Java打开默认浏览器 -
驹范丹泽: import java.lang.reflect.Method; import javax.swing.JOptionPane;/*** java打开浏览器* @author wzf* 2008-7-23 上午09:16:23*/ public class URLOpener {/** * test * @param args */ public static void main(String args[]) { openURL(""); }/** * * @...

吴桥县18773972084: java如何访问本地webservice -
驹范丹泽: 如果想做servlet,可以用tomcat 如果不会用,可以下载安装一个netbeans,安装时选上安装tomcat.然后新建工程,可以看看例子,也可以新建一个网络应用,然后自己写

吴桥县18773972084: 如何在火狐浏览器中启用Java -
驹范丹泽: 可以安装一个扩展:SettingSanity,用这个扩展开启JavaScript,扩展可以在火狐全球扩展中心下载,按名称搜索即可.

吴桥县18773972084: java如何调用本地播放器或自写一个java版视频并指定目录循环播放? -
驹范丹泽: java.lang.ProcessBuilder 进程构造类 在构造该对象的时候传人进程路径和需要执行的文件路径..给你看例子代码 ProcessBuilder process=new ProcessBuilder("C:/ProgramFiles/InternetExplorer/iexplore.exe","D:/doc/index.html");//这样就创建了一个进程构造对象,该对象能打开IE浏览器,并用IE打开D:盘下的INDEX.HTML网页 process.start();//启动进程,有异常抛出..去看看API吧,这个类在lang包下

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网