首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# Visio 二次開發:Web 端啟動繪圖客戶端並自動登入(一)——整體架構與 JavaScript 呼叫實現

     編輯:關於C語言

業務場景

系統包含 Web 後台與 Winform 繪圖客戶端。用戶已登入 Web,點擊按鈕需啟動客戶端並自動登入(免再次輸入帳密)。

整體技術路線

  1. ASP.NET 頁面按鈕 → JavaScript 函式啟動程式
  2. 客戶端環境變數 PATH 包含應用程式目錄
  3. Winform Main(string[] args) 解析參數自動登入

ASP.NET 頁面 JavaScript 實現


// 按鈕 onclick 或超連結 href
Javascript:Run('EDNMS.UI.exe -u admin -p 4f5a51484e3c639b7c0e606511fe062d5f55aa0509638b385ed179e6d7fe4e9b7342f04c7c74b625574d6aa009693f386cef7b49536c3a4bfb5372675e76bb134f746a84466b7da86703');

<script type="text/Javascript" language="JavaScript">
function Run(command)
{
    window.oldOnError = window.onerror;
    window._command = command;
    window.onerror = function (err) {
        if (err.indexOf('automation') != -1) {
            alert('命令已經被用戶禁止!'); return true;
        } else return false;
    };
    try {
        var wsh = new ActiveXObject('WScript.Shell');
        if (wsh) wsh.Run(command);
        window.onerror = window.oldOnError;
    } catch (e) {
        alert('找不到文件 EDNMS-DE.EXE(或它的組件之一)。請確定路徑和文件名是否正確,而且所需的庫文件均可用。')
    }
}
</script>

關鍵技術點解析

  • ActiveXObject('WScript.Shell'):IE 專有,提供本地程式啟動能力
  • wsh.Run(command):非同步啟動,不等待結束
  • 錯誤處理:攔截 automation 錯誤(安全性阻擋),友善提示
  • 參數傳遞:-u 帳號 -p 加密身分識別碼,密碼不直接傳輸
  • onerror 保護:暫存原錯誤處理器,執行完畢還原

前置條件

  • IE 安全性設定允許 ActiveX 腳本執行(參考第 4 部分圖示)
  • 客戶端已安裝且路徑在系統 PATH 中
  • 伺服器端產生加密 Token(-p 參數),客戶端驗證解密
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved