久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用VB輕松調(diào)用其他程序...

 a_cheng 2009-10-22
用VB輕松調(diào)用其他程序

  我們編寫(xiě)程序時(shí),,有時(shí)會(huì)遇到在一個(gè)程序中調(diào)用并控制另一個(gè)程序執(zhí)行的情況,,在一些編程語(yǔ)言中實(shí)現(xiàn)起來(lái)較為繁瑣,但如果用VB編寫(xiě)時(shí),,則可輕松實(shí)現(xiàn),。下面我就以在程序中調(diào)用“計(jì)算器”為例,總結(jié)了以下幾種方法:

  一,、以異步方式來(lái)執(zhí)行其他程序

  Shell 函數(shù)是以異步方式來(lái)調(diào)用其他程序的,。也就是說(shuō),用Shell啟動(dòng)的程序可能還沒(méi)有完成執(zhí)行過(guò)程,,就已經(jīng)執(zhí)行到 Shell 函數(shù)之后的語(yǔ)句,。

  語(yǔ)法:Shell(pathname[,windowstyle])

  說(shuō)明:pathname:必要參數(shù)。Variant (String),,要執(zhí)行的程序名,,以及任何必需的參數(shù)或命令行變量,可能還包括目錄或文件夾,,以及驅(qū)動(dòng)器,。

  例如:RetVal = Shell(″C:WINDOWSCALC.EXE″, 1) ′ 調(diào)用計(jì)算器。

  二,、以同步方式來(lái)執(zhí)行其他程序

  有時(shí)候,,我們需要讓VB在執(zhí)行完外部程序后再執(zhí)行下一語(yǔ)句,這就需要使用API函數(shù)。

  我們可通過(guò)OpenProcess和CloseHandle函數(shù)來(lái)檢測(cè)調(diào)用軟件的運(yùn)行情況,。這兩個(gè)函數(shù)的聲明如下:

  Declare Function OpenProcess Lib ″kernel32″ Alias ″OpenProcess″ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

  Declare Function CloseHandle Lib ″kernel32″ Alias ″CloseHandle″ (ByVal hObject As Long) As Long

  建立下面函數(shù),,用以判斷程序是否在運(yùn)行,如果是,,則在運(yùn)行時(shí)返回True,。

  Function IsRunning(ByVal ProgramID) As Boolean  ′傳入進(jìn)程標(biāo)識(shí)ID

    Dim hProgram As Long   ′被檢測(cè)的程序進(jìn)程句柄

    hProgram=OpenProcess(0,False,ProgramID)

    If Not hProgram=0 Then

     IsRunning=True

    Else

     IsRunning=False

    End If

    CloseHandle hProgram

  End Function

  例如要調(diào)用計(jì)算器(CALC.EXE)并等到它運(yùn)行完成后再執(zhí)行下一語(yǔ)句,可以使用以下代碼:

   Dim RetVal

   MsgBox ″開(kāi)始運(yùn)行″

   RetVal = Shell(″C:WINDOWSCALC.EXE″, 1)

   While IsRunning(RetVal)

     DoEvents

   Wend

   MsgBox ″結(jié)束運(yùn)行″

  三,、關(guān)閉正在運(yùn)行中的其他軟件

  如果要在程序中關(guān)閉正在運(yùn)行中的其他程序,,可以先使用FindWindow函數(shù)找出相應(yīng)的程序句柄,然后調(diào)用PostMessage函數(shù)關(guān)閉該程序即可,。

  這兩個(gè)函數(shù)的聲明如下:

  Declare Function FindWindow Lib ″user32″ Alias ″FindWindowA″ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

  Declare Function PostMessage Lib ″user32″ Alias ″PostMessageA″ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

  例如要檢測(cè)“計(jì)算器”程序是否正在運(yùn)行,,如果是則關(guān)閉它,可以使用如下代碼來(lái)實(shí)現(xiàn):

   Dim winHwnd As Long

   Dim RetVal As Long

   winHwnd=FindWindow(vbNullString,″計(jì)算器″)

   If winHwnd〈〉0 Then

     RetVal=PostMessage(winHwnd,&H10,0&,0&)

     If RetVal=0 Then

        MsgBox ″關(guān)閉計(jì)算器出錯(cuò),!″

     End If

   Else

     MsgBox ″計(jì)算器程序沒(méi)有運(yùn)行,。″

   End If

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多