• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        獲得系統中運行的程序及運用的DLL文件

        獲得系統中運行的程序及運用的DLL文件

        更新時間:2022-05-14 文章作者:未知 信息來源:網絡 閱讀次數:

             在Microsoft Visual Studio中提供了一個可以查看當前運行的程序的工具Process Viewer
        可以查看系統中當前運行的程序,下面我來介紹在你的程序中如何實現這種功能。
            Windows提供了一系列的API函數可以建立當前的程序、模塊、線程的“快照”(SnapShot)
        利用這些“快照”函數就可以獲得當前的程序、模塊等的信息。
            下面實現的步驟:

            1、在Form1中加入一個CommandButton控件、兩個ListBox控件
            2、在Form1中加入如下代碼:

        Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" _
                (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
        Private Declare Function Process32First Lib "kernel32" _
                (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
        Private Declare Function Process32Next Lib "kernel32" _
                (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
        Private Declare Function Module32First Lib "kernel32" _
                (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long
        Private Declare Function Module32Next Lib "kernel32" _
                (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long

        Private Declare Function CloseHandle Lib "kernel32" (ByVal _
                hObject As Long) As Long
        Private Declare Function SendMessage Lib "user32" Alias _
                "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As _
                Long, ByVal wParam As Long, lParam As Any) As Long

        Private Type PROCESSENTRY32
            dwSize As Long
            cntUsage As Long
            th32ProcessID As Long
            th32DefaultHeapID As Long
            th32ModuleID As Long
            cntThreads As Long
            th32ParentProcessID As Long
            pcPriClassBase As Long
            dwFlags As Long
            szExeFile As String * 1024
        End Type

        Private Type MODULEENTRY32
            dwSize As Long
            th32ModuleID As Long
            th32ProcessID As Long
            GlblcntUsage As Long
            ProccntUsage As Long
            modBaseAddr As Byte
            modBaseSize As Long
            hModule As Long
            szModule As String * 256
            szExePath As String * 1024
        End Type

        Const LB_SETHORIZONTALEXTENT = &H194
        Const TH32CS_SNAPHEAPLIST = &H1
        Const TH32CS_SNAPPROCESS = &H2
        Const TH32CS_SNAPTHREAD = &H4
        Const TH32CS_SNAPMODULE = &H8
        Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS _
                                Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
        Const TH32CS_INHERIT = &H80000000

        Dim MyEntry(100) As PROCESSENTRY32

        Private Sub Command1_Click()
            Dim my As PROCESSENTRY32
            Dim l As Long
           
            List1.Clear
            l = SendMessage(List1.hwnd, &H194, 640, 0)
            '建立當前程序快照
            l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
            If l Then
                my.dwSize = 1060
                If (Process32First(l, my)) Then '遍歷第一個程序
                    '遍歷所有程序直到返回值為False
                    Do
                        List1.AddItem (Trim$(my.szExeFile))
                        MyEntry(List1.ListCount - 1) = my
                    Loop Until (Process32Next(l, my) < 1)
        End If
        '關閉快照句柄
        CloseHandle l
        End If
        End Sub

        Private Sub Form_Load()
        Command1_Click
        End Sub

        Private Sub List1_Click()
        Dim l As Long
        Dim mm As MODULEENTRY32
        Dim lm As Long
        Dim astr As String

        If MyEntry(List1.ListIndex).th32ProcessID <> 0 Then
                l = SendMessage(List2.hwnd, &H194, 640, 0)
                List2.Clear
                 
                '根據程序快照句柄建立程序的模塊句柄
                lm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, _
                    MyEntry(List1.ListIndex).th32ProcessID)
                If lm > 0 Then
                    mm.dwSize = Len(mm)
                    '獲得第一個模塊
                    If Module32First(lm, mm) Then
                        '遍歷所有模塊知道返回值為False
                        Do
                            If MyEntry(List1.ListIndex).th32ProcessID = _
                                mm.th32ProcessID Then
                                 
                                astr = Left$(mm.szModule, (InStr(1, _
                                    mm.szModule, Chr(0)) - 1))
                                 
                                List2.AddItem astr
                            End If
                        Loop Until (Module32Next(lm, mm) < 1)
        End If
        CloseHandle (lm)
        End If
        End If
        End Sub

        運行程序,List1中就列出當前運行的所有的程序的名稱及路徑,點擊其中任一個列表,
        在List2中就會列出這個程序所使用的DLL的文件名。按下Command1重新獲得系統中運行的程序。
        上面只是通過簡單的程序介紹了“快照”的建立和使用,只要稍加改造,就可以獲得諸如
        程序的線程數、模塊尺寸、模塊在內存的基地址等信息。
        以上程序在Windows95、VB5.0下運行通過。 

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲精品无码久久毛片波多野吉衣| 黄页网站在线看免费| 三年片在线观看免费观看大全中国 | 在线免费观看亚洲| 亚洲中文字幕无码亚洲成A人片| 亚洲精华国产精华精华液好用 | 亚洲 日韩 色 图网站| 福利免费在线观看| 久久一本岛在免费线观看2020| 女人张开腿等男人桶免费视频| 国产免费人视频在线观看免费| 久久久久久亚洲AV无码专区 | 成人A毛片免费观看网站| 国产成人麻豆亚洲综合无码精品| 337p日本欧洲亚洲大胆色噜噜| 24小时日本韩国高清免费| 四虎影在线永久免费四虎地址8848aa| 亚洲Av无码国产一区二区| 黄在线观看www免费看| 亚洲熟妇av一区二区三区 | 亚洲日本人成中文字幕| 久久免费线看线看| 免费不卡中文字幕在线| 亚洲中文字幕久久精品无码VA| 国产精品视频免费一区二区三区| 亚洲人成网站在线观看播放动漫 | 国产精品99久久免费| 国产精品1024在线永久免费| 国产中文字幕免费| 美女被免费网站91色| 亚洲国产成人精品女人久久久 | 无码囯产精品一区二区免费| 亚洲乱码一二三四五六区| 国产成人免费福利网站| 国产免费爽爽视频在线观看| 亚洲色图激情文学| 久久久久亚洲精品天堂久久久久久| 男性gay黄免费网站| 欧洲精品免费一区二区三区| youjizz亚洲| 成人免费淫片在线费观看|