• <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下運行通過。 

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 免费观看的av毛片的网站| 久久久久免费看成人影片| 午夜小视频免费观看| 亚洲av永久无码嘿嘿嘿| 国内精自视频品线六区免费| 久久亚洲日韩精品一区二区三区| 久久久久久AV无码免费网站| 亚洲成人免费在线| 久久国产乱子伦精品免费强| 久久精品亚洲综合| 久久免费视频精品| 亚洲国产理论片在线播放| 99久久99久久精品免费看蜜桃| 国产亚洲福利在线视频| 色www永久免费视频| 视频一区在线免费观看| 亚洲麻豆精品国偷自产在线91| 国产真人无码作爱免费视频| 久久久久久a亚洲欧洲AV| 久久不见久久见免费视频7| 亚洲乱码在线观看| 国产aa免费视频| 久久久WWW成人免费精品| 亚洲成人午夜在线| 久久午夜免费视频| 美女被免费视频网站a| 亚洲美女又黄又爽在线观看| 日韩av无码久久精品免费| 亚洲专区一路线二| 亚洲av无码专区在线观看素人| 在线观看肉片AV网站免费| 亚洲国产精品免费观看| 亚洲精品成人a在线观看| 久久久久久久岛国免费播放 | 午夜精品免费在线观看| ASS亚洲熟妇毛茸茸PICS| 亚洲国产日韩在线观频| 一级毛片aaaaaa免费看| 亚洲AV噜噜一区二区三区| 亚洲国产精品无码久久久蜜芽 | 黑人精品videos亚洲人|