bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

vb.net進(jìn)程編程 VB程序開發(fā)

vb.net編寫的程序屏蔽系統(tǒng)熱鍵

使用VB.net編寫屏蔽熱鍵的方法有很多中,比如說使用系統(tǒng)的API函數(shù),也可以使用鉤子來進(jìn)行屏蔽.還有一種就是.net帶的一種方法,首先來判斷所按下去的鍵,然后再執(zhí)行操作等事件.比如說:if (e.keycode==keys.D){e.handle=true}在keydown事件里面處理!這樣就可以屏蔽了D鍵. 實(shí)例:if ((Control.ModifierKeys == Keys.Alt) (e.KeyCode == Keys.F4))

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)龍海,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

{

e.Handled = true;

}還有一種辦法就是不通過屏蔽熱鍵來實(shí)現(xiàn),就是通過設(shè)置焦點(diǎn).你可以把你程序窗口設(shè)置為主焦點(diǎn),這樣其他程序一般就無法在你的程序前面了.實(shí)現(xiàn)屏蔽的作用.至于任務(wù)管理器的話可以通過殺掉進(jìn)程的辦法做到.如下: Process[] p = Process.GetProcesses(); foreach (Process p1 in p)

{

try

{

if (p1.ProcessName.ToLower().Trim() == "taskmgr")//這里判斷是任務(wù)管理器

{

p1.Kill();

return;

}

}

catch

{

return;

}

}}以上是使用C#編寫的,稍微改下就可以了,在,NET里面都差不多!

vb.net編程,如何使用 appdomain 實(shí)現(xiàn)某進(jìn)程DLL動(dòng)態(tài)加載和卸載?

由于你要求的是能夠動(dòng)態(tài)的加載與卸載,所以這里選用了appdomain的load方法來加載一個(gè)程序集(同樣的,卸載的時(shí)候調(diào)用appdomain的靜態(tài)方法Unload即可).

另外由于,在appdomain.load的時(shí)候remoting會(huì)試圖將程序集序列化到defaultdomain中去,這會(huì)產(chǎn)生問題,通常以一個(gè)"FileNotFoundException"結(jié)束,因此采用了一種折中的辦法.

思路如下:

1.建立一個(gè)新的程序集,里面包含一個(gè)輕量的類型,這個(gè)類型只包含一個(gè)用來加載程序集的公共方法;

2.在你的主程序里面,用appdomain.load來加載上一步的程序集,接著實(shí)例化上一步的輕量的類型;

3.而后就可以像操作通常的對(duì)象一樣,調(diào)用它上面的方法來加載你想要的程序集了;

源代碼已經(jīng)打包發(fā)給你了,

你看看吧~

如果有問題,再找我哈

VB編程高手幫助我下!!

設(shè)備:電腦

你既然喜歡編程,就應(yīng)該認(rèn)認(rèn)真真的學(xué)習(xí)一門語言,學(xué)習(xí)微軟的就先從VB開始,VB是比較好的入門語言,可視化的,比較簡單,是非常好的入門語言。書籍最少應(yīng)該準(zhǔn)備兩本,不可能一本書籍會(huì)包含VB的所有內(nèi)容,在看書的時(shí)候,可以交叉的看,一本書籍中沒有講到的內(nèi)容可以在另一本中看到,這樣對(duì)學(xué)習(xí)是很有好處的,也能保證所學(xué)知識(shí)的完整性。學(xué)編程是一個(gè)很漫長的過程,不要著急,要理論與實(shí)踐想結(jié)合,例程書籍也是很重要的,看源代碼對(duì)學(xué)習(xí)也是很有幫助的,等你學(xué)完這門VB語言之后,學(xué)習(xí)別的語言是非常簡單,可以嘗試C語言,按照C——C++——VC的順序?qū)W習(xí),有助于知識(shí)的連貫性,我也希望你能學(xué)好的。

或者學(xué)習(xí)Delphi,入門較為簡單類似于VB,但比VB強(qiáng)大,即可作為入門又能做強(qiáng)、做大

怎樣學(xué)編程

1.明確學(xué)習(xí)目的

