麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

VB中使用DDE技術為應用程序增輝

2019-11-18 17:41:45
字體:
來源:轉載
供稿:網友
上網的朋友一定都用過網絡螞蟻(NetAnts)的吧?不知你在使用過程中有沒有注意過,那就是如果你想調動兩個“螞蟻”為您效力是不可能的——它總會把新運行的關閉。而“螞蟻”程序的妙處就在于:在重復運行“螞蟻”時它不僅拒絕運行,而且能把已經運行的“螞蟻”激活,這樣用上面的程序就無能為力了。但事實上實現拒絕運行并激活已運行的程序有多種方法:

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

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

  3、使用DDE技術

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

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

  好了,耳聽為虛,眼見為實,下面讓我們動點真格的。

  打開VB,新建一個工程,選擇菜單中的“工程->工程1屬性”,把工程名稱改為“P1”,把已有的一個窗體的“LinkTopic”屬性改為“FormDDE”,把“LinkMode”屬性改為“1-Source”,添加一個PictureBox控件作為DDE執行控件,命名為picDDE。然后添加一個TextBox控件,命名為“txtInfo”,并把“MultiLine”屬性設置為“True”,以便顯示多行文本,作為消息顯示控件。

  最后在窗體代碼區輸入以下代碼:

->ConstCOMMANDLINE="CommandLine="注釋:還是為了省事,定義一個常量

Me.WindowState=2
Info=Info vbNewLine "窗體已被最大化"
Case"ShowTime"
Info=Info vbNewLine "最后一次運行這個程序的時間是:" Str(Now)
Case"Count"
lngCount=lngCount 1
Info=Info vbNewLine "你已經第" Str(lngCount) "次重復調用這個程序。"_
vbNewLine "但怕您不多給工資,所以只運行了一個^_^"
EndSelect

IfLeft(CmdStr,Len(COMMANDLINE))=COMMANDLINEThen
Info=Info vbNewLine "新程序曾以命令行形式運行" vbNewLine "命令行為:"_
vbNewLine Right(CmdStr,Len(CmdStr)-Len(COMMANDLINE))
EndIf

txtInfo.Text=Info注釋:把信息顯示出來

Cancel=False

EndSub


PrivateSubLinkAndSendMessage(ByValMsgAsString)
DimtAsLong
picDDE.LinkMode=0注釋:--
picDDE.LinkTopic="P1|FormDDE"注釋:|______連接DDE程序并發送數據/參數
picDDE.LinkMode=2注釋:|“|”為管道符,是“退格鍵”旁邊的豎線,
picDDE.LinkExecuteMsg注釋:--不是字母或數字!

t=picDDE.LinkTimeout注釋:--
picDDE.LinkTimeout=1注釋:|______終止DDE通道。當然,也可以用別的方法
picDDE.LinkMode=0注釋:|這里用的是超時強制終止的方法
picDDE.LinkTimeout=t注釋:--
EndSub


PrivateSubForm_Load()
IfApp.PrevInstanceThen注釋:程序是否已經運行

Me.LinkTopic=""注釋:這兩行用于清除新運行的程序的DDE服務器屬性,
Me.LinkMode=0注釋:否則在連接DDE程序時會出亂子的

LinkAndSendMessage"Max"注釋:--
LinkAndSendMessage"Count"注釋:|-----連接DDE接受程序并傳送數據/參數
LinkAndSendMessage"ShowTime"注釋:--

IfCommand<>""Then注釋:如果有命令行參數,就傳遞過去
LinkAndSendMessageCOMMANDLINE Command
EndIf
End注釋:結束新程序的運行
EndIf
EndSub->

  測試一下:

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

  1、打開“我的電腦”,找到P1.EXE并執行。可以看到程序正常運行了。

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

  窗體已被最大化
  你已經第1次重復調用這個程序

  但怕您不多給工資,所以只運行了一個。

  最后一次運行這個程序的時間是:05-2-67:11:01

  3、打開MS-DOS方式,用命令行方式再次運行程序,如“P1HowAreYou?”,這時原來運行的程序文本框中又多了幾行字:

  窗體已被最大化
  你已經第2次重復調用這個程序。
  但怕您不多給工資,所以只運行了一個
  最后一次運行這個程序的時間是:05-2-67:14:32

  新程序曾以命令行形式運行

  命令行為:

  HowAreYou?

  OK,運行完全正確,然后你就可以把它應用的你的程序中了。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涩涩操 | 国产艳妇av视国产精选av一区 | 免费特黄 | 91天堂国产在线 | 国产午夜免费 | 一级免费黄色免费片 | 国产欧美在线一区二区三区 | 久草手机在线观看视频 | 亚洲成人福利 | 亚洲午夜国产 | 国产精品自拍99 | 欧美一区二区三区久久精品视 | 毛片大全免费看 | 91久久99热青草国产 | 日韩欧美中文字幕视频 | 爱操在线| 92自拍视频| 欧美精品一区二区中文字幕 | 久久资源总站 | 中文字幕在线观看精品 | 久久99精品久久久久久小说 | 国产精品久久久免费看 | 钻石午夜影院 | 综合在线一区 | av电影在线观看网站 | 成人资源在线 | 成人在线视频精品 | 伦一区二区三区中文字幕v亚洲 | 精品久久中文字幕 | 综合网日日天干夜夜久久 | 欧美成年人在线视频 | 日韩黄在线 | 国产一及毛片 | 91精品一区二区综合在线 | 伦一区二区三区中文字幕v亚洲 | 91网站在线播放 | jj视频在线播放 | 男女污污视频网站 | 精品久久中文网址 | caoporn国产一区二区 | av免费在线播放网址 |