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

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲电影在线播放| 天堂亚洲免费视频| 又黄又爽无遮挡免费视频| 日韩大片在线永久免费观看网站| 国产亚洲精品自在线观看| 2021国内精品久久久久精免费| 国产精品亚洲午夜一区二区三区| 国产免费私拍一区二区三区| 一级毛片免费视频网站| 亚洲AV永久纯肉无码精品动漫| 99久久久精品免费观看国产 | 成年18网站免费视频网站| 香蕉97碰碰视频免费| 亚洲综合婷婷久久| 国产免费直播在线观看视频| 男人的天堂网免费网站| 精品无码专区亚洲| 亚洲大香人伊一本线| 亚洲乱亚洲乱少妇无码| 国国内清清草原免费视频99 | 日韩成人精品日本亚洲| 久久99国产亚洲精品观看| 日本高清色本免费现在观看| 99久久免费精品高清特色大片| 美女羞羞视频免费网站| 亚洲成a人片7777| 国产亚洲精品国产| 亚洲高清无码专区视频| 无人影院手机版在线观看免费| 国产精品高清免费网站| 亚洲AV无码专区在线观看成人| 亚洲视频2020| 亚洲人成色7777在线观看| 日本最新免费不卡二区在线| 18观看免费永久视频| a级日本高清免费看| 日韩精品免费一线在线观看| 亚洲一本一道一区二区三区| 久久精品国产精品亚洲毛片| 亚洲欧洲日产国码无码久久99 | 日本人的色道www免费一区|