學(xué)習(xí)編程對(duì)大多數(shù)IT業(yè)人員來說都是非常有用的。學(xué)編程,做一名編程人員,從個(gè)人角度講,可以解決在軟件使用中所遇到的問題,改進(jìn)現(xiàn)有軟件,可以為自己找到一份理想的工作添加重要得砝碼,有利于在求職道路上謀得一個(gè)好的職位;從國家的角度,可以為中國的軟件產(chǎn)業(yè)做出應(yīng)有的貢獻(xiàn),一名優(yōu)秀的程序員永遠(yuǎn)是被爭奪的對(duì)象。學(xué)習(xí)編程還能鍛煉思維,使我們的邏輯思維更加嚴(yán)密;能夠不斷享受到創(chuàng)新的樂趣,將一直有機(jī)會(huì)走在高科技的前沿,因?yàn)槌绦蛟O(shè)計(jì)本身是一種創(chuàng)造性的工作。知識(shí)經(jīng)濟(jì)時(shí)代給我們帶來了無限的機(jī)會(huì),要想真正掌握計(jì)算機(jī)技術(shù),并在IT行業(yè)里干出一番事業(yè)來,有所作為,具有一定的編程能力是一個(gè)基本條件和要求。

2.打好基礎(chǔ)

學(xué)編程要具備一定的基礎(chǔ),總結(jié)之有以下幾方面:

(1)數(shù)學(xué)基礎(chǔ) 從計(jì)算機(jī)發(fā)展和應(yīng)用的歷史來看計(jì)算機(jī)的數(shù)學(xué)模型和體系結(jié)構(gòu)等都是有數(shù)學(xué)家提出的,最早的計(jì)算機(jī)也是為數(shù)值計(jì)算而設(shè)計(jì)的。因此,要學(xué)好計(jì)算機(jī)就要有一定的數(shù)學(xué)基礎(chǔ),出學(xué)者有高中水平就差不多了。

(2)邏輯思維能力的培養(yǎng)學(xué)程序設(shè)計(jì)要有一定的邏輯思維能力,“邏思力”的培養(yǎng)要長時(shí)間的實(shí)踐鍛煉。要想成為一名優(yōu)秀的程序員,最重要的是掌握編程思想。要做到這一點(diǎn)必須在反復(fù)的實(shí)踐、觀察、分析、比較、總結(jié)中逐漸地積累。因此在學(xué)習(xí)編程過程中,我們不必等到什么都完全明白了才去動(dòng)手實(shí)踐,只要明白了大概,就要敢于自己動(dòng)手去體驗(yàn)。誰都有第一次。有些問題只有通過實(shí)踐后才能明白,也只有實(shí)踐才能把老師和書上的知識(shí)變成自己的,高手都是這樣成材的。

(3)選擇一種合適的入門語言 面對(duì)各種各樣的語言,應(yīng)按什么樣的順序?qū)W呢?程序設(shè)計(jì)工具不外乎如下幾類: 1)本地開發(fā)應(yīng)用軟件開發(fā)的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;數(shù)據(jù)庫開發(fā)工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平臺(tái)開發(fā)開發(fā)工具如 Java 等。 3)網(wǎng)絡(luò)開發(fā)對(duì)客戶端開發(fā)工具如:Java Script 等;對(duì)服務(wù)器開發(fā)工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。以上不同的環(huán)境下幾種開發(fā)工具中 VB 法簡單并容易理解,界面設(shè)計(jì)是可設(shè)化的,易學(xué)、易用。選 VB 作為入門的方向?qū)Τ鰧W(xué)者是較為適合的。

3. 注意理解一些重要概念

一本程序設(shè)計(jì)的書看到的無非就是變量、函數(shù)、條件語句、循環(huán)語句等概念,但要真正能進(jìn)行編程應(yīng)用,需要深入理解這些概念,在理解的基礎(chǔ)上應(yīng)用,不要只簡單地學(xué)習(xí)語法、結(jié)構(gòu),而要吃透針對(duì)這些語法、結(jié)構(gòu)的應(yīng)用例子,做到舉一反三,觸類旁通。

4.掌握編程思想

學(xué)習(xí)一門語言或開發(fā)工具,語法結(jié)構(gòu)、功能調(diào)用是次要的,最主要是學(xué)習(xí)它的思想。例如學(xué)習(xí) VC 就要學(xué)習(xí) Windows 的內(nèi)在機(jī)理、什么是線程......;學(xué)習(xí) COM 就要知道 VTALBE 、類廠、接口、idl......,關(guān)鍵是學(xué)一種思想,有了思想,那么我們就可以觸類旁通。

5.多實(shí)踐、多交流

