我来梳理思路并给你讲下逻辑和流程
创新互联成立于2013年,我们提供高端网站建设、重庆网站制作、成都网站设计、网站定制、营销型网站建设、小程序制作、微信公众号开发、网站推广服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都封阳台企业提供源源不断的流量和订单咨询。
Java想要实现电脑开机自动打开浏览器网站需要借助的是开机自启的EXE,Java自身是不可能绕开系统这一关的,Windows下的话必须要借助注册表一类的,实现开机自启EXE,然后通过EXE执行打开浏览器访问指定地址的网站。
思路明确后,我们需要的是一个成品的EXE
代码上我就不过多解释了,直接用下面的代码
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+url);
(就是通过默认浏览器直接打开指定网页)
编写好代码后开始减小体积,也就是删除不使用的类以及不使用的字符集编码
确认瘦身后依旧运行正常后,开始进行压缩,建议是用pack200,效果贼好
然后把程序打成jar包,然后在上层目录编写启动批处理
编写完成后测试程序能否正常启动,如果不行就检查下是不是少类了
然后把批处理编成EXE,QBFC比较好用,如果做安装包的话记得挂G模式,InnoSetup这里也可以耍一下
这个时候我们就获取到了一个安装脚本,然后我们要做的就是修改安装脚本的代码
在脚本中加上下面的一段
[Registry]
Root: HKLM; Subkey: "SOFTWARE/Microsoft/Windows/CurrentVersion/Run"; ValueType: string; ValueName: "程序名"; ValueData: """{app}/main.exe"" ""{app}/jre/bin"""
直接使用这个时候的安装脚本和安装包就可以实现了
开机自动启动这个编写好的EXE,然后这个EXE就自动打开默认浏览器并访问指定网页了
打开网页,可以这样
java.lang.Object
extended by java.lang.Runtime
Process exec(String command)
Executes the specified string command in a separate process.
command 指向IE,将URL当参数,如
"c:\program files\Internet Explorer\IExplorer.exe "
参考代码如下:
package demo;
import java.util.Properties;
import java.io.IOException;
public class OpenIExplore{
public static void main(String[] args) throws IOException{
Properties properties = System.getProperties();
String osName = properties.getProperty("os.name");
System.out.println (osName);
if (osName.indexOf("Linux") != -1) {
Runtime.getRuntime().exec("htmlview");
} else if (osName.indexOf("Windows") != -1){
Runtime.getRuntime().exec("explorer ");
} else {
throw new RuntimeException("Unknown OS.");
}
}
}
网页地址在代码中的java代码写法如下:
package com.test;
import java.lang.reflect.Method;
//实现打开浏览器并跳到指定网址的类
public class BareBonesBrowserLaunch {
public static void openURL(String url) {
try {
browse(url);
} catch (Exception e) {
}
}
private static void browse(String url) throws Exception {
//获取操作系统的名字
String osName = System.getProperty("os.name", "");
if (osName.startsWith("Mac OS")) {
//苹果的打开方式
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] { String.class });
openURL.invoke(null, new Object[] { url });
} else if (osName.startsWith("Windows")) {
//windows的打开方式。
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
} else {
// Unix or Linux的打开方式
String[] browsers = { "firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" };
String browser = null;
for (int count = 0; count browsers.length browser == null; count++)
//执行代码,在brower有值后跳出,
//这里是如果进程创建成功了,==0是表示正常结束。
if (Runtime.getRuntime().exec(new String[] { "which", browsers[count] }).waitFor() == 0)
browser = browsers[count];
if (browser == null)
throw new Exception("Could not find web browser");
else
//这个值在上面已经成功的得到了一个进程。
Runtime.getRuntime().exec(new String[] { browser, url });
}
}
}
//主方法 测试类
public static void main(String[] args) {
String url = "";
BareBonesBrowserLaunch.openURL(url);
}
步骤:
一、使用java.net包下的URL类,可以将一个网页(链接)封装成一个URL对象。
二、URL对象有一个openStream()方法,使用该方法可以获取该网页的输入流,我们可以通过读取输入流的方式获得网页的内容,并通过输出流写入HTML文件中。
补充:
步骤:
1.通过URL对象的openStream()方法获得网页的字节输入流 。
2.为字节输入流加缓冲 。
3. 创建字节输出流对象 。
4. 为字节输出流加缓冲 。
5. 读取数据,并写入HTML文件 。
/**
* 打开打印窗口
* url:链接页面或action动作
* Banglu
*/
function printWindow(url){
var sURL = url;
var sFeatures = "toolbar=no, menubar=no, scrollbars=no,resizable=yes, "
+ "location=no, status=no, titlebar=no, width=800, height=600, top=100, left=100";
window.open(sURL,'notoolbar',sFeatures);
}function exportWindow(url){
var sURL = url;
var sFeatures = "toolbar=no, menubar=no, scrollbars=no,resizable=yes, "
+ "location=no, status=no, titlebar=no, width=800, height=600, top=50, left=50";
var objwin=window.open(sURL,'export'+randomNum(),sFeatures);
objwin.close();
}
/**
* 打开模态窗口
* url:链接页面或action动作
* width:打开模态窗口的宽度
* height:打开模态窗口的高度
* 注意:打开模态窗口的页面中要在head后面加上
* meta http-equiv="Pragma" content="no-cache":禁止模态窗口缓存
* base target="_self"/:模态窗口中的表单在本窗口中提交
* a onClick='window.location = "view-source:" + window.location.href'b源文件/b/a 可以查看模态窗口的源文件
* Banglu
*/
function modalWindow(url, width, height){
var sURL = url;
var sFeatures = "dialogWidth:" + width + "px; dialogHeight:" + height + "px; "
+ "help:no; scroll:yes; center:yes; status:no;resizable:yes";
window.showModalDialog(sURL, window, sFeatures);
}/**
* 打开普通窗口
* url:链接页面或action动作
* width:宽度
* height:高度
* Banglu
*/
function openWindow(url, width, height){
var sURL=url;
var sFeatures = "scrollbars=yes, status=yes, resizable=yes,"
+ "toolbar=yes, menubar=yes, location=yes, titlebar=yes"
if(width!=null){
sFeatures+=", width="+width;
}
if(height!=null){
sFeatures+=", height="+height;
}
window.open(sURL, 'open'+randomNum(), sFeatures);
}/**
* 打开窗口
* url:链接页面或action动作
* width:宽度
* height:高度
Banglu
*/
function openNoBarWindow(url, width, height){
var sURL=url;
var sFeatures = "scrollbars=no, status=no, resizable=no,"
+ "toolbar=no, menubar=no, location=no, titlebar=no"
if(width!=null){
sFeatures+=", width="+width;
sFeatures+=", left="+(screen.width-width)/2;
}
if(height!=null){
sFeatures+=", height="+height;
sFeatures+=", top="+(screen.height-height-100)/2;
}
window.open(sURL, 'openNoBar'+randomNum(), sFeatures);
}
/**
* 打开全屏窗口
* url:链接页面或action动作
* Banglu
*/
function openFullWindow(url){
var sURL=url;
var sFeatures = "toolbar=no, menubar=no, scrollbars=no, resizable=yes, "
+ "location=no, status=no, titlebar=no, width="+(screen.width-10)+", "
+ "height="+(screen.height-60)+", top=0, left=0";
window.open(sURL, 'full'+randomNum(), sFeatures);
}/**
* 打开主窗口
* url:链接页面或action动作
* Banglu
*/
function openMainWindow(url){
var sURL=url;
var sFeatures = "toolbar=no, menubar=no, scrollbars=no, resizable=yes, "
+ "location=no, status=no,titlebar=no, width="+(screen.width-10)+", "
+ "height="+(screen.height-60)+", top=0, left=0";
window.open(sURL, 'main', sFeatures);
}
/**
* 设置链接
* url:连接的jsp页面或action动作
* Banglu
*/
function link(url, frameID){
if(frameID==null){
window.location.href = url;
}
else{
window.frames[frameID].location = url
}
}/**
* 回车代替tab
* Banglu
*/
function handleKey(){
var gk = window.event.keyCode;
if (gk==13) {
if(window.event.srcElement.tagName!='TEXTAREA'){
window.event.keyCode=9;
return;
}
}
}/**
* 全屏显示
* Banglu
*/
function fullScreen(){
window.dialogHeight=window.screen.availHeight;
window.dialogWidth=window.screen.availWidth;
}
function Resize_dialog(t,l,w,h) {
window.dialogTop = t+"px";
window.dialogLeft = l+"px";
window.dialogHeight = h+"px";
window.dialogWidth = w+"px";
}