標籤:event classes text ica enable and lan 處理 one
果凍棟吖原創內容:未經允許禁止轉載~
怎麼像百度雲那樣通過網頁調起用戶端程式?
先說下我的經曆,愚蠢的我直接同C#CS程式調起本地程式的方法,寫在了網頁上,顯然,這樣是不對的,這樣調起的是伺服器的程式,並不是用戶端程式。
那麼,具體是怎麼操作的呢?
代碼有很多不足之處,肯定會有更好的辦法,如果您有什麼建議,請聯絡我QQ:1772829123或者評論。請各位大佬不吝賜教!
網頁的代碼挺簡單,
MyApp: 是要調起的程式,需要加註冊表資訊
aadmin,123321是傳遞的參數,實際是用字串傳遞過去的,程式開啟後接收的參數是“MyApp:aadmin,123321”。
這個我不知道怎麼處理,直接數組方式傳遞,如果道友知道,希望指導一下!
主要是修改註冊表的資訊。
<input type="button" value="開啟我的應用程式" onclick="openMyApp()"/><script> function openMyApp(){ window.location.href=‘MyApp:aadmin,123321‘; }</script>
註冊表修改需要一個檔案,來增加程式的註冊表資訊,不然沒法調起。這裡寫了一個增加的,一個刪除的。
增加的:
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\MyApp]@="MyApp""URL Protocol"="你的軟體路徑"[HKEY_CLASSES_ROOT\MyApp\DefaultIcon]@="你的軟體路徑,1"[HKEY_CLASSES_ROOT\MyApp\shell][HKEY_CLASSES_ROOT\MyApp\shell\open][HKEY_CLASSES_ROOT\MyApp\shell\open\command]@="\"軟體路徑\" \"%1\""
刪除的:
Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\MyApp]
這樣,就修改好註冊表資訊了,不過實際程式不存在是調用不起來的哦
程式的代碼是這樣的:
首先要修改應用程式的主進入點,也就是Program.cs
static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); string str = string.Empty; if (args.Length > 0) { str = args[0].ToString(); Application.Run(new Form1(str)); } Application.Run(new Form1()); }
通過接收參數來取得網頁傳遞過來的值。
重載Form1的建構函式
public partial class Form1 : Form { public string userName = string.Empty; public string userPwd = string.Empty; public Form1() { InitializeComponent(); } public Form1(string str) { str = str.Replace("myapp:", ""); string[] args = str.Split(‘,‘); if (args.Length>=2) { userName = args[0].ToString(); userPwd = args[1].ToString(); } InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.txtUserName.Text = userName; this.txtUserPwd.Text = userPwd; } }
這裡注意下,當參數傳遞過來的時候MyApp會全部變為小寫~
最後,看一下運行效果:
選擇開啟,就會看到使用者名稱和密碼自動填寫上了,只是測試,介面細節請忽略~
通過網頁調起用戶端程式