掌握編程思想必須在編程實(shí)際工作中去實(shí)踐和體會(huì)。編程起步階段要經(jīng)常自己動(dòng)手設(shè)計(jì)程序,具體設(shè)計(jì)時(shí)不要拘泥于固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的思維方式不同、角度各異,各有高招,通過交流可不斷吸收別人的長處,豐富編程實(shí)踐,幫助自己提高水平。親自動(dòng)手進(jìn)行程序設(shè)計(jì)是創(chuàng)造性思維應(yīng)用的體現(xiàn),也是培養(yǎng)邏輯思維的好方法。

6.養(yǎng)成良好的編程習(xí)慣

編程入門不難,但入門后不斷學(xué)習(xí)是十分重要的,相對(duì)來說較為漫長。在此期間要注意養(yǎng)成一些良好的編程習(xí)慣。編程風(fēng)格的好壞很大程度影響程序質(zhì)量。良好的編程風(fēng)格可以使程序結(jié)構(gòu)清晰合理,且使程序代碼便于維護(hù)。如代碼的縮進(jìn)編排、變量命令規(guī)則的一致性、代碼的注釋等。

7.上網(wǎng)學(xué)編程

在網(wǎng)上可以學(xué)到很多不同的編程思想、方法、經(jīng)驗(yàn)和技巧,有大量的工具和作品及相關(guān)的輔導(dǎo)材料供下載。例如網(wǎng)站“編程課堂”()主要以 VB 和 Delph;教學(xué)和交流為主,提供大量實(shí)用技巧;網(wǎng)站“現(xiàn)在時(shí)編程學(xué)園”()是專門介紹C、VC、VB、Delphi 等的綜合編程網(wǎng)站;網(wǎng)站“ VB 編程樂園 ”()提供內(nèi)容豐富而且實(shí)用的編程技術(shù)文章、精選控件、源代碼下載、計(jì)算機(jī)考試、相關(guān)軟件以及編程書籍推薦等等。

8.加強(qiáng)計(jì)算機(jī)理論知識(shí)的再學(xué)習(xí)

學(xué)編程是符合“理論→實(shí)踐→再理論→再實(shí)踐”的一個(gè)認(rèn)識(shí)過程。一開始要具有一定的計(jì)算機(jī)理論基礎(chǔ)知識(shí),包括編程所需的數(shù)學(xué)基礎(chǔ)知識(shí),具備了入門的條件,就可以開始編程的實(shí)踐,從實(shí)踐中可以發(fā)現(xiàn)問題需要加強(qiáng)計(jì)算機(jī)理論知識(shí)的再學(xué)習(xí)。程序人人皆可編,但當(dāng)你發(fā)現(xiàn)編到一定程度很難再提高的時(shí)候,就要回頭來學(xué)習(xí)一些計(jì)算機(jī)科學(xué)和數(shù)學(xué)基礎(chǔ)理論。學(xué)過之后,很多以前遇到的問題都會(huì)迎刃而解,使人有豁然開朗之感。因此在學(xué)習(xí)編程的過程中要不斷地針對(duì)應(yīng)用中的困惑和問題深入學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、算法、計(jì)算機(jī)原理、編譯原理、操作系統(tǒng)原理、軟件工程等計(jì)算機(jī)科學(xué)的理論基礎(chǔ)和數(shù)理邏輯、代數(shù)系統(tǒng)、圖論、離散數(shù)學(xué)等數(shù)學(xué)理論基礎(chǔ)知識(shí)。這樣經(jīng)過不斷的學(xué)習(xí),再努力地實(shí)踐,編程水平一定會(huì)不斷提高到一個(gè)新高度。

(一) COPY文件復(fù)制命令

1.功能:拷貝一個(gè)或多個(gè)文件到指定盤上。

2.類型:內(nèi)部命令

3.格式:COPY [源盤][路徑]〈源文件名〉[目標(biāo)盤][路徑][目標(biāo)文件名]

4.使用說明:

(1)COPY是文件對(duì)文件的方式復(fù)制數(shù)據(jù),復(fù)制前目標(biāo)盤必須已經(jīng)格式化;

(2)復(fù)制過程中,目標(biāo)盤上相同文件名稱的舊文件會(huì)被源文件取代;

(3)復(fù)制文件時(shí),必須先確定目標(biāo)般有足夠的空間,否則會(huì)出現(xiàn);insufficient的錯(cuò)誤信息,提示磁盤空間不夠;

(4)文件名中允許使用通配舉“*”“?”,可同時(shí)復(fù)制多個(gè)文件;

