亚洲综合AⅤ一区二区三区不卡,欧美成在线观看国产,老司机精品视频在线观看播放,精品久久国产免费

<dl id="2gmk4"><small id="2gmk4"></small></dl>
  • 首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
    2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
    MPA考試 | 中科院
    四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
    新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
    計(jì)算機(jī)等級考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
    華為認(rèn)證 | Java認(rèn)證
    公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
    報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
    人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
    駕駛員 | 網(wǎng)絡(luò)編輯
    衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
    會計(jì)從業(yè)資格考試會計(jì)證) | 經(jīng)濟(jì)師 | 會計(jì)職稱 | 注冊會計(jì)師 | 審計(jì)師 | 注冊稅務(wù)師
    注冊資產(chǎn)評估師 | 高級會計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國際內(nèi)審師
    一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
    質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
    設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
    城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計(jì)量師
    繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

    用DDE實(shí)現(xiàn)窗體防止運(yùn)行多個實(shí)例并傳遞命令

    本文為“用DDE實(shí)現(xiàn)窗體防止運(yùn)行多個實(shí)例并傳遞命令”,以供廣大學(xué)員參考使用。更多關(guān)于計(jì)算機(jī)等級考試資料,請?jiān)L問考試吧計(jì)算機(jī)等級考試頻道。

      上網(wǎng)的朋友一定都用過網(wǎng)絡(luò)螞蟻(Net Ants)的吧?不知你在使用過程中有沒有注意過,那就是如果你想調(diào)動兩個“螞蟻”為您效力是不可能的——它總會把新運(yùn)行的關(guān)閉。這點(diǎn)在VB中很容易實(shí)現(xiàn):

      Private Sub Form_Load()

      If App.PrevInstance Then

      MsgBox "你已經(jīng)運(yùn)行這個應(yīng)用程序了"

      End’ 退出新運(yùn)行的程序

      End If

      End Sub

      這樣如果你運(yùn)行這個程序后在運(yùn)行它,它會彈出一個消息框并拒絕再次運(yùn)行。這非常容易。

      而“螞蟻”程序的妙處就在于:在重復(fù)運(yùn)行“螞蟻”時它不僅拒絕運(yùn)行,而且能把已經(jīng)運(yùn)行的“螞蟻”激活,這樣用上面的程序就無能為力了。但事實(shí)上實(shí)現(xiàn)拒絕運(yùn)行并激活已運(yùn)行的程序有多種方法:

      1、用FindWindow函數(shù)得到已經(jīng)運(yùn)行窗體的句柄(HWND),然后用SetActiveWindow等API函數(shù)將其激活。其缺點(diǎn)也很明顯,那就是沒法傳遞參數(shù)。

      2、用FindWindow函數(shù)得到已運(yùn)行窗體的句柄后用SendMessage的方法給窗體傳送一個自定義消息(附帶參數(shù)),然后在窗體中攔截并進(jìn)行處理,但這樣做要修改窗體的標(biāo)準(zhǔn)消息處理程序,用在VC,BC或DELPHI編寫的程序中還行,但在VB中工作量太大,并且容易發(fā)生“一般保護(hù)行錯誤”使VB崩潰,不太可取(當(dāng)然,如果你有足夠的信心和不怕崩潰的精神,也可以試一下 ^_^ )。

      3、使用DDE技術(shù)。

      所謂DDE技術(shù),就是動態(tài)數(shù)據(jù)交換技術(shù)。也許你很奇怪,這與本文所討論的內(nèi)容有什么相干的?且聽我慢慢講來。

      為了實(shí)現(xiàn)拒絕運(yùn)行并把已經(jīng)運(yùn)行的程序激活并實(shí)現(xiàn)各種功能,我們可以先用本文開頭提到的方法,檢測一下程序有沒有被運(yùn)行過,如果沒有,就正常運(yùn)行,如果已經(jīng)被運(yùn)行過,就打通與它的DDE通道,傳給它一個(或一些)數(shù)據(jù),然后由已經(jīng)運(yùn)行的程序?qū)?shù)據(jù)進(jìn)行處理,再去實(shí)現(xiàn)各種“意想不到”的功能,這時也許就有人對這你的程序喊:“酷、酷……” ^_^

      好了,耳聽為虛,眼見為實(shí),下面讓我們動點(diǎn)真格的。

      打開VB,新建一個工程,選擇菜單中的“工程->工程1 屬性”,把工程名稱改為“P1”(我愛偷懶,能短則短 ^_^ ),把已有的一個窗體的“LinkTopic”屬性改為“FormDDE”,把“LinkMode”屬性改為“1 - Source”,添加一個PictureBox控件作為DDE執(zhí)行控件,命名為picDDE。然后添加一個

      TextBox控件,命名為“txtInfo”,并把“MultiLine”屬性設(shè)置為“True”,以便顯示多行文本,作為消息顯示控件。

      最后在窗體代碼區(qū)輸入以下代碼:

      Const COMMANDLINE = "CommandLine=" ’ 還是為了省事,定義一個常量

      Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)

      Static lngCount As Long

      Dim Info As String

      Info = txtInfo.Text ’保留原有信息

      Select Case CmdStr’ CmdStr 是DDE程序傳送過來的參數(shù)

      Case "Max"

      Me.WindowState = 2

      Info = Info + vbNewLine + "窗體已被最大化"

      Case "ShowTime"

      Info = Info + vbNewLine + "最后一次運(yùn)行這個程序的時間是:" + Str(Now)

      Case "Count"

      lngCount = lngCount + 1

      Info = Info + vbNewLine + "你已經(jīng)第" + Str(lngCount) + "次重復(fù)調(diào)用這個程序。" _

      + vbNewLine + "但怕您不多給工資,所以只運(yùn)行了一個 ^_^"

      End Select

      If Left(CmdStr, Len(COMMANDLINE)) = COMMANDLINE Then

      Info = Info + vbNewLine + "新程序曾以命令行形式運(yùn)行" + vbNewLine + "命令行為:" _

      + vbNewLine + Right(CmdStr, Len(CmdStr) - Len(COMMANDLINE))

      End If

      txtInfo.Text = Info ’ 把信息顯示出來

      Cancel = False

      End Sub

      Private Sub LinkAndSendMessage(ByVal Msg As String)

      Dim t As Long

      picDDE.LinkMode = 0’--

      picDDE.LinkTopic = "P1|FormDDE"’ |______連接DDE程序并發(fā)送數(shù)據(jù)/參數(shù)

      picDDE.LinkMode = 2’ |“|”為管道符,是“退格鍵”旁邊的豎線,

      picDDE.LinkExecute Msg’-- 不是字母或數(shù)字!

      t = picDDE.LinkTimeout ’--

      picDDE.LinkTimeout = 1 ’ |______終止DDE通道。當(dāng)然,也可以用別的方法

      picDDE.LinkMode = 0 ’ |這里用的是超時強(qiáng)制終止的方法

      picDDE.LinkTimeout = t ’--

      End Sub

      Private Sub Form_Load()

      If App.PrevInstance Then ’ 程序是否已經(jīng)運(yùn)行

      Me.LinkTopic = "" ’ 這兩行用于清除新運(yùn)行的程序的DDE服務(wù)器屬性,

      Me.LinkMode = 0’ 否則在連接DDE程序時會出亂子的

      LinkAndSendMessage "Max" ’--

      LinkAndSendMessage "Count" ’ |-----連接DDE接受程序并傳送數(shù)據(jù)/參數(shù)

      LinkAndSendMessage "ShowTime" ’--

      If Command <> "" Then ’ 如果有命令行參數(shù),就傳遞過去

      LinkAndSendMessage COMMANDLINE + Command

      End If

      End ’ 結(jié)束新程序的運(yùn)行

      End If

      End Sub

      測試一下:

      把工程“P1”編譯成EXE文件(設(shè)名稱為 P1.EXE )

      1、打開“我的電腦”,找到 P1.EXE 并執(zhí)行?梢钥吹匠绦蛘_\(yùn)行了。

      2、再運(yùn)行一次,這次新程序沒有運(yùn)行成功,而原來運(yùn)行的程序卻被最大化了,而且文本框中有以下字符:

      窗體已被最大化

      你已經(jīng)第 1次重復(fù)調(diào)用這個程序。

      但怕您不多給工資,所以只運(yùn)行了一個 ^_^

      最后一次運(yùn)行這個程序的時間是:00-2-6 7:11:01

      3、打開 MS-DOS方式 ,用命令行方式再次運(yùn)行程序,如 “P1 How Are You?”

      這時原來運(yùn)行的程序文本框中又多了幾行字:

      窗體已被最大化

      你已經(jīng)第 2次重復(fù)調(diào)用這個程序。

      但怕您不多給工資,所以只運(yùn)行了一個 ^_^

      最后一次運(yùn)行這個程序的時間是:00-2-6 7:14:32

      新程序曾以命令行形式運(yùn)行

      命令行為:

      How Are You?

      OK,運(yùn)行完全正確,然后你就可以把它應(yīng)用的你的程序中了。

      當(dāng)然,這只是一些個人心得,如有疏漏之出,還請各位大蝦指正。

      相關(guān)推薦:2010年上半年全國計(jì)算機(jī)等考報名時間匯總
           2010年全國計(jì)算機(jī)等級二級VB考試題型與解題技巧
           免費(fèi)版:2010年計(jì)算機(jī)等級考試二級VB模擬試題11套
    文章搜索
    版權(quán)聲明:如果計(jì)算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@lyawyb.com,我們將會及時處理。如轉(zhuǎn)載本計(jì)算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。