久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

C#如何判斷程序調(diào)用的exe已結(jié)束——二個方法

時(shí)間:2019-05-13 13:23:34下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《C#如何判斷程序調(diào)用的exe已結(jié)束——二個方法》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《C#如何判斷程序調(diào)用的exe已結(jié)束——二個方法》。

第一篇:C#如何判斷程序調(diào)用的exe已結(jié)束——二個方法

二個方法:以運(yùn)行系統(tǒng)記事本為例

方法一:這種方法會阻塞當(dāng)前進(jìn)程,直到運(yùn)行的外部程序退出

System.Diagnostics.Process exep = System.Diagnostics.Process.Start(@“C:WindowsNotepad.exe”);

exep.WaitFor();//關(guān)鍵,等待外部程序退出后才能往下執(zhí)行

MessageBox.Show(“Notepad.exe運(yùn)行完畢”);

方法二:為外部進(jìn)程添加一個事件監(jiān)視器,當(dāng)退出后,獲取通知,這種方法時(shí)不會阻塞當(dāng)前進(jìn)程,你可以處理其它事情

System.Diagnostics.Process exep = new System.Diagnostics.Process();

exep.StartInfo.FileName = @“C:WindowsNotepad.exe”;

exep.EnableRaisingEvents = true;

exep.ed += new EventHandler(exep_ed);

exep.Start();

//exep_Exited事件處理代碼,這里外部程序退出后激活,可以執(zhí)行你要的操作

void exep_Exited(object sender, EventArgs e)

{

MessageBox.Show(“Notepad.exe運(yùn)行完畢”);

}

提問者評價(jià)

謝謝了,我開始也想到用exited這個事件,總是不觸發(fā),原來還得設(shè)置屬性啊

第二篇:文中介紹了一種實(shí)現(xiàn)VB調(diào)用C語言程序的方法

文中介紹了一種實(shí)現(xiàn)VB調(diào)用C語言程序的方法-動態(tài)連接庫法,給出了動態(tài)鏈接庫制作的一般框架,通過實(shí)例描述了動態(tài)連接庫的實(shí)現(xiàn)及其制做方法、編程步驟,這種方法具有普遍的意義。

關(guān)鍵詞 VB 動態(tài)連接庫DLL C程序

一、引言 Visual Basic(以下簡稱VB)是一種可視化的面向?qū)ο蟮木幊陶Z言,以其編程簡單、快捷等特點(diǎn),深受廣大WINDOWS程序員的青睞。利用VB開發(fā)界面友好、操作方便的軟件只需很短的時(shí)間。但是VB運(yùn)行速度較慢,對于龐大的科學(xué)計(jì)算問題,VB的這種慢速會使人難以忍受。C語言是國際上非常流行的一種中級編程語言,以其靈活、高效等優(yōu)點(diǎn)而獲得廣泛應(yīng)用,許多的應(yīng)用程序都是用C語言在DOS環(huán)境下編寫而成。那么如何發(fā)揮VB和C這兩種語言的優(yōu)勢,用VB設(shè)計(jì)一種良好的for windows界面來調(diào)用C語言程序,即實(shí)現(xiàn)VB調(diào)用C語言程序呢?現(xiàn)有的文獻(xiàn)只提到動態(tài)鏈接庫(以下簡稱DLL)可以將這兩種語言連接起來,但有講動態(tài)鏈接庫DLL的制做及其編程方法。本文詳細(xì)介紹了Borland C環(huán)境下制作動態(tài)鏈接庫以及VB調(diào)用for dos動態(tài)鏈接庫的的方法、步驟,并通過實(shí)例描述VB調(diào)用C程序的全過程。

二、用Borland C編寫DLL程序的方法 要想實(shí)現(xiàn)VB調(diào)用C程序,首先需要用Borland C編寫動態(tài)連接庫DLL程序(假設(shè)DLL程序取名為example)。動態(tài)鏈接庫包含四個文件:C語言源程序(.C)、模塊定義文件(.DEF)、原型函數(shù)文件(.H)和工程文件(.PRJ)。下面分別詳細(xì)介紹一下這四種文件的具體結(jié)構(gòu)。

1、編寫C語言源程序的框架:C語言源程序(example.C),它包括三種函數(shù):入口函數(shù)、輸出函數(shù)和終止函數(shù)。其具體 結(jié)構(gòu)如下:

/*************************************/ /* 文件名: example.C */ /*************************************/ #include /***********入口函數(shù)***********/ int FAR PASCAL LibMain(HANDLE hInstance, WORD wDataSeg, WORD cbHeapSize, LPSTR lpszCmdLine){ if(cbHeapSize!=0)UnlockData(0);return(1);} /***********輸出函數(shù)***********/ int FAR PASCAL example(int param1,...,char param n){....../*C語言應(yīng)用程序*/ } /***********終止函數(shù)***********/ int FAR PASCAL WEP(int /*SystemExit*/){ return(1);} 以上各組成部分參數(shù)的含義:Windows.h頭文件,它包含有數(shù)據(jù)類型的定義、API入口點(diǎn)定義和其它有用的參數(shù)信息。PASCAL說明符定義該程序的傳遞參數(shù)和凈化堆棧的協(xié)定(注意:DLL外部傳送的指針必須是遠(yuǎn)指針FAR)。LibMain帶四個參數(shù):hInstance、wDataSeg、cbHeapSize和lpszCmdLine。第一個參數(shù)hInstance是DLL事例句柄,wDataSeg參數(shù)是數(shù)據(jù)段(DS)寄存器值,bHeapSize參數(shù)是在模塊定義文件中定義的堆的大小,LibMain 使用該值使本地堆初始化。lpszCmdLine參數(shù)包括命令行信息,但很少被DLL使用。一般來說,這四個參數(shù)是制作DLL通用的參數(shù)。如果不想讓DLL數(shù)據(jù)被封住,那么必須調(diào)用unlockdata恢復(fù)正常的非鎖狀態(tài),如果DLL初始化已經(jīng)成功,DLL則返回1,若不成功則返回0值,且 DLL退出系統(tǒng)。DLL的輸出函數(shù)實(shí)現(xiàn)用戶所要完成的任務(wù),這部分是DLL的核心。它與一般C語言程序不同之處在于無scanf函數(shù)。所有的外部指針都是遠(yuǎn)指針FAR。畫直線函數(shù)要用lineto函數(shù)。DLL包括一個終止函數(shù),終止函數(shù)有時(shí)稱為退出函數(shù),它的名字必須是WEP。且它可以被包括在DLL模塊定義文件的EXPORTS段中。

2、模塊定義文件(.DEF)的結(jié)構(gòu)和各段的意義 模塊定義文件的結(jié)構(gòu)如下:

/*************************************/ /* 文件名: example.DEF */ /*************************************/ LIBRARY example /* DLLname */ DESCRIPTION ' example.DLL' EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE SINGLE HEAPSIZE 1024 EXPORTS example @1 WEP @2 關(guān)鍵字LIBRARY是把這個模塊視為一個DLL,庫的名字example跟在其后,且必須與該庫的名字、DEF中的DLL的文件名相一致。DESCRIPTION語句采用一個字符串,其長度可達(dá)128 個字符,通常用它來保存模塊描述的信息。EXETYPE windows語句每個windows應(yīng)用程序和 DLL都需要。DATA語句定義該庫數(shù)據(jù)段的內(nèi)存屬性,關(guān)鍵字MOVEABLE允許內(nèi)存管理程序在 必要時(shí)移動內(nèi)存段,關(guān)鍵字SINGLE是DLL必要,因?yàn)镈LL總是有一個單一數(shù)據(jù)段,而不管訪 問它的應(yīng)用程序的數(shù)量。HEAPSIZE語句用來定義一個DLL局部堆的初始規(guī)模,執(zhí)行局部內(nèi) 存分配的DLL必須在庫啟動時(shí)使該堆初始化,堆的大小被傳送給DLL的LiEntry的程序。然 后用該堆的大小調(diào)用Locallnit使DLL的局部堆初始化。EXEPORTS語句定義將被用作來自應(yīng)用程序或來自其它DLL入口點(diǎn)的程序,windows利用這個信息建立一個序數(shù)入口值,序數(shù)入口值是一個優(yōu)化的值,允許動態(tài)連接機(jī)制更快塊操作且使用較少的內(nèi)存。一般來說,模塊定義文件(.DEF)的結(jié)構(gòu)除取動態(tài)庫的名字不同外,其它結(jié)構(gòu)都是固定的。3.建立原形函數(shù)文件(.H)原形函數(shù)的功能是進(jìn)一步聲明調(diào)用函數(shù)的函數(shù)名和傳遞的參數(shù),其形式為: /*************************************/ /* 文件名: example.H */ /*************************************/ extern “C” int _export FAR PASCAL example(int param1,...,char param n);4.建立工程文件(.PRJ)工程文件中包含有example.C、example.DEF兩個文件后,然后編譯連接生成動態(tài)鏈接庫即可。

以上是制作動態(tài)連接庫的框架,現(xiàn)在通過一個實(shí)例介紹制作動態(tài)鏈接庫的方法。如要求程序完成功能為:打開一個數(shù)據(jù)文件讀出前兩個數(shù)據(jù),將這兩個數(shù)與所傳遞的兩個參數(shù)相加,返回它們的和。設(shè)該DLL程序的名字為ADD。

第一步:在Borland C++環(huán)境下編輯.C文件、.DEF文件和.H文件,并建立.PRJ文件。如

(1)編寫C語言源程序清單:

/*************************************/

/* 文件名: ADD.C */ /*************************************/ #include #include #include #include #include #include #include #include #include “c:ADD.h” /*入口函數(shù)*/ int FAR PASCAL LibMain(HANDLE hInstance , WORD wDataSeg , WORD cbHeapSize, LPSTR lpszCmdLine){ if(cbHeapSize!=0)UnlockData(0);return 1;} /*輸出函數(shù)*/ int FAR PASCAL ADD(int x,int y,char *filein){ int a,b;

fp=fopen(filein,“r”);if(fp==NULL){ exit(0);} int temp1=0,temp2=0;fscanf(fp,“%d”,&a);fscanf(fp,“%d”,&b);temp1=x+a;temp2=y+b;temp1=temp1+temp2;fclose(fp);return(temp1);} /*退出函數(shù)*/ int FAR PASCAL WEP(int/*SystemExit*/){ return(1);} 2)ADD.DEF文件的程序清單:

/*************************************/ /* 文件名: ADD.H */ /*************************************/ LIBRARY ADD DESCRIPTION 'ADD.DLL' EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE SINGLE HEAPSIZE 1024 EXPORTS ADD @1 WEP @2(3)ADD.H程序清單:

/*************************************/ /* 文件名: ADD.H */ /*************************************/ extern “C” int _export FAR PASCAL add(int x,int y,char *filein);(4)建立工程文件:

在Borland C++環(huán)境下的project項(xiàng)中打開open project file項(xiàng)并建立ADD.prj,在add item中加入ADD.C文件和ADD.DEF文件即可建立工程文件。第二步,在Borland C的options項(xiàng)的Applation中選擇Windows DLL,再在Compile中選擇Build all,這樣就可生成動態(tài)鏈接庫ADD.DLL供VB調(diào)用。

三、VB3.0調(diào)用動態(tài)鏈接庫DLL方法 制作好DLL之后,就可以用VB調(diào)用它,實(shí)現(xiàn)VB調(diào)用C程序。VB程序要使用DLL中的函數(shù),首先必須要有特殊的聲明,用Declare聲明語句在窗體級或模塊級或全局模塊的代碼聲明段進(jìn)行聲明,將動態(tài)鏈接庫中的函數(shù)聲明到VB中,供VB程序調(diào)用。語句格式為:Declare Sub 過程名Lib摽鈹黚_n[ Alias “ 別名]([ByVal 參數(shù)AS類型]),或?yàn)镈eclare Function函數(shù)名Lib摽鈹黚_衃 Alias ” 別名]([ByVal 參數(shù)AS類型])AS類型在聲明中首先用Declare關(guān)鍵字表示聲明DLL中的函數(shù)。在C語言中有的函數(shù)類型為VOID,它表示不具有返回值,則必須用關(guān)鍵字Sub將其聲明成過程。有的函數(shù)具有返回值,則必須用關(guān)鍵字Function將其聲明成函數(shù),并且在聲明語句的最后要用AS關(guān)鍵字指明函數(shù)返回值的類型。例如上面的ADD.DLL在VB中就可以聲明為: Declare Function ADD Lib撫c:ADD.dll敚―ByVal X AS Integer, ByVal Y AS Integer ,ByVal filein as string)AS Integer通過此聲明語句將函數(shù)ADD聲明到VB中,便可直接調(diào)用。

四、結(jié)束語 以上詳細(xì)介紹了Borland C環(huán)境下制作動態(tài)鏈接庫以及VB調(diào)用for dos動態(tài)鏈接庫的方法、步驟,并通過實(shí)例說明VB調(diào)用C語言程序的方法。舉例程序ADD經(jīng)VB3.0編譯,在486微機(jī)上調(diào)試通過。本文介紹的方法具有廣泛的意義,也完全適用于C++ 語言程序。

下載C#如何判斷程序調(diào)用的exe已結(jié)束——二個方法word格式文檔
下載C#如何判斷程序調(diào)用的exe已結(jié)束——二個方法.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    主站蜘蛛池模板: 国产精品高清一区二区三区不卡| 人妻少妇伦在线麻豆m电影| 中文字幕久久久人妻无码| 国产免费福利在线视频| 久久天天躁狠狠躁夜夜婷| 乱子轮熟睡1区| 成人乱码一区二区三区av| 国产三级久久精品三级| 99久久综合精品五月天| 亚州中文字幕无码中文字幕| 天堂а√在线中文在线最新版| 日本高清无卡码一区二区| 国产一区二区三区成人欧美日韩在线观看| 无码无需播放器av网站| 欧美群妇大交群| 狠狠色婷婷久久综合频道毛片| 十八禁网站在线观看| 亚洲电影区图片区小说区| 精品动漫一区二区无遮挡| 国产熟女一区二区三区五月婷| 国产va免费精品高清在线30页| 内射白浆一区二区在线观看| 亚洲精品无码在线观看| 亚洲欧美日本久久综合网站| 中文无码妇乱子伦视频| 欧美大成色www永久网站婷| 中文字幕无码不卡免费视频| 国产亚洲日韩a欧美在线人成| 国产在线高清理伦片a| 久久精品成人欧美大片| 好想被狂躁无码视频在线观看| 久久久久女教师免费一区| 欧美乱人伦中文字幕在线| 加勒比色老久久综合网| 无码性午夜视频在线观看| 亚洲精品成人久久电影网| 天堂va欧美va亚洲va好看va| 国产精品无码一本二本三本色| 欧美又粗又大xxxxbbbb疯狂| 亚洲国产日韩a在线乱码| 伦埋琪琪电影院久久|