• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Lấy đường dẫn file exe từ tiêu đề của cửa sổ

Các mẹo vặt linh tinh khác, không thuộc nhóm nào
Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 952
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

Lấy đường dẫn file exe từ tiêu đề của cửa sổ

Gửi bàigửi bởi NoBi » T.Tư 03/12/2008 9:58 pm

Thủ thuật: Lấy đường dẫn file exe từ tiêu đề của cửa sổ
Tác giả: Sưu tầm
Mô tả: Lấy đường dẫn file exe từ tiêu đề của cửa sổ để biết được chương trình đang chạy có đường dẫn từ đâu.


Mã: Chọn hết

  1. Option Explicit
  2. Const PROCESS_QUERY_INFORMATION = 1024
  3. Const PROCESS_VM_READ = 16
  4. Const MAX_PATH As Integer = 260
  5.  
  6. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  7. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
  8. Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
  9. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  10. Private Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
  11. Private Declare Function GetModuleFileNameEx Lib "PSAPI.DLL" Alias "GetModuleFileNameExA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
  12.  
  13.  
  14. Private Sub Command1_Click()
  15.   Dim Ret As String
  16.     Dim whwnd As Long
  17.     Dim hMod As Long
  18.     Dim theProcess As Long
  19.     Dim lngCBSize2 As Long
  20.     Dim lngModules(1 To 1) As Long
  21.     Dim lngReturn As Long
  22.     Dim strModuleName As String
  23.     Dim lngSize As Long
  24.     Dim strProcessName As String
  25.    
  26.     'Lay tieu de cua so
  27.     Ret = InputBox("Nhap tieu de cua so vao day:")
  28.     If Ret = "" Then Exit Sub
  29.    
  30.     whwnd = FindWindow(vbNullString, Ret)
  31.     If whwnd  0 Then
  32.         hMod = GetWindowThreadProcessId(whwnd, theProcess)
  33.         If hMod  0 Then
  34.             'Get a handle to the Process and Open
  35.             Dim lngHwndProcess As Long
  36.             lngHwndProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, theProcess)
  37.             If lngHwndProcess  0 Then
  38.                     'Get an array of the module handles for the specified process
  39.                     lngReturn = EnumProcessModules(lngHwndProcess, lngModules(1), 1, lngCBSize2)
  40.                     'If the Module Array is retrieved, Get the ModuleFileName
  41.                      If lngReturn  0 Then
  42.                         'Buffer with spaces first to allocate memory for byte array
  43.                             strModuleName = Space(MAX_PATH)
  44.                             'Must be set prior to calling API
  45.                             lngSize = 500
  46.                             'Get Process Name
  47.                             lngReturn = GetModuleFileNameEx(lngHwndProcess, lngModules(1), strModuleName, lngSize)
  48.                             If lngReturn > 0 Then
  49.                                 'Remove trailing spaces
  50.                                 strProcessName = Left(strModuleName, lngReturn)
  51.                             End If
  52.                     End If
  53.              End If
  54.              'Close the handle to this process
  55.              lngReturn = CloseHandle(lngHwndProcess)
  56.         End If 'process finded
  57.     End If 'window finded
  58.     If Len(strProcessName) > 0 Then
  59.         'Hien thi ket qua
  60.         MsgBox "Found: " & strProcessName
  61.     End If
  62. End Sub
Tập tin đính kèm
exeFromCaption.rar
(4.8 KiB) Đã tải 604 lần


:>

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4758
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 513 time

Re: Lấy đường dẫn file exe từ tiêu đề của cửa sổ

Gửi bàigửi bởi truongphu » T.Tư 10/12/2008 7:36 pm

Khảo sát các tiến trình đang chạy cũng cho ta biết đường dẫn...

Mã: Chọn hết

  1.   Set colItems = GetObject("winmgmts:\root\CIMV2").ExecQuery("SELECT * FROM Win32_Process")
  2.    For Each objItem In colItems
  3.       a = a & vbCrLf & "----------------------------------------------------------"
  4.       a = a & vbCrLf & "Caption: " & objItem.Caption
  5.       a = a & vbCrLf & "CommandLine: " & objItem.CommandLine
  6.       a = a & vbCrLf & "ExecutablePath: " & objItem.ExecutablePath
  7.       a = a & vbCrLf & "Handle: " & objItem.Handle
  8.       a = a & vbCrLf & "HandleCount: " & objItem.HandleCount
  9.       a = a & vbCrLf & "ParentProcessId: " & objItem.ParentProcessId
  10.       a = a & vbCrLf & "Priority: " & objItem.Priority
  11.       a = a & vbCrLf & "ProcessId: " & objItem.ProcessId
  12.       a = a & vbCrLf & "ThreadCount: " & objItem.ThreadCount
  13.    Next
  14. Text1 = a
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Quay về “[VB] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách