Digital Data - Marlon Schreiber 420d9fedf7 MSNamenÄndern
2017-12-14 13:54:22 +01:00

73 lines
3.5 KiB
VB.net
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Imports DD_LIB_Standards
Public Class clsWINDOWSApi
Private Declare Function GetForegroundWindow Lib "user32.dll" Alias "GetForegroundWindow" () As IntPtr
Private Declare Auto Function GetWindowText Lib "user32.dll" (ByVal hWnd As System.IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As IntPtr, ByRef lpdwProcessID As Integer) As Integer
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hWnd As IntPtr, ByVal WinTitle As String, ByVal MaxLength As Integer) As Integer
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias "GetWindowTextLengthA" (ByVal hwnd As Int32) As Integer
Private Shared Function GetClassName(ByVal hWnd As System.IntPtr, _
ByVal lpClassName As System.Text.StringBuilder, _
ByVal nMaxCount As Integer) As Integer
' Leave function empty
End Function
Public Shared Function GetCaption() As String
Dim Caption As New System.Text.StringBuilder(256)
Dim hWnd As IntPtr = GetForegroundWindow()
Dim pid As Integer = 0
GetWindowThreadProcessId(hWnd, pid)
If pid = 0 Then Exit Function
Return Caption.ToString()
End Function
Public Shared Function IsRelevantWindow(windowname As String)
Try
Dim enumerator1 As New clsWindowApi
'Jedes Formularwindow durchlaufen
For Each top As clsWindowApi.ApiWindow In enumerator1.GetTopLevelWindows()
If LogErrorsOnly = False Then clsLogger.Add(" ... top-window Name: " & top.MainWindowTitle, False)
If top.MainWindowTitle.Contains(windowname) Or top.MainWindowTitle.ToLower = windowname.ToLower Then
Console.WriteLine(top.MainWindowTitle)
Return False
End If
Next top
Catch ex As Exception
MsgBox("Error in IsRelevantWindowt:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
clsLogger.Add(">> Error in IsRelevantWindow:" & ex.Message, False)
Return False
End Try
End Function
Private Shared m_LastHwnd As Long
Public Shared Sub Get_ForegroundWindow_Info()
'—– Get the Handle to the Current Forground Window —–
Dim hWnd As IntPtr = GetForegroundWindow()
If hWnd = IntPtr.Zero Then Exit Sub
' Find the Length of the Windows Title
Dim TitleLength As Int32
TitleLength = GetWindowTextLength(hWnd)
'—– Find the Windows Title —–
Dim WindowTitle As String = StrDup(TitleLength + 1, "*")
GetWindowText(hWnd, WindowTitle, TitleLength + 1)
'—– Find the PID of the Application that Owns the Window —–
Dim pid As Integer = 0
GetWindowThreadProcessId(hWnd, pid)
If pid = 0 Then Exit Sub
' Get the actual PROCESS from the process ID
Dim proc As Process = Process.GetProcessById(pid)
If proc Is Nothing Then Exit Sub
Dim msg = pid.ToString & vbNewLine
PROC_PID = pid.ToString
PROC_Name = proc.ProcessName
msg &= vbNewLine & "Procname: " & proc.ProcessName
msg &= vbNewLine & "MainWindowTitle: " & proc.MainWindowTitle
msg &= vbNewLine & "WindowTitle: " & WindowTitle
PROC_WindowTitle = WindowTitle
msg &= vbNewLine & TitleLength.ToString
' MsgBox(msg)
End Sub
End Class