国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

VB.NET啟動(dòng)外部程序

2024-07-10 13:01:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在啟動(dòng)外部應(yīng)用程序時(shí),我們通常使用win32應(yīng)用編程接口或者vb的shell函數(shù)解決?,F(xiàn)在,在.net框架中有個(gè)system.diagnostics.process類(lèi),通過(guò)這個(gè)類(lèi)進(jìn)行這個(gè)操作,你會(huì)發(fā)現(xiàn)方便了很多。
在傳統(tǒng)vb程序中,你可以使用shell函數(shù)啟動(dòng)一個(gè)應(yīng)用程序。當(dāng)你傳送一個(gè)數(shù)據(jù)文件名的時(shí)候,vb在相應(yīng)應(yīng)用程序中打開(kāi)這個(gè)數(shù)據(jù)文件。你可以使用一個(gè)任選的windowstyle參數(shù)控制所啟動(dòng)的應(yīng)用程序的窗口方式。例如,在vb6中,下面這行代碼將啟動(dòng)默認(rèn)的文本編輯器(通常是記事本)并打開(kāi)文件"d:/run.txt":

returnid = shell("d:/run.txt", vbnormalfocus)

雖然通過(guò)microsoft.visualbasic.comaptibility域名空間,在vb.net中仍然能夠使用shell功能,并且它已經(jīng)被做了一些改動(dòng),但在.net框架中它并不是啟動(dòng)應(yīng)用程序的最好的方法,因?yàn)閟hell函數(shù)有一些嚴(yán)格的限制條件,其中之一就是只能異步地啟動(dòng)程序;在啟動(dòng)應(yīng)用程序之后,你自己的程序才繼續(xù)運(yùn)行。所以你不能直接使用它來(lái)啟動(dòng)一個(gè)程序,并且只能等到這個(gè)程序退出,你才能返回到你自己的程序中。為了在傳統(tǒng)vb中做到這點(diǎn),你必須求助于windows api,而這需要對(duì)窗口句柄、過(guò)程識(shí)別號(hào)、枚舉最高級(jí)窗口等有所了解。
  使用.net,就能使這個(gè)操作變得很簡(jiǎn)單。你可以使用system.diagnostics域名空間中的process類(lèi)來(lái)啟動(dòng)外部程序。你可以簡(jiǎn)單的使用共享的process.start方法啟動(dòng)一個(gè)新的過(guò)程,把一個(gè)可執(zhí)行文件名或者可執(zhí)行應(yīng)用程序的擴(kuò)展關(guān)聯(lián)文件名作為參數(shù)傳輸給它。例如,下面的代碼啟動(dòng)"d:/run.txt"文件。

system.diagnostics.process.start ("d:/run.txt")

  start方法有一個(gè)超載的版本,能返回一個(gè)process對(duì)象,所以你可以獲得對(duì)啟動(dòng)的過(guò)程的引用,并可用于多種用途:

dim myprocess as process = system.diagnostics.process.start
("d:/run.txt")
messagebox.show(myprocess.processname)

  初看起來(lái),你看上去好象喪失了控制窗口風(fēng)格的能力(還記得shell函數(shù)的第二個(gè)參數(shù)嗎?),但是事實(shí)情況并非如此。在很多情況下,你不需要明確地設(shè)置窗口風(fēng)格,因?yàn)槟J(rèn)情況是在一個(gè)帶有焦點(diǎn)的正常窗口(processwindowstyle.normal)中啟動(dòng)過(guò)程。但是如果你想使用一個(gè)不同的窗口風(fēng)格時(shí),可以使用超載的process.start方法接收一個(gè)processstartinfo對(duì)象參數(shù)而不是一個(gè)簡(jiǎn)單的字符串。為了使用它,首先要?jiǎng)?chuàng)建一個(gè)processstartinfo對(duì)象,然后設(shè)置進(jìn)程初置值。兩個(gè)超載方法讓你設(shè)置一個(gè)文件名或者一個(gè)文件名和一組命令行參數(shù)。并且processstartinfo對(duì)象還有一個(gè)windowstyle屬性,由system.diagnostics.process.windowstyle枚舉的值組成。所以你可以調(diào)用process.start方法并傳送一個(gè)processstartinfo對(duì)象來(lái)控制啟動(dòng)的窗口的風(fēng)格。

dim psinfo as new _
system.diagnostics.processstartinfo _
("d:/run.txt")
psinfo.windowstyle = _
system.diagnostics.processwindowstyle.normal
dim myprocess as process = _
system.diagnostics.process.start(psinfo)

  由于process類(lèi)有一個(gè)startinfo屬性,它是一個(gè)processstartinfo對(duì)象,所以另一種產(chǎn)生相同結(jié)果的方法是創(chuàng)建一個(gè)process對(duì)象并設(shè)置它的startinfo屬性。在預(yù)創(chuàng)建的process對(duì)象的時(shí)候,你可以?xún)H僅調(diào)用它的start方法,而不需使用process類(lèi)的共享start方法。

dim myprocess as system.diagnostics.process = _
new system.diagnostics.process()
myprocess.startinfo.filename = _
"d:/run.txt"
myprocess.startinfo.windowstyle = _
system.diagnostics.processwindowstyle.normal
myprocess.start
在設(shè)計(jì)期間設(shè)置process參數(shù)

  另外,.net框架出廠(chǎng)時(shí)已經(jīng)帶有在設(shè)計(jì)期間封裝這些代碼的process組件。你可以在工具欄的components欄目中找到它。為了使用它,把一個(gè)process組件拖到你的窗體上,然后在屬性窗口展開(kāi)startinfo屬性。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和平县| 望城县| 册亨县| 江阴市| 乌拉特前旗| 东方市| 嘉峪关市| 昌江| 民权县| 区。| 姚安县| 宝山区| 临邑县| 行唐县| 富宁县| 景东| 安宁市| 望谟县| 普安县| 墨竹工卡县| 宝鸡市| 天峻县| 普兰县| 府谷县| 古田县| 红河县| 同仁县| 都江堰市| 鲜城| 虹口区| 荆门市| 内乡县| 吉木乃县| 乐东| 南丰县| 苏州市| 会泽县| 民丰县| 皋兰县| 新乡市| 界首市|