Imports System.Runtime.InteropServices
Public Class Form1
Dim WithEvents pr As Process
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For Each Process In System.Diagnostics.Process.GetProcesses() ' Получаем Все процессы в LB
ListBox1.Items.Add(Process.ProcessName)
Next
End Sub
Private Sub TaskHook()
pr = Process.GetProcessesByName(ListBox1.SelectedItem)(0) ' Отлавливаем завершение процесса
pr.EnableRaisingEvents = True
End Sub
Private Sub ProcEx() Handles pr.Exited
MsgBox("Process Closed")
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ListBox1.SelectedItems.Clear()
For i As Integer = 0 To ListBox1.Items.Count - 1
If ListBox1.Items(i).ToString().Contains(TextBox1.Text) Then ' Исчем процесс в списке
ListBox1.SetSelected(i, True)
End If
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
TaskHook()
Dim классскрина As New СкриншотОкнаПоЗаголовку
Dim process1 As Process = Process.GetProcessesByName(ListBox1.SelectedItem)(0)
Dim title As String = process1.MainWindowTitle()
Label1.Text = "H_WT :" & title.ToString
PictureBox1.Image = классскрина.скрин_отдельного_окна(title)
'Label2.Text = process1.MainModule.FileVersionInfo.ProductName
Label3.Text = process1.MainModule.FileVersionInfo.CompanyName
Label4.Text = process1.MainModule.FileVersionInfo.ProductVersion
Label5.Text = process1.MainModule.FileVersionInfo.FileDescription
Catch ex As Exception
Label2.Text = "none"
Label3.Text = "none"
Label4.Text = "none"
Label5.Text = "none"
End Try
End Sub
Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter
End Sub
End Class
Public Class СкриншотОкнаПоЗаголовку
_
Private Shared Function FindWindow( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
End Function
Public Shared Function FindWindow1(ByVal windowName As String, ByVal wait As Boolean) As Integer
Dim hWnd As Integer = FindWindow(Nothing, windowName)
While wait AndAlso hWnd = 0
System.Threading.Thread.Sleep(500)
hWnd = FindWindow(Nothing, windowName)
End While
Return hWnd
End Function
Function скрин_отдельного_окна(ByVal заголовок_окна As String) As Image
Return CaptureWindow(FindWindow1(заголовок_окна, False))
End Function
Public Shared Function CaptureWindow(ByVal WindowHandle As IntPtr) As Image
Dim windowRect As New User32.RECT()
User32.GetWindowRect(WindowHandle, windowRect)
Dim width As Integer = windowRect.right - windowRect.left + 1
Dim height As Integer = windowRect.bottom - windowRect.top + 1
User32.SetWindowPos(WindowHandle, CType(User32.HWND_TOPMOST, System.IntPtr), 0, 0, 0, 0, _
User32.SWP_NOMOVE Or User32.SWP_NOSIZE Or User32.SWP_FRAMECHANGED)
Dim hdcSrc As IntPtr = User32.GetWindowDC(WindowHandle)
Dim hdcDest As IntPtr = GDI32.CreateCompatibleDC(hdcSrc)
Dim hBitmap As IntPtr = GDI32.CreateCompatibleBitmap(hdcSrc, width, height)
Dim hOld As IntPtr = GDI32.SelectObject(hdcDest, hBitmap)
GDI32.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, _
0, 0, GDI32.SRCCOPY)
User32.SetWindowPos(WindowHandle, CType(User32.HWND_NOTOPMOST, System.IntPtr), 0, 0, 0, 0, _
User32.SWP_NOMOVE Or User32.SWP_NOSIZE Or User32.SWP_FRAMECHANGED)
GDI32.SelectObject(hdcDest, hOld)
GDI32.DeleteDC(hdcDest)
User32.ReleaseDC(WindowHandle, hdcSrc)
Dim img As Image = Image.FromHbitmap(hBitmap)
GDI32.DeleteObject(hBitmap)
Return img
End Function
Private Class User32
Public Const SWP_FRAMECHANGED As Integer = &H20
Public Const SWP_NOMOVE As Integer = &H2
Public Const SWP_NOSIZE As Integer = &H1
Public Const SWP_NOZORDER As Integer = &H4
Public Const HWND_TOPMOST As Integer = -1
Public Const HWND_NOTOPMOST As Integer = -2
_
Public Structure RECT
Public left As Integer
Public top As Integer
Public right As Integer
Public bottom As Integer
End Structure
_
Public Shared Function GetWindowDC(ByVal hWnd As IntPtr) As IntPtr
End Function
_
Public Shared Function ReleaseDC(ByVal hWnd As IntPtr, ByVal hDC As IntPtr) As IntPtr
End Function
_
Public Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef rect As RECT) As IntPtr
End Function
_
Public Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, _
ByVal uFlags As UInteger) As Boolean
End Function
End Class
Private Class GDI32
Public Const SRCCOPY As Integer = &HCC0020
_
Public Shared Function BitBlt(ByVal hObject As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hObjectSource As IntPtr, _
ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As Integer) As Boolean
End Function
_
Public Shared Function CreateCompatibleBitmap(ByVal hDC As IntPtr, ByVal nWidth As Integer, ByVal nHeight As Integer) As IntPtr
End Function
_
Public Shared Function CreateCompatibleDC(ByVal hDC As IntPtr) As IntPtr
End Function
_
Public Shared Function DeleteDC(ByVal hDC As IntPtr) As Boolean
End Function
_
Public Shared Function DeleteObject(ByVal hObject As IntPtr) As Boolean
End Function
_
Public Shared Function SelectObject(ByVal hDC As IntPtr, ByVal hObject As IntPtr) As IntPtr
End Function
End Class
End Class
четверг, 21 марта 2013 г.
Process Explorer Project
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий