用VB完成程序之間的容易通信
發(fā)表時(shí)間:2023-08-02 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]文/崔彥鋒 本人非常喜歡編程,對(duì)網(wǎng)絡(luò)編程最感興趣,所以就想編個(gè)程序到BBS上發(fā)帖子,達(dá)到提高經(jīng)驗(yàn)值的目的。今天把它寫出來,和大家一起分享! 』局R(shí) 剪貼板在Windows中是一個(gè)好東東,在V...
文/崔彥鋒
本人非常喜歡編程,對(duì)網(wǎng)絡(luò)編程最感興趣,所以就想編個(gè)程序到BBS上發(fā)帖子,達(dá)到提高經(jīng)驗(yàn)值的目的。今天把它寫出來,和大家一起分享。
基本知識(shí)
剪貼板在Windows中是一個(gè)好東東,在VB的編程中同樣有用。在VB中,它其實(shí)就是Cli
pBoard對(duì)象,專門用于處理剪貼板上的文本和圖像。使用之前最好先用Clear方法清除以前的內(nèi)容。
發(fā)送文本還可以利用的就是SendKeys方法。把你要發(fā)送的文本放入一個(gè)變量,比如MyStr中,然后使用“SendKeys MyStr”語句就可以了。但是SendKeys的功能并不只限于這樣,它最大的作用是發(fā)送一個(gè)或多個(gè)擊鍵動(dòng)作到其他程序中,想要發(fā)送哪個(gè)鍵值,只要使用以下語句即可:
SendKeys "該鍵在鍵盤注明的名稱"
這就為我們利用其他程序中的快捷鍵提供了可能,進(jìn)而我們就可以在自己的程序中控制其他程序的動(dòng)作。如果我們想發(fā)送Ctrl+V這個(gè)粘貼的指令,就可以用以下語句:
SendKeys "^c"
其中Ctrl用“^”來代替。類似的組合鍵還有Shift和Alt,分別用“+”和“%”(后面的例子中會(huì)用到Shift)。但是在用ClipBoard對(duì)象或SendKeys方法之前,還必須先用AppActivate語句激活需要通信程序的窗口。它的用法是:
AppActivate +“所要激活應(yīng)用程序窗口標(biāo)題”
比如一個(gè)記事本,正在編輯的文件名為my.txt,用以下語句來激活它要保持自己的程序:
AppActivate "my.txt - 記事本" 。
通信中還必須注意的問題就是和被調(diào)用程序運(yùn)行之間的步調(diào)一致,也就是所謂的同步控制。那就要用到DoEvents函數(shù),它的作用是轉(zhuǎn)讓控制權(quán),以便操作系統(tǒng)處理事件。只要有意識(shí)地在程序中需要的地方加入DoEvents就可以了。在有多次的循環(huán)語句中,相信大家都使用過這個(gè)語句。與DoEvents相配合的還有就是一個(gè)API函數(shù)Sleep(),必須先聲明:
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
具體的Sleep時(shí)間需要自己去實(shí)踐。
代碼實(shí)現(xiàn)
要用到的基本知識(shí)已經(jīng)講完了,下面讓我們來看看編寫“灌水機(jī)”的部分關(guān)鍵代碼:(其中DoEvents語句用漢字“返”代替,Sleep()函數(shù)用“等”漢字代替)
Private Sub CmdBegin_Click()
On Error GoTo 0
'為字符串變量title和txtfromfile賦值的語句省略了,最好和文本文件結(jié)合使用。
Clipboard.Clear
Clipboard.SetText title
AppActivate ("虎踞龍盤") '我用Cterm上的虎踞龍盤東南站,窗口標(biāo)題為“虎踞龍盤”
等,返,等 '即依次執(zhí)行語句DoEvents Sleep (100) DoEvents,下同
SendKeys ("^p") 'Cterm程序中發(fā)文用的快捷鍵
返 SendKeys "+{insert}" 'Cterm程序中粘貼文本的快捷鍵
返,等,返 SendKeys "{enter}" '發(fā)文必須用的回車動(dòng)作
返SendKeys "{enter}" 返,等,返
'以上語句就實(shí)現(xiàn)了向Cterm程序發(fā)送文章的標(biāo)題
Clipboard.Clear
Clipboard.SetText txtfromfile
返,等,返
SendKeys "+{insert}" 返
SendKeys "^w" 'Cterm中的發(fā)文動(dòng)作
返 SendKeys "^w" 返
SendKeys "{enter}" '一篇文章已經(jīng)發(fā)送完畢,在以后的語句中進(jìn)入下一個(gè)循環(huán)
End Sub
以上就是一個(gè)BBS發(fā)文程序的關(guān)鍵部分:與Cterm程序反復(fù)的進(jìn)行通信,并進(jìn)行同步的控制。它進(jìn)行反復(fù)的循環(huán),就會(huì)一篇篇地把本地機(jī)器上的文本傳到BBS上(其實(shí)是僅僅傳給了Cterm),這樣利用程序間的通信,就避免了進(jìn)行網(wǎng)絡(luò)編程。