如何通過程式程式碼開啟EXE應用或者檔案
阿新 • • 發佈:2018-12-21
通過Java後臺呼叫本地exe程式
JAVA後臺無法實現開啟客戶端上的應用程式以及檔案,是由於JAVA本身的安全性限制,只能開啟伺服器本地的程式以及檔案,直接上程式碼,測試執行即可。
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class exec {
/**
* @author Sunxy Create By 2017-9-18 上午11:49:38
* @do TODO
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
useProcessBuilder();
useAWTDesktop();
useRuntimeExec();
}
/**
* 藉助java.lang.ProcessBuilder開啟
* @throws IOException
*/
private static void useProcessBuilder() throws IOException{
//new ProcessBuilder("notepad.exe", "C:/Users/Jadyer/Desktop/test file/readme.txt").start();
List<String> commands = new ArrayList<String>();
commands.add("D:/softWare/WeChat/WeChat.exe");
//commands.add("F:/C.Project/便籤.txt");
new ProcessBuilder(commands) .start();
}
/**
* 藉助java.awt.Desktop開啟
* @see 開啟的目錄或檔名中允許包含空格
*/
private static void useAWTDesktop() throws IOException{
Desktop.getDesktop().open(new File("F:/C.Project/便籤.txt"));
}
/**
* 藉助java.lang.Runtime開啟
* @see WPS文字--------Runtime.getRuntime().exec("cmd /c start wps")
* @see WPS表格--------Runtime.getRuntime().exec("cmd /c start et")
* @see WPS演示--------Runtime.getRuntime().exec("cmd /c start wpp")
* @see Office Word---Runtime.getRuntime().exec("cmd /c start winword")
* @see Office Excel--Runtime.getRuntime().exec("cmd /c start excel")
*/
private static void useRuntimeExec() throws IOException{
/*
* 若開啟的目錄或檔名中不包含空格,就用下面的方式
*/
Runtime.getRuntime().exec("cmd /c start D:/softWare/WeChat/WeChat.exe");
Runtime.getRuntime().exec("cmd /c start F:/C.Project/便籤.txt");
/*
* (可以'執行'或'Win+R',然後輸入'cmd /?'檢視幫助資訊)
*/
//Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "D:/my local/測試用例.xls"});
/*
* 藉助本地安裝程式開啟
* 若開啟的目錄或檔名中包含空格,它就無能為力了..不過本地程式的安裝目錄允許含空格
*/
String etCommand = "D:/Program Files/WPS/8.1.0.3526/office6/et.exe";
String filePath = "D:/mylocal/測試用例.xls";
Runtime.getRuntime().exec(etCommand + " " + filePath);
}
/**
* public static void main(String[] args) {
String path = "D:\\public.bat";
Runtime run = Runtime.getRuntime();
try {
// run.exec("cmd /k shutdown -s -t 3600");
Process process = run.exec("cmd.exe /k start " + path);
InputStream in = process.getInputStream();
while (in.read() != -1) {
System.out.println(in.read());
}
in.close();
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
*/
}
JS開啟客戶端上的應用程式或者檔案(登錄檔方式)
如果要實現通過點選頁面上,開啟本地程式,則使用js程式碼來是實現。
- 使用記事本(或其他文字編輯器)建立一個openWeChat.reg檔案,並寫入以下內容(還可以傳遞引數)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\openWeChat]
@="URL:openWeChat Protocol"
"URL Protocol"="D:\\softWare\\WeChat\\WeChat.exe"
[HKEY_CLASSES_ROOT\openWeChat\DefaultIcon]
@="D:\\softWare\\WeChat\\WeChat.exe"
[HKEY_CLASSES_ROOT\openWeChat\shell]
[HKEY_CLASSES_ROOT\openWeChat\shell\open]
[HKEY_CLASSES_ROOT\openWeChat\shell\open\command]
#@="cmd /c set m=%1 & call set m=%%m:openNotepad:=%% & call \"D:\\softWare\\Notepad++\\notepad++.exe\" %%m%% & exit"
@="D:\\softWare\\WeChat\\WeChat.exe"
- 修改引數,按下圖修改這幾處後,儲存為xxx.reg檔案,雙擊執行,登錄檔註冊成功。
- 呼叫,在html中引用
<a href="openWeChat:">微信</a>
openWeChat 對應登錄檔中的名稱,注意後面的冒號不要丟掉
<!-- 操作 選單 -->
<li class="menu-item">
<div class="menu">
<a class="menu-hd" style="width:68px;">操作<b class="bt"></b></a>
<div class="menu-bd" style="width:80px;line-height:1.7;" role="menu" aria-hidden="true" id="menu-4">
<div id = "oper">
<a href="openWeChat:">微信</a>
</div>
</div>
</div>
</li>