
มีใครเคยอยากเช็คมั้ยครับ ว่าตอนนี้ Process บางอัน ที่เราสนใจ รันอยู่รึเปล่า รวมถึงโปรแกรมที่สนใจด้วย จริงๆแล้ว เราสามารถ เช็คได้ง่ายๆเลย เพราะ Windows Provide function มาให้แล้ว
สำหรับ VB.Net นะครับ ผมจะเขียน function หาว่ามี notepad รันอยู่หรือไม่นะครับ หลังจากนั้นผมก็อยากรู้ว่่า หน้าต่าง notepad นั้นมีขนาดเท่าไหร่ วางอยู่ตรงไหนของหน้าจอ ก็ทำได้ตามนี้เลย
ขั้นแรก import namespace นี้เพื่อเรียกใช้ function การเช็ค Process ของ Windows นะครับ
Imports System.Diagnostics
Public Sub Get_Application_WindowsSize()
Dim AppNameWithoutPathTheExePart As String = "notepad" 'กำหนดตัวแปรชื่อ process ที่ต้องการหา ดูได้ใน Task Manager นะครับ โดยตัด .exe ออกนะครับ
Dim ps() As Process = Process.GetProcessesByName(AppNameWithoutPathTheExePart) 'อันนี้เป็น function Get Process โดยหาจากชื่อ Process ซึ่งจะ return ตัวแปรเป็น process นะครับ ซึ่งจะออกมาเป็น Array เนื่องจาก Process สามารถถูกรันได้มากกว่า 1
If ps.Length > 0 Then
Dim p As Process = ps(0) 'ผมจะสนใจ process แรกแค่อันเดียวนะครับ
Console.Writeline ("Notepad is running")
End If
End sub
ตอนนี้เราหา Process เจอแล้ว ต่อไปเราจะไปหา Windows Size ของ Notepad กัน
ผมจะเพิ่ม Code ต่อเลยนะครับ
อันนี้เป็น Library ของ windows เอาไว้หาขนาด windows ที่สนใจอยู่นะครับ โดยเราต้องเอา Handle ของ Windows ที่ต้องการ ใส่เข้าไป
Imports System.Diagnostics
Private Declare Function GetWindowRect Lib "user32" (ByVal handle As IntPtr, ByRef lpRect As RECT) As Integer
Public Structure RECT
Dim Left As Integer
Dim Top As Integer
Dim Right As Integer
Dim Bottom As Integer
End Structure
Public Sub Get_Application_WindowsSize()
Dim AppNameWithoutPathTheExePart As String = "notepad" 'กำหนดตัวแปรชื่อ process ที่ต้องการหา ดูได้ใน Task Manager นะครับ โดยตัด .exe ออกนะครับ
Dim ps() As Process = Process.GetProcessesByName(AppNameWithoutPathTheExePart) 'อันนี้เป็น function Get Process โดยหาจากชื่อ Process ซึ่งจะ return ตัวแปรเป็น process นะครับ ซึ่งจะออกมาเป็น Array เนื่องจาก Process สามารถถูกรันได้มากกว่า 1
If ps.Length > 0 Then
Dim p As Process = ps(0) 'ผมจะสนใจ process แรกแค่อันเดียวนะครับ
Dim pRect As RECT
GetWindowRect(p.MainWindowHandle, pRect)
Console.WriteLine("Notepad Windows Left:" & pRect.Left & " Right:" & pRect.Right & " Top:" & pRect.Right & " Bottom:" & pRect.Bottom)
'แค่นี้เราก็ได้ขนาด หน้าจอ notepad ที่กำลัง รันอยู่แล้วครับ
End If
End sub