(5)COPY命令中源文件名必須指出,不可以省略。

(6)復(fù)制時(shí),目標(biāo)文件名可以與源文件名相同,稱作“同名拷貝”此時(shí)目標(biāo)文件名可以省略;

(7)復(fù)制時(shí),目標(biāo)文件名也可以與源文件名不相同,稱作“異名拷貝”,此時(shí),目標(biāo)文件名不能省略;

(8)復(fù)制時(shí),還可以將幾個(gè)文件合并為一個(gè)文件,稱為“合并拷貝”,格式如下:COPY;[源盤][路徑]〈源文件名1〉〈源文件名2〉…[目標(biāo)盤][路徑]〈目標(biāo)文件名〉;

(9)利用COPY命令,還可以從鍵盤上輸入數(shù)據(jù)建立文件,格式如下:COPY CON [盤符:][路徑]〈文件名〉;

(10)注意:COPY命令的使用格式,源文件名與目標(biāo)文件名之間必須有空格!

DOS時(shí)代,Copy命令恐怕是最受歡迎也最常用一個(gè)DOS內(nèi)部命令,但在Windows橫行的今天,它漸漸被用戶遺忘,似乎變得可有可無。其實(shí)這個(gè)命令遠(yuǎn)遠(yuǎn)不止“拷貝”這么簡單,好好利用它,會(huì)收到意想不到的效果。

用Copy實(shí)現(xiàn)遠(yuǎn)程上傳和下載

用Copy命令拷貝文件大家肯定都知道,但你知道嗎?Copy還支持遠(yuǎn)程文件的拷貝!比如Copy C:\SRV.EXE \\210.***.***.***\ADMIN$可以把程序SRV.EXE“上傳”到對(duì)方的ADMIN$共享目錄下,當(dāng)然反過來也可以,這樣就成“下載”了:Copy \\210.***.***.***\ADMIN$\SRV.EXE C:\就能把對(duì)方的ADMIN$共享目錄下的SRV.EXE文件下載到本地的C盤中。

用Copy將秘密藏在別人肚子里

DOS的Copy命令可以將幾個(gè)同類型的文件合并成一個(gè)文件,比如:多個(gè).txt文件,其實(shí)通過它還能將一個(gè)文本文件合并到一個(gè)非文本文件中,實(shí)現(xiàn)隱藏秘密的效果。比如你在D盤根目錄有一個(gè)重要的文本文件:001.txt,想對(duì)其進(jìn)行隱藏。

找一個(gè)MP3歌曲,體積最好不要太大(500KB左右為宜),比如:wanfei.mp3(假設(shè)也放在D盤根目錄),輸入:Copy wanfei.mp3/b + 001.txt/a wanfei-1.mp3,這樣會(huì)生成一個(gè)新文件wanfei-1.mp3。用Winamp打開它,歌曲沒有變化。按住Shift鍵右擊wanfei-1.mp3,選擇“打開方式”并選擇EmEditor之類的文本編輯器打開該文件,看到什么了?一堆亂碼?但如果按下Ctrl+End組合鍵將光標(biāo)移至文件的尾部,是不是001.txt文件中的內(nèi)容?

小提示:其中參數(shù)/b指定以二進(jìn)制格式復(fù)制、合并文件;參數(shù)/a指定以ASCII格式復(fù)制、合并文件。這里要注意文件的順序,二進(jìn)制格式的文件應(yīng)放在加號(hào)前,文本格式的文件放在加號(hào)后。有一點(diǎn)要提醒大家:就是這個(gè)文本文件的前面最好至少空3行,這樣它頭部的內(nèi)容就不易丟失。

同樣道理,你可以把文件藏進(jìn)圖片、WAV聲音文件,甚至還能在Word、Excel等文檔中藏進(jìn)秘密,比如:

Copy wanfei.jpg/b + 001.txt/a wanfei-1.jpg(把001.txt藏進(jìn)wanfei-1.jpg圖片)

Copy wanfei.doc/b + 001.txt/a wanfei-1.doc(把001.txt藏進(jìn)wanfei-1.doc文檔)

Copy wanfei.wav/b + 001.txt/a wanfei-1.wav(把001.txt藏進(jìn)wanfei-1.wav文件)

Copy wanfei.exe/b+ 001.txt/a wanfei-1.exe(把001.txt藏進(jìn)wanfei-1.exe文件)

★ShellExecute函數(shù)和Shell函數(shù):打開外部程序

ShellExecute函數(shù)

'聲明

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _

(ByVal hWnd As Long, ByVal lpOperation As String, _

ByVal lpFile As String, ByVal lpParameters As String, _

ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'命令語句

Private Sub Command1_Click()

Dim lR As Long

lR = ShellExecute(Me.hWnd, "Open", sFile, "", "", vbNormalFocus)

End Sub

本函數(shù)還可以用來連接到網(wǎng)頁:

ShellExecute 0, vbNullString, "", vbNullString, vbNullString, vbNormalFocus

或者這樣寫來發(fā)送Email:

ShellExecute me.hwnd, "open", "mailto:vbcode@vbcode.com", vbNullString, vbNullString, SW_SHOW

另外有ShellExecute的替代用法,更加簡單實(shí)用,不用API,一句Shell搞定!

連接到網(wǎng)頁:

Shell "rundll32.exe url.dll,FileProtocolHandler "

打開文件:

Shell "rundll32.exe url.dll,FileProtocolHandler " App.Path "\SHELLTST.TXT"

Shell函數(shù)

運(yùn)行一個(gè)可執(zhí)行程序,并且如果該程序仍然在運(yùn)行,則返回一個(gè)包含該程序的進(jìn)程 ID 的整數(shù)。

Public Function Shell( _

ByVal Pathname As String, _

Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _

Optional ByVal Wait As Boolean = False, _

Optional ByVal Timeout As Integer = -1 _

) As Integer

格式:Shell(Pathname, Style As AppWinStyle, Wait, Timeout)

參數(shù):

△Pathname

必選項(xiàng)。字符串。要執(zhí)行的程序名以及任何需要的參數(shù)和命令行開關(guān)。Pathname 還可以包括驅(qū)動(dòng)器和目錄路徑或文件夾。

△Style

可選項(xiàng)。AppWinStyle。從 AppWinStyle 枚舉中選擇的值,該枚舉與要在其中運(yùn)行程序的窗口樣式相對(duì)應(yīng)。如果省略 Style,則 Shell 使用 AppWinStyle.MinimizedFocus,這將使程序以最小化啟動(dòng)并具有焦點(diǎn)。

Style 參數(shù)可以有以下設(shè)置之一:

AppWinStyle.Hide 隱藏窗口并為隱藏的窗口提供焦點(diǎn)。

AppWinStyle.NormalFocus 為窗口提供焦點(diǎn),并以最近的大小和位置顯示窗口。

AppWinStyle.MinimizedFocus 為窗口提供焦點(diǎn),并以圖標(biāo)的形式顯示窗口。

AppWinStyle.MaximizedFocus 為窗口提供焦點(diǎn),并以全屏方式顯示窗口。

AppWinStyle.NormalNoFocus 將窗口設(shè)置為最近的大小和位置。當(dāng)前活動(dòng)窗口保持焦點(diǎn)。

AppWinStyle.MinimizedNoFocus 以圖標(biāo)的形式顯示窗口。當(dāng)前活動(dòng)窗口保持焦點(diǎn)。

△Wait

可選項(xiàng)。Boolean。指示 Shell 函數(shù)是否應(yīng)等待程序完成的值。如果省略 Wait,則 Shell 使用 False。

△Timeout

可選項(xiàng)。Integer。Wait 為 True 時(shí)等待完成的毫秒數(shù)。如果省略 Timeout,則 Shell 使用 -1,表示沒有超時(shí),Shell 直到程序完成時(shí)才返回。因此,如果省略 Timeout 或?qū)⑺O(shè)置為 -1,則 Shell 可能永遠(yuǎn)不會(huì)將控制返回給程序。

異常/錯(cuò)誤

異常類型 錯(cuò)誤號(hào) 條件

ArgumentException 5 Style 不在 0 到 9(包含 0 和 9)范圍內(nèi)。

FileNotFoundException 53 Shell 無法啟動(dòng)指定的程序。

備注

Shell 函數(shù)的返回值取決于 Pathname 中指定的程序在 Shell 返回時(shí)是否仍在執(zhí)行。如果將 Wait 設(shè)置為 True 并且程序在超時(shí)過期前結(jié)束,Shell 返回零。如果超時(shí)過期或者省略 Wait 或?qū)⑺O(shè)置為 False,則 Shell 返回程序的進(jìn)程 ID。進(jìn)程 ID 是標(biāo)識(shí)正在運(yùn)行的程序的唯一數(shù)字。

如果 Shell 函數(shù)無法啟動(dòng)指定的程序,則出現(xiàn) System.IO.FileNotFoundException 錯(cuò)誤。例如,當(dāng)試圖從使用 System.Windows.Forms 的應(yīng)用程序運(yùn)行 16 位程序(如 command.com)時(shí),可能會(huì)發(fā)生這種情況。解決辦法是運(yùn)行將調(diào)用所需的 16 位程序的 32 位程序。如果是 command.com,則可以將運(yùn)行 cmd.exe 作為另一種選擇。

默認(rèn)情況下,Shell 函數(shù)異步運(yùn)行程序。這意味著用 Shell 函數(shù)啟動(dòng)的程序在 Shell 函數(shù)后面的語句執(zhí)行前可能沒有結(jié)束執(zhí)行。如果想等待程序結(jié)束后再繼續(xù),請將 Wait 設(shè)置為 True。

整個(gè)路徑和文件規(guī)范應(yīng)該始終用引號(hào)引起來,如以下示例所示:

ID = Shell("""C:\Program Files\MyFile.exe"" -a -q", , True, 100000)

字符串內(nèi)每對(duì)相鄰的雙引號(hào) ("") 被解釋為字符串中的一個(gè)雙引號(hào)字符。因此,前面的示例表示 Shell 函數(shù)的下列字符串:

"C:\Program Files\MyFile.exe" -a -q

如果路徑?jīng)]有用引號(hào)引起來,Windows 就會(huì)在 C:\ 目錄中查找名為 Program.exe 的文件,而不是在 C:\Program Files 目錄中查找 MyFile.exe 文件。

安全說明 如果路徑和文件規(guī)范沒有用引號(hào)引起來,那么當(dāng)文件名或路徑節(jié)點(diǎn)包含空格時(shí),就會(huì)出現(xiàn)安全風(fēng)險(xiǎn)。在上面的示例中,路徑節(jié)點(diǎn) \Program Files 包含一個(gè)空格。如果規(guī)范不在引號(hào)中,并且名為 Program.exe 的程序(例如通過非法的破壞)安裝在 C:\ 中,Windows 就會(huì)執(zhí)行 Program.exe 程序而不是 MyFile.exe。

安全說明 Shell 函數(shù)需要非托管代碼權(quán)限,這可能會(huì)對(duì)它在部分信任情況下的執(zhí)行產(chǎn)生影響。有關(guān)更多信息,請參見 SecurityPermission 類和代碼訪問權(quán)限。

示例

本示例使用 Shell 函數(shù)運(yùn)行一個(gè)用戶指定的應(yīng)用程序。通過將 AppWinStyle.NormalFocus 指定為第二個(gè)參數(shù),以正常大小打開應(yīng)用程序并為它提供焦點(diǎn)。

Dim ProcID As Integer

' Run Calculator.

ProcID = Shell("C:\Windows\system32\calc.exe", AppWinStyle.NormalFocus)

' The preceding path is for Windows XP;

' The Windows 2000 path is C:\WINNT\system32\calc.exe.

另,shell函數(shù)無須聲明,例:

Option Explicit

Private Sub Command1_Click()

Shell ("D:\Program Files\WinRAR\winrar.exe")

End Sub

調(diào)用Shell函數(shù)可以執(zhí)行外部可執(zhí)行文件,其擴(kuò)展名如.exe 、.com、.bat或.pif,缺省擴(kuò)展名為.exe。不能執(zhí)行操作系統(tǒng)內(nèi)部命令及所有非執(zhí)行文件(如文檔),否則將顯示出錯(cuò)信息

VB 中,常以Shell指令來執(zhí)行外部程式,然而它在Create該外部process 后,立刻就會(huì)回到vb 的下一行程式,無法做到等待該P(yáng)rocess結(jié)束時(shí),才執(zhí)行下一行指令,或是說,無法得知該P(yáng)rocess是否已結(jié)束,甚者,該P(yáng)rocess執(zhí)行到一半,又該如何中止其執(zhí)行等等,這些都不是Shell指令所能控制的,因此我們需使API的幫助來完成。

第一個(gè)問題,如何等待shell所Create的process結(jié)束后才往后執(zhí)行vb的程式。

首先要知道的是,每個(gè)Process有唯一的一個(gè)ProcessID,這是OS給定的,用來區(qū)別每個(gè) Process,這個(gè)Process ID(PID)主要可用來取得該P(yáng)rocess相對(duì)應(yīng)的一些資訊,然而要對(duì)該P(yáng)rocess的控制,卻大多透過 Process Handle(hProcess)。VB Shell指令的傳回值是PID,而非hProcess,所以我們需透過OpenProcess這個(gè)API來取得 hProcess而OpenProcess()的第一個(gè)參數(shù),指的是所取得的hProcess所具有的

能力,像 PROCESS_QUERY_INFORMATION 便是讓GetExitCode()可取得hProcess所指的process之狀態(tài),而PROCESS_TERMINATE,便是讓TerminateProcess(hProcess..)的指令能夠生效,也就是說,不同參數(shù)設(shè)定,使hProcess所具有的權(quán)限、能力有所不同。取得 hProcess后便可以使用WaitForSingleObject()來等待hProcess狀態(tài)的改變,也就是說,它會(huì)等待 hProcess所指的process執(zhí)行完,這個(gè)指令才結(jié)束,它

第二個(gè)參數(shù)所指的是 WaitForSingleObject()所要等待的時(shí)間(in milliseconds ),如果超過所指的時(shí)間,就TimeOut而結(jié)束WaitForSingleObject()的等待。若要它無限的等下去,就設(shè)定為INFINITE。

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)

ExitEvent = WaitForSingleObject(hProcess, INFINITE)

Call CloseHandle(hProcess)

上例會(huì)無限等待shell指令create之process結(jié)束后,才再做后面的vb指令。有時(shí)覺得那會(huì)等太久,所以有第二個(gè)解決方式:等process結(jié)束時(shí)再通知vb 就好,即:設(shè)定一個(gè)公用變數(shù)(isDone),當(dāng)它變成True時(shí)代表Shell所Create的Process已結(jié)束。當(dāng)Process還在執(zhí)行時(shí),GetExitCodeProcess會(huì)傳H103給其第二個(gè)參數(shù),直到結(jié)束時(shí)才傳另外的數(shù)值,如果程式正常結(jié)束,那Exitcode = 0,否則就得看它如何

結(jié)束了?;蛟S有人在其他地方看到 loop的地方是Loop while Exitcode 0,那有一點(diǎn)危險(xiǎn),如果以這個(gè)例子來看,您不是用F4來離開pe2而是用右上方 X 的結(jié)束dos window那麼,會(huì)因?yàn)镋xitCode的值永遠(yuǎn)不會(huì)是0,而進(jìn)入無窮的回圈。

Dim pid As Long

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)

isDone = False

Do

Call GetExitCodeProcess(hProcess, ExitCode)

Debug.Print ExitCode

DoEvents

Loop While ExitCode = STILL_ALIVE

Call CloseHandle(hProcess)

isDone = True

另外,如果您的shell所Create的程式,有視窗且為立刻Focus者,可另外用以下的方式

Dim pid As Long

Dim hwnd5 As Long

pid = Shell("c:\tools\spe3\pe2.exe", vbNormalFocus)

hwnd5 = GetForegroundWindow()

isDone = False

Do While IsWindow(hwnd5)

DoEvents

Loop

isDone = True

而如何強(qiáng)迫shell所Create的process結(jié)束呢,那便是

Dim aa As Long

If hProcess 0 Then

aa = TerminateProcess(hProcess, 3838)

End If

hProcess便是先前的例子中所取得的那個(gè)Process Handle, 3838所指的是傳給GetExitCodeProcess()中的第二參數(shù),這是我們?nèi)我饨o的,但最好不要是0,因?yàn)?一般是代表正常結(jié)束,當(dāng)然這樣設(shè)也不會(huì)有錯(cuò)。當(dāng)然不可設(shè)H103,以這個(gè)例子來看,如果程式正處於以下的LOOPDo

Call GetExitCodeProcess(hProcess, ExitCode)

Debug.Print ExitCode

DoEvents

Loop While ExitCode = STILL_ALIVE

Debug.print ExitCode

而執(zhí)行了 TerminateProcess(hProcess, 3838)那會(huì)看到ExitCode = 3838。然而,這個(gè)方式在win95沒問題,在NT中,可能您要在OpenProcess()的第一個(gè)參數(shù)要更改成 PROCESS_QUERY_INFORMATION Or PROCESS_TERMINATE 這樣才能Work。不過良心的建議,非到最后關(guān)頭,不要使用TerminateProcess(),因不正常的結(jié)束,往往許多程式結(jié)束前所要做的事都沒有做,可能造成Resource的浪費(fèi),甚者,下次再執(zhí)行某些程式時(shí)會(huì)有問題,例如:本人常使用MS-dos Shell Link 的方式執(zhí)行一程式,透過Com port與大電腦的聯(lián)結(jié),如果Ms-dos Shell Link 不正常結(jié)束,下次再想Link時(shí),會(huì)發(fā)現(xiàn)too Many Opens,這便是一例。

另外,有人使用Shell來執(zhí)行.bat檔,即:

pid = Shell("c:\aa.bat", vbNormalFocus)

可是卻遇上aa.bat結(jié)束了,但ms-dos的Window卻仍活著,那可以用以下的方式來做

pid = Shell("c:\command.com /c c:\aa.bat", vbNormalFocus)

那是執(zhí)行Command.com,而Command.com指定執(zhí)行c:\aa.bat 而且結(jié)束時(shí)自動(dòng)Close

所有程式如下:

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long,ByVal dwProcessId As Long) As Long

Private Declare Function WaitForSingleObject Lib "kernel32"(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Private Declare Function CloseHandle Lib "kernel32"(ByVal hObject As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32"(ByVal hProcess As Long, lpExitCode As Long) As Long

Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long

Const PROCESS_QUERY_INFORMATION = H400

Const STILL_ALIVE = H103

Const INFINITE = HFFFF

Private ExitCode As Long

Private hProcess As Long

Private isDone As Long

Private Sub Command1_Click()

Dim pid As Long

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)

isDone = False

Do

Call GetExitCodeProcess(hProcess, ExitCode)

Debug.Print ExitCode

DoEvents

Loop While ExitCode = STILL_ALIVE

Call CloseHandle(hProcess)

isDone = True

End Sub

Private Sub Command2_Click()

Dim pid As Long

Dim ExitEvent As Long

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)

ExitEvent = WaitForSingleObject(hProcess, INFINITE)

Call CloseHandle(hProcess)

End Sub

Private Sub Command3_Click()

If hProcess 0 Then

TerminateProcessh Process, 3838

End If

End Sub

Private Sub Command4_Click()

Dim pid As Long

Dim hwnd5 As Long

pid = Shell("c:\tools\spe3\pe2.exe", vbNormalFocus)

hwnd5 = GetForegroundWindow()

isDone = False

Do While IsWindow(hwnd5)

DoEvents

Loop

isDone = True

End Sub

Private Sub Command5_Click()

Shell "c:\command.com /c c:\aa.bat", vbNormalFocus ' vbHide)

End Sub

解釋一下 .net 、VS、VC 和vb.net的開發(fā)環(huán)境...謝謝!

1. .net是微軟的語言架構(gòu),是面向?qū)ο蟮耐泄苷Z言;VS是Visual Studio的縮寫,是微軟的集成開發(fā)環(huán)境,通過它可以設(shè)計(jì),開發(fā)和調(diào)試微軟平臺(tái)的程序,其中包括.net,也包括不是.net的程序;VC是Visual C的縮寫,是微軟版本的C語言,用來開發(fā)桌面應(yīng)用,不能做網(wǎng)站;VB.NET是.net中的一種語言,和原來的VB完全不同,可以用來開發(fā)桌面和網(wǎng)站,VB.net的開發(fā)環(huán)境是VS.net(目前最高版本是vs2008)。

2. 做網(wǎng)站的話,需要安裝VS(建議VS2008,因?yàn)楦訌?qiáng)大),如果用SQL Server的話需要安裝SQL Server(建議SQL2008,因?yàn)樾阅芨茫?/p>

3. VS2005和VS2008大小差不多,完全安裝4G左右,最小安裝1G左右

4. 如果使用數(shù)據(jù)庫建議用2008因?yàn)?000馬上就要停止技術(shù)支持了。

初學(xué)者vb編程技巧

把Task scheduler改為:

""Task scheduler""

兩邊都加兩個(gè)雙引號(hào)

即Shell "net start ""Task scheduler"""

網(wǎng)站名稱:vb.net進(jìn)程編程 VB程序開發(fā)
標(biāo)題路徑:http://vcdvsql.cn/article40/hehgho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站收錄動(dòng)態(tài)網(wǎng)站、微信小程序、品牌網(wǎng)站設(shè)計(jì)

廣告

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

成都app開發(fā)公司