74 lines
2.7 KiB
VB.net
74 lines
2.7 KiB
VB.net
Imports System.Runtime.InteropServices
|
|
Module HandleWindow
|
|
|
|
Dim name3 As String
|
|
Dim name4 As String
|
|
Dim n As Integer = 0
|
|
Dim CreoWindowNameM As String
|
|
Public Declare Function EnumWindows Lib "User32.dll" (ByVal WNDENUMPROC As EnumWindowDelegate, ByVal lparam As IntPtr) As Boolean
|
|
Public Declare Auto Function GetWindowText Lib "User32.dll" (ByVal Hwnd As IntPtr, ByVal Txt As Byte(), ByVal Lng As Integer) As Integer
|
|
Public Declare Function IsWindowVisible Lib "User32.dll" (ByVal hwnd As IntPtr) As Boolean
|
|
Public Declare Function GetWindowTextLengthA Lib "User32.dll" (ByVal hwnd As IntPtr) As Integer
|
|
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
|
|
Public Declare Function SetWindowPos Lib "user32" (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 wFlags As Integer) As Integer
|
|
Public Const SWP_SHOWWINDOW = &H40
|
|
Public Const SWP_NOMOVE = &H2
|
|
Public Const SWP_NOSIZE = &H1
|
|
Delegate Function EnumWindowDelegate(ByVal hWnd As IntPtr, ByVal Lparam As IntPtr) As Boolean
|
|
Public Callback As EnumWindowDelegate = New EnumWindowDelegate(AddressOf EnumWindowProc)
|
|
|
|
Public Function FocusWindowM(name1 As String, name2 As String)
|
|
name3 = name1
|
|
name4 = name2
|
|
|
|
Dim Result As String = HandleWindow.EnumWindows(Callback, IntPtr.Zero)
|
|
n = n + 1
|
|
FocusWindow()
|
|
Return True
|
|
|
|
End Function
|
|
Public Function EnumWindowProc(ByVal hWnd As IntPtr, ByVal Lparam As IntPtr) As Boolean
|
|
|
|
If IsWindowVisible(hWnd) Then
|
|
Dim TheLength As Integer = GetWindowTextLengthA(hWnd)
|
|
Dim TheReturn(TheLength * 2) As Byte '2x the size of the Max length
|
|
GetWindowText(hWnd, TheReturn, TheLength + 1)
|
|
Dim TheText As String = ""
|
|
For x = 0 To (TheLength - 1) * 2
|
|
If TheReturn(x) <> 0 Then
|
|
TheText &= Chr(TheReturn(x))
|
|
End If
|
|
Next
|
|
|
|
If TheText.Contains(name3) And TheText.Contains(name4) Then
|
|
|
|
CreoWindowNameM = TheText
|
|
Else
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
Return True
|
|
|
|
End Function
|
|
Public Sub FocusWindow()
|
|
Dim dbHwnd As IntPtr = FindWindow(Nothing, CreoWindowNameM)
|
|
|
|
Debug.Print(dbHwnd)
|
|
If dbHwnd = 0 Then
|
|
' MsgBox("Can't find creo window")
|
|
Else
|
|
' MsgBox("Creo window found")
|
|
SetWindowPos(dbHwnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
|
|
|
|
End If
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
End Module
|
|
|
|
|