vb.net中如何等待 vb 等待

VB 如何等待一個程序結(jié)束?

當(dāng)你需要等待由Shell啟動的應(yīng)用程序運(yùn)行完畢時, 便會發(fā)現(xiàn)Shell語句只管調(diào)用,之后就撒手不管了,于 是我們不得不動用一下API函數(shù)了。當(dāng)然我們可以用 API來完成全部的工作,但是如果那樣的話,我們將要 面臨CreateProcess這個非常復(fù)雜的函數(shù),光寫下它 和相關(guān)結(jié)構(gòu)類型的宣告就超出一頁紙了。別誤會,我說這些的目的只是為了讓大家體會到下面我們將要做 的是多么簡單的事。

創(chuàng)新互聯(lián)服務(wù)項目包括同江網(wǎng)站建設(shè)、同江網(wǎng)站制作、同江網(wǎng)頁制作以及同江網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,同江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到同江省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

只需按以下步驟step by step,便OK了。

1.新建一個項目,在窗體上放一個command1,再 添加一個Module。

2. 在Module中寫入如下代碼:

Option Explicit

以下聲明了OpenProcess,GetExitCodeProcess 和Closeandle 三個API函數(shù)

Public Declare Function OpenProcess Lib"ker nel32"(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long)As Long

Public Declare Function GetExitcodeProcess Lib “kernel32”(ByVal hProcess As Long, 1pExitcode As Long) As Long

Public Declare Function Closellandle Lib "Ker nel32”(ByVal hobject As Long) As Long

Publi Const PROCESS_QUERY_INFORMATION= &H400

Public Const STATUS_PENDING = &H103&

3.打開窗體的代碼窗口,寫入如下代碼:

Option Explicit

Private Sub RunShell(cmdline As String) 這個自定義過程完成了所有工作

Dim hProcess As Long

Dim ProcessId As Long

Dim exitCode As Long

ProcessId = Shell(cmdline,1)'此處利用了 Shell當(dāng)函數(shù)使用時返回的任務(wù)標(biāo)識

hProcess=OpenProcess(PROCESS_QUERY_INFOR MATION,F(xiàn)alse,ProcessId)

Do

Ca11 GetExitCodeProcess(hProcess,exitcode)

DoEvents

Loop While exitCode = STATUS_PENDING

Call CloseHandle(hProcess)

MsgBox cmdline & "已經(jīng)關(guān)閉。"

End Sub

Private Sub Command1_Click()

RunShell ”notepad.exe”

End Sub

4.按F5運(yùn)行,單擊Command1運(yùn)行計事本,關(guān)閉 計事本將彈出對話框“notepad.exe 已經(jīng)關(guān)閉?!?/p>

注意:由于本程序是用一個Do..Loop循環(huán)來偵測 進(jìn)程的結(jié)束,所以那句DoEvents是絕不能少的,不然 你就只能用Ctrl+Break來退出了。

vb.net MSWinsock.Winsock 的GetData 怎么放入線程等待信息到達(dá)呢?

set sockf=WScript.CreateObject("MSWinsock.Winsock","sockp_")

Sub sockp_DataArrival(ByVal bytesTotal)

sockf.GetData da,VbString

End Sub

vbs 寫 vb.net 要寫呢 求神指點

vbs 創(chuàng)建象 事件

ockp_DataArrival 事件達(dá) 觸發(fā) 求神修改

在VB.net中我想實現(xiàn)“先暫停該程序,等其他程序運(yùn)行完再繼續(xù)執(zhí)行該程序”的功能,請問怎么實現(xiàn)?

詳細(xì)查看了你的問題,完全不需要使用線程sleep的方法。

在這邊,我要給你引入一個概念。就是Form窗體的兩個方法。

Form.Show()和Form.ShowDialog()

第一個Show方法運(yùn)行后,你的主程序還是會進(jìn)行,你的代碼還是會繼續(xù)進(jìn)行下去。此時,窗體還是彈出的。

第二個ShowDialog方法運(yùn)行后,此時,彈出的一個窗體,你不將其關(guān)閉,那么,主程序就會一直等待這個窗體關(guān)閉后,才執(zhí)行后面的代碼。

所以,你只需要使用showdialog這個方法,即可達(dá)到你想要的結(jié)果。

那么,如何才能讓彈出的窗體不改變呢?很簡單

你可以找到窗體的formcloseing事件,在這個事件中,有一個參數(shù):e

這個e有一個屬性,就是e.handle,表示是否處理過這個事件了。

這個時候,如果你不想讓窗體關(guān)閉,你可以寫:

e.handle=true,那么表示已經(jīng)處理過窗體關(guān)閉的事件了。

注:有些情況,可能是:e.cancel=true

vb.net DOEVENT怎么用

Public?Sub?Delay(Second?As?Bouble)

Dim?tempTime?As?DateTime?=?DateTime.Now

While?(tempTime.AddSeconds(second).CompareTo(DateTime.Now)??0)

Application.DoEvents()

End?While

End?Sub

放在模塊里,使用時 Delay(1) 即可。

名稱欄目:vb.net中如何等待 vb 等待
文章URL:http://muchs.cn/article10/hgepgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、微信公眾號、自適應(yīng)網(wǎng)站、App開發(fā)、搜索引擎優(yōu)化、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化