? ? ? ? 在使用visual studio創(chuàng)建項(xiàng)目時(shí),網(wǎng)站主體使用Web Application創(chuàng)建,部分功能使用WinForm窗體搭建。當(dāng)時(shí)認(rèn)為都是基于vs平臺(tái)開發(fā)的項(xiàng)目,項(xiàng)目之間相互引用會(huì)很容易,但是實(shí)際上,web頁面由于采用b/s架構(gòu),和WinForm架構(gòu)不兼容,理論上是不允許web調(diào)用winform的。所以作為初學(xué)者想給大家分享一下我的解決方案。
? ? ? ? 在web里調(diào)用winform,實(shí)際是在web頁面里調(diào)用WinForm.exe這個(gè)位于本地的可執(zhí)行文件,通過注冊(cè)表調(diào)用這個(gè).exe文件實(shí)現(xiàn)目標(biāo)。文件在用戶存放winform項(xiàng)目的bin目錄里,如我的存放路徑是這樣子的“C:\Users\source\repos\winform窗體\winform窗體\bin\Debug”。
? ? ? ? 第一步:創(chuàng)建一個(gè)txt文本,進(jìn)行注冊(cè)表生成指令編輯。
Windows Registry Editor Version 5.00?
[HKEY_CLASSES_ROOT\AnmCAD]
@="AnmCADProtocol"?
"URL Protocol"="C:\\Users\\source\\repos\\winform窗體\\winform窗體\\bin\\Debug\\winform窗體.exe"?
[HKEY_CLASSES_ROOT\AnmCAD\DefaultIcon]?
@="C:\\Users\\source\\repos\\winform窗體\\winform窗體\\bin\\Debug\\winform窗體.exe,1"?
[HKEY_CLASSES_ROOT\AnmCAD\shell]?
[HKEY_CLASSES_ROOT\AnmCAD\shell\open]?
[HKEY_CLASSES_ROOT\AnmCAD\shell\open\command]?
@="\"C:\\Users\\source\\repos\\winform窗體\\winform窗體\\bin\\Debug\\winform窗體.exe\" \"%1\""
? ? ? ? ?大概解釋一下代碼,HKEY就是在注冊(cè)表里生成的文件夾順序(如果要?jiǎng)h除注冊(cè)表已添加的事件,只需在HKEY前寫一個(gè)減號(hào)即可),C:...路徑是.exe項(xiàng)目在計(jì)算機(jī)中存儲(chǔ)的絕對(duì)路徑,要注意,這里的分割符不同于在文件夾復(fù)制的地址,是兩個(gè)\\。AnmCAD是這個(gè)指令的名字。一會(huì)在web調(diào)用時(shí)會(huì)用到,可以按自己喜好去寫。寫完后更改文檔后綴名為.reg,雙擊執(zhí)行文件。可以在注冊(cè)表編輯器中看到文件已經(jīng)生成。
????????注意:這里有一個(gè)小的問題,因?yàn)槲业慕^對(duì)路徑里含有中文命名的文件,在編譯中可能會(huì)出現(xiàn)漢字亂碼導(dǎo)致無法正確指向可執(zhí)行文件?,所以最好檢查一下數(shù)據(jù)部分是否和寫入的一樣。如果不一樣直接復(fù)制剛才寫的絕對(duì)路徑,右鍵默認(rèn)點(diǎn)擊修改粘貼進(jìn)去。
?
? ? ? ? ?第二步:在web中引用剛才生成的注冊(cè)信息來調(diào)用exe文件
(1)<a href="AnmCAD://">調(diào)用AnmCAD</a>
????????直接在前端使用該語句調(diào)用,://一定要加這個(gè)符號(hào)才行。
(2)rocessStartInfo startInfo = new ProcessStartInfo("AnmCAD://");
? ? ? ? ? ? ?startInfo.WindowStyle = ProcessWindowStyle.Minimized;//設(shè)置窗體打開尺寸為最小號(hào)
? ? ? ? ? ? ?Process.Start(startInfo);//打開事件AnmCAD
? ? ? ? 使用button控件觸發(fā)后端事件,上述為后端代碼,進(jìn)行調(diào)用。
?????????點(diǎn)擊后瀏覽器顯示如上彈窗,點(diǎn)擊打開即可完成調(diào)用。文章來源:http://www.zghlxwxcb.cn/news/detail-758073.html
????????總結(jié),在網(wǎng)頁中打開本地可執(zhí)行程序是一種危險(xiǎn)行為,所以這種方法要限制使用,測(cè)試中Microsoft 自帶瀏覽器可以執(zhí)行調(diào)用操作,如果還有更好的方法也可以評(píng)論區(qū)一起討論,本文采用的方法來自多個(gè)CSDN博客,具體實(shí)現(xiàn)的時(shí)候很混亂沒有記清是哪個(gè)博主的文章請(qǐng)見諒,只是總結(jié)一個(gè)可用的結(jié)果分享出來。入門小白分享的方法,有不足之處敬請(qǐng)批評(píng)指正。文章來源地址http://www.zghlxwxcb.cn/news/detail-758073.html
到了這里,關(guān)于在Visual Studio的Web頁面調(diào)用WinForm窗體方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!