好像不難吧?
“專業(yè)、務實、高效、創(chuàng)新、把客戶的事當成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設服務商、專業(yè)的互聯(lián)網(wǎng)服務提供商! 專注于網(wǎng)站設計制作、成都網(wǎng)站設計、軟件開發(fā)、設計服務業(yè)務。我們始終堅持以客戶需求為導向,結(jié)合用戶體驗與視覺傳達,提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領市場!
我放進了Button1的Click事件里。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
On Error GoTo Errmessages '在做系統(tǒng)操作時加排錯標簽是個好習慣
Dim TargetName As String = "ibmdict" '存儲進程名為文本型,注:進程名不加擴展名
Dim TargetKill() As Process = Process.GetProcessesByName(TargetName) '從進程名獲取進程
Dim TargetPath As String '存儲進程路徑為文本型
If TargetKill.Length 1 Then '判斷進程名的數(shù)量,如果同名進程數(shù)量在2個以上,用For循環(huán)關閉進程。
For i = 0 To TargetKill.Length - 1
TargetPath = TargetKill(i).MainModule.FileName
TargetKill(i).Kill()
Next
ElseIf TargetKill.Length = 0 Then '判斷進程名的數(shù)量,沒有發(fā)現(xiàn)進程直接彈窗。不需要的,可直接刪掉該If子句
MsgBox("沒有發(fā)現(xiàn)進程!")
Exit Sub
ElseIf TargetKill.Length = 1 Then '判斷進程名的數(shù)量,如果只有一個,就不用For循環(huán)
TargetKill(0).Kill()
End If
MsgBox("已終止" TargetKill.Length "個進程") '彈窗提示已終止多少個進程
Errmessages: ‘定義排錯標簽
If Err.Description Nothing Then ’判斷有無錯誤,如果有,則 ↓
MsgBox(Err.Description) '當出現(xiàn)錯誤時,彈窗提示
End If
End Sub
可根據(jù)需要自行修改,這個備注夠完善了吧?不會的再Hi我。
軟糖來回答羅:通過System.Diagnostics命名空間下的Process類來關閉程序的進程
Dim?進程集合?=?Process.GetProcessesByName("進程名稱")
For?Each?進程?In?進程集合
進程.Kill()
'進程.Close()?'或者使用關閉
Next
也可以先獲取所有進程,再來判斷這些進程的名稱ProcessName
Dim?獲取本地所有進程?=?Process.GetProcesses()
For?Each?進程?In?獲取本地所有進程
If?進程.ProcessName?=?"explorer.exe"?Then?進程.Kill()
Next
只有windows 7等以上版本的操作系統(tǒng)才可以自動消失。其他windows NT內(nèi)核版本,例如:windows 2003,windows xp,windows 2000等老版本,要讓圖標托盤消失,必須至少要兩種方法:
1:退出程序時,在代碼里調(diào)用刪除托盤圖標的代碼。
2:程序崩潰時或者是手動結(jié)束進程后,圖標遺留在右下角,只能用鼠標移動到上面,它才會消失。
所以,必須要在代碼里面寫上退出托盤的程序,因為很多人當然也包括我自己,有時候編寫代碼,只編寫了啟動托盤的代碼,沒有寫退出托盤的代碼,以為程序退出了,托盤圖標會自己消失。而事實上不是這樣的,托盤的啟動和退出,必須要自己來顯式的在程序里面實現(xiàn)。啟動托盤實現(xiàn)后,必須要實現(xiàn)退出托盤。
所以建議大家在編寫托盤圖標程序時,在退出程序的時候,顯式的調(diào)用刪除托盤圖標的代碼就可以了。
假設進程PID在變量runPID中:
Try
Dim deadProcess As Process = Process.GetProcessById(runPID) '獲取該進程
deadProcess.Kill() '殺死進程
Catch ex As Exception
End Try
詳細查看了你的問題,完全不需要使用線程sleep的方法。
在這邊,我要給你引入一個概念。就是Form窗體的兩個方法。
Form.Show()和Form.ShowDialog()
第一個Show方法運行后,你的主程序還是會進行,你的代碼還是會繼續(xù)進行下去。此時,窗體還是彈出的。
第二個ShowDialog方法運行后,此時,彈出的一個窗體,你不將其關閉,那么,主程序就會一直等待這個窗體關閉后,才執(zhí)行后面的代碼。
所以,你只需要使用showdialog這個方法,即可達到你想要的結(jié)果。
那么,如何才能讓彈出的窗體不改變呢?很簡單
你可以找到窗體的formcloseing事件,在這個事件中,有一個參數(shù):e
這個e有一個屬性,就是e.handle,表示是否處理過這個事件了。
這個時候,如果你不想讓窗體關閉,你可以寫:
e.handle=true,那么表示已經(jīng)處理過窗體關閉的事件了。
注:有些情況,可能是:e.cancel=true
在你給textbox設置text值后直接使用sleep(),因為在使用sleep()的時候,當前的主進程是被掛起了,也就是說設置的text屬性后,還來不及在屏幕上顯示lbi的內(nèi)容就執(zhí)行了sleep,所以在執(zhí)行sleep()掛起主進程前,你必須讓textbox的內(nèi)容先顯示出來再執(zhí)行sleep,可嘗試使用下DoEvents()將控制權暫時移交一下,讓系統(tǒng)有時機來刷新textbox里面的內(nèi)容,讓系統(tǒng)有機會來刷新textbox里面的內(nèi)容。由于我沒有安裝visual studio的開發(fā)環(huán)境,無法調(diào)試代碼的正確性,但我記得我以前也遇到此類問題,采取的DoEvents()的方式。你可嘗試下。
lbl.Visible = True
Sleep(5000)
lbl.Text = "我是中國人"
lbi.Refresh '刷新一下lbi,具體你可以調(diào)試下,看需要不需要這條
Application.DoEvents() ‘設置完lbi的text屬性,將操作權限釋放一下,讓系統(tǒng)有機會顯示lbi的內(nèi)容。
Sleep(3000) ’待顯示后,再執(zhí)行掛起
lbl.Text = "我愛自己的祖國"
lbi.Refresh ‘同上
Application.DoEvents() ’同上
DoEvents()的功能解釋是:轉(zhuǎn)讓控制權,以便讓操作系統(tǒng)處理其它的事件。
如執(zhí)行一次不行,可嘗試重復多執(zhí)行幾次,特別在循環(huán)語句中,對于窗口的刷新顯示DoEvents特別有用,但是在循環(huán)體內(nèi)使用了DoEvents后,當前進程的執(zhí)行效率會有大幅降低,因為移交控制權必然損失當前進程的運行效率。
網(wǎng)站欄目:vb.net進程休息,vb 結(jié)束進程
瀏覽路徑:http://aaarwkj.com/article8/hsoeip.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、搜索引擎優(yōu)化、App開發(fā)、ChatGPT、網(wǎng)站收錄、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)