公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

如何在網(wǎng)頁(yè)端啟動(dòng)WinForm 程序

admin
2024年2月19日 18:4 本文熱度 1257

 在逛淘寶或者使用QQ相關(guān)的產(chǎn)品的時(shí)候,比如淘寶我要聯(lián)系店家點(diǎn)擊旺旺圖標(biāo)的時(shí)候能夠自動(dòng)啟動(dòng)阿里旺旺進(jìn)行聊天。之前很奇怪為什么網(wǎng)頁(yè)端能夠自動(dòng)啟動(dòng)客戶端程序,最近在開(kāi)發(fā)吉特倉(cāng)儲(chǔ)管理系統(tǒng)的時(shí)候也遇到一個(gè)類似的問(wèn)題,因?yàn)槭褂镁W(wǎng)頁(yè)端的打印效果并不是太好,之前也寫過(guò)關(guān)于打印相關(guān)的文章可以查閱,我需要使用WinForm客戶端來(lái)驅(qū)動(dòng)打印,但是我又不想重新開(kāi)發(fā)Winform客戶端的所有功能,只要能夠使用winform驅(qū)動(dòng)打印即可。我就需要一個(gè)類似阿里旺旺一樣的功能,點(diǎn)擊網(wǎng)頁(yè)上的按鈕啟動(dòng)WinForm程序,并且傳遞一定的參數(shù)。

 

  一. 注冊(cè)協(xié)議

    在網(wǎng)上查閱相關(guān)資料,要在網(wǎng)頁(yè)中啟動(dòng)相關(guān)的Winform程序,可以使用注冊(cè)表自定義協(xié)議來(lái)完成,一下是完成的步驟:

    (1) 在命令行(cmd)輸入regedit 可以打開(kāi)注冊(cè)表的預(yù)覽窗體

    (2) 自定義協(xié)議的名稱為gitwms,名字可以隨意,盡量取的有意義

    (3) 在注冊(cè)表 HKEY_CLASSES_ROOT 下添加項(xiàng)項(xiàng): 右鍵選擇該節(jié)點(diǎn),新建-項(xiàng)-在樹(shù)節(jié)點(diǎn)中輸入?yún)f(xié)議名稱 gitwms

    (4) 選中g(shù)itwms節(jié)點(diǎn),在右側(cè)列表框中雙擊默認(rèn)項(xiàng),在數(shù)值數(shù)據(jù)輸入框中輸入 “URL:自定義協(xié)議” , 網(wǎng)上說(shuō)可以隨意些,沒(méi)有測(cè)試,輸入此值測(cè)試成功

    (4) 然后在列表中右鍵 新建 字符串值, 在名稱欄輸入 "URL Protocol", 然后雙擊該項(xiàng)在數(shù)據(jù)這一欄輸入 "URL Protocol"  , 數(shù)據(jù)欄數(shù)據(jù)隨意

    (5) 在gitwms 節(jié)點(diǎn)下新建項(xiàng): "shell"

    (6) 在"shell" 項(xiàng)下新建項(xiàng):"open"

    (7) 在"open"項(xiàng)下新建項(xiàng):"command"

    (8) 選中command項(xiàng),右側(cè)列表中雙擊默認(rèn)這一行,在數(shù)據(jù)數(shù)值這一項(xiàng)中輸入 "D:\Print.exe" "%1"  , 注意這里的 引號(hào)是要的,前面是程序的絕對(duì)路徑,后面暫且固定吧【還未完全弄懂】

 

  二. 網(wǎng)頁(yè)測(cè)試

    在記事本中編輯 <a href="gitwms:441">點(diǎn)擊這里啟動(dòng)程序</a>  內(nèi)容, 然后另存為網(wǎng)頁(yè)格式,使用瀏覽器打開(kāi)。

     

    點(diǎn)擊網(wǎng)頁(yè)上的連接,會(huì)出現(xiàn)如上對(duì)話框。和啟動(dòng)阿里旺旺的比較類似了,應(yīng)該說(shuō)離成功不遠(yuǎn)了。點(diǎn)擊按鈕啟動(dòng)應(yīng)用 就可以啟動(dòng)客戶端程序了

    

    注冊(cè)表添加之后的結(jié)構(gòu)如上圖

 

  三. 難道每次都手工添加注冊(cè)表

    上面注冊(cè)表的操作都是使用手工處理的,這樣在安裝程序的時(shí)候多麻煩, 要是能夠?qū)崿F(xiàn)使用程序注冊(cè)注冊(cè)表,那就省事多了。這個(gè)在很多程序中都有這樣的功能,使用.NET也可以很方便的操作注冊(cè)表。注冊(cè)表分為幾個(gè)節(jié)點(diǎn),注冊(cè)表開(kāi)頭分支,也叫根分支,分別是:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG。

    (1)使用RegistryKey的OpenSubKey()方法打開(kāi)注冊(cè)表

    (2)使用RegistryKey的CreateSubKey()方法新建注冊(cè)表

    (3)使用RegistryKey的DeleteSubKey()方法刪除注冊(cè)表

    (4)使用SetValue()方法設(shè)置/創(chuàng)建注冊(cè)表鍵值

    在使用的時(shí)候需要先檢查注冊(cè)表是否存在,如果存在刪除原有的注冊(cè)情況,然后新增注冊(cè)信息。

try

{

Console.WriteLine("正在查找已經(jīng)注冊(cè)的程序.....");

RegistryKey key = Registry.ClassesRoot;

key.DeleteSubKeyTree(@"gitwms");

Console.WriteLine("已經(jīng)清除注冊(cè)程序.....");

}

catch (Exception e)

{

Console.WriteLine("未找到注冊(cè)的程序...");

}


/*===============================================*/

Console.WriteLine("開(kāi)始注冊(cè)程序....");

RegistryKey regWrite = Registry.ClassesRoot.CreateSubKey("gitwms");

regWrite.SetValue("", "URL:自定義協(xié)議");

regWrite.SetValue("URL Protocol", "URL Protocol");

regWrite.Close();


regWrite = Registry.ClassesRoot.CreateSubKey(@"gitwms\shell");

regWrite.Close();


regWrite = Registry.ClassesRoot.CreateSubKey(@"gitwms\shell\open");

regWrite.Close();


regWrite = Registry.ClassesRoot.OpenSubKey(@"gitwms\shell\open", true);

RegistryKey aimdir = regWrite.CreateSubKey("command");


string BaseDirectory=AppDomain.CurrentDomain.BaseDirectory;

string AppPath = Path.Combine(BaseDirectory, "OWorld.Cloud.Resource.Download.exe");


aimdir.SetValue(@"", "\""+AppPath+"\" \" %1\"");


regWrite.Close();

aimdir.Close(); 

    使用以上代碼可以輕松的實(shí)現(xiàn)注冊(cè)的寫入, 并且完全滿足剛才自定義協(xié)議的規(guī)則。這里我們將注冊(cè)的程序做成一個(gè)register.exe 程序, 放到要啟動(dòng)的客戶端程序根目錄下, 在使用前使用管理員身份運(yùn)行注冊(cè)程序,便于獲取啟動(dòng)程序的根路徑寫入到注冊(cè)表。

這里有一個(gè)地方是值得注意的,新建注冊(cè)表之后就會(huì)出現(xiàn)一項(xiàng) (默認(rèn)) 的鍵值數(shù)據(jù), 剛開(kāi)始無(wú)論怎樣都不能往這個(gè)項(xiàng)中寫入數(shù)據(jù), 是自己沒(méi)有弄明白的,這里是一個(gè)坑。 在使用SetValue() 賦值的時(shí)候,需要將Key 設(shè)置為 "", 不然不能往(默認(rèn))這一項(xiàng)中寫入值。

 

  四. 如何傳遞參數(shù)

    啟動(dòng)了客戶端程序這遠(yuǎn)遠(yuǎn)還不夠,如何能夠?qū)⒕W(wǎng)頁(yè)上的參數(shù)傳遞到客戶端程序中。

static void Main(string[] args)

    關(guān)鍵點(diǎn)就在這里, 主程序進(jìn)入之后,使用參數(shù)數(shù)組 args 接收外來(lái)參數(shù)。

<a href="gitwms:441">點(diǎn)擊這里啟動(dòng)程序</a>

    點(diǎn)擊這個(gè)連接會(huì)將參數(shù) gitwms:441 全部傳入到args中,  gitwms:****  后可以跟任意的參數(shù), 包括JSON字符串。這樣就方便多了,獲取參數(shù)之后就可以做相應(yīng)的操作。

  以上程序操作是為了啟動(dòng)客戶端的打印而做的,這里不一定做的很好,但是也不失為一種辦法。


該文章在 2024/2/19 18:04:08 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91日日夜夜人人精 | 国产福利电影一区二区三区 | 国产精品一级免费av | 国产精品va无码一区二区 | 国产av午夜精品一区二区 | 18禁成人免费网站在线看 | 国产一区欧美日韩另类 | 动漫成年美女黄漫网站在线观看 | 国产精品嫩草久久久久 | 高清不卡av一区二区 | 国产成人久久婷婷精 | 国产成人手机版免费播放 | 国产免费高潮白浆二区三区 | 国产精品免费高清观看 | 国产黄色二级片 | 国产精品不卡在线观看的a站 | 国产在线高清理伦片a电影 国产在线高清仑片a | 成人精品一区二区三区电影 | 国模吧无码一区 | 国产精品亚洲专区在线 | 国产精品爆乳在线播放第一人称 | 岛国无码av潮喷 | 国产日韩免费视频在线观看 | 国产秘精品入口免费软件 | 国产成人精品视频免费网站 | 国产精品无码专区av在线播放 | 成人午夜激情福利动态 | 国产一区视频 | 97午夜理论电影影院 | 国产av一级毛片一区 | 国产精品国产三级厂七 | 国产毛片久久久久久国产毛片 | 福利一区二区 | 国产综合成色在线视频 | 精品视频精品国产免费视 | 精品无码日韩一区二区三区不卡 | 国产成人av区一区二区三 | 国产午夜a理论毛片在线影院 | 国产gv猛男gv无 | 国产无套精品一区二区三区 | 精品亚洲一区二区三区 |