我來梳理思路并給你講下邏輯和流程
創(chuàng)新互聯(lián)成立于2013年,我們提供高端網(wǎng)站建設(shè)、重慶網(wǎng)站制作、成都網(wǎng)站設(shè)計、網(wǎng)站定制、營銷型網(wǎng)站建設(shè)、小程序制作、微信公眾號開發(fā)、網(wǎng)站推廣服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為成都封陽臺企業(yè)提供源源不斷的流量和訂單咨詢。
Java想要實現(xiàn)電腦開機自動打開瀏覽器網(wǎng)站需要借助的是開機自啟的EXE,Java自身是不可能繞開系統(tǒng)這一關(guān)的,Windows下的話必須要借助注冊表一類的,實現(xiàn)開機自啟EXE,然后通過EXE執(zhí)行打開瀏覽器訪問指定地址的網(wǎng)站。
思路明確后,我們需要的是一個成品的EXE
代碼上我就不過多解釋了,直接用下面的代碼
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+url);
(就是通過默認(rèn)瀏覽器直接打開指定網(wǎng)頁)
編寫好代碼后開始減小體積,也就是刪除不使用的類以及不使用的字符集編碼
確認(rèn)瘦身后依舊運行正常后,開始進行壓縮,建議是用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"""
直接使用這個時候的安裝腳本和安裝包就可以實現(xiàn)了
開機自動啟動這個編寫好的EXE,然后這個EXE就自動打開默認(rèn)瀏覽器并訪問指定網(wǎng)頁了
打開網(wǎng)頁,可以這樣
java.lang.Object
extended by java.lang.Runtime
Process exec(String command)
Executes the specified string command in a separate process.
command 指向IE,將URL當(dāng)參數(shù),如
"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.");
}
}
}
網(wǎng)頁地址在代碼中的java代碼寫法如下:
package com.test;
import java.lang.reflect.Method;
//實現(xiàn)打開瀏覽器并跳到指定網(wǎng)址的類
public class BareBonesBrowserLaunch {
public static void openURL(String url) {
try {
browse(url);
} catch (Exception e) {
}
}
private static void browse(String url) throws Exception {
//獲取操作系統(tǒng)的名字
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++)
//執(zhí)行代碼,在brower有值后跳出,
//這里是如果進程創(chuàng)建成功了,==0是表示正常結(jié)束。
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
//這個值在上面已經(jīng)成功的得到了一個進程。
Runtime.getRuntime().exec(new String[] { browser, url });
}
}
}
//主方法 測試類
public static void main(String[] args) {
String url = ""; ? ? ?
BareBonesBrowserLaunch.openURL(url);
}
步驟:
一、使用java.net包下的URL類,可以將一個網(wǎng)頁(鏈接)封裝成一個URL對象。
二、URL對象有一個openStream()方法,使用該方法可以獲取該網(wǎng)頁的輸入流,我們可以通過讀取輸入流的方式獲得網(wǎng)頁的內(nèi)容,并通過輸出流寫入HTML文件中。
補充:
步驟:
1.通過URL對象的openStream()方法獲得網(wǎng)頁的字節(jié)輸入流 。
2.為字節(jié)輸入流加緩沖 。
3. 創(chuàng)建字節(jié)輸出流對象 。
4. 為字節(jié)輸出流加緩沖 。
5. 讀取數(shù)據(jù),并寫入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();
}
/**
* 打開模態(tài)窗口
* url:鏈接頁面或action動作
* width:打開模態(tài)窗口的寬度
* height:打開模態(tài)窗口的高度
* 注意:打開模態(tài)窗口的頁面中要在head后面加上
* meta http-equiv="Pragma" content="no-cache":禁止模態(tài)窗口緩存
* base target="_self"/:模態(tài)窗口中的表單在本窗口中提交
* a onClick='window.location = "view-source:" + window.location.href'b源文件/b/a 可以查看模態(tài)窗口的源文件
* 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);
}
/**
* 設(shè)置鏈接
* 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";
}