Option Explicit On
Option Strict On
Imports System.Runtime.InteropServices
Imports System.ComponentModel
Imports System.Text
Imports System.Threading.Thread
Public Class WebView2OpenDialogAutomaticInput
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function FindWindow(
ByVal lpClassName As String,
ByVal lpWindowName As String) As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function FindWindowEx(
ByVal parentHandle As IntPtr,
ByVal childAfter As IntPtr,
ByVal lclassName As String,
ByVal windowTitle As String) As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function SendMessage(
ByVal hWnd As IntPtr,
ByVal Msg As Integer,
ByVal wParam As Integer,
ByVal lParam As StringBuilder) As Integer
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Shared Function IsWindowVisible(
ByVal hWnd As IntPtr) As Boolean
End Function
Private Enum WM As Integer
SETTEXT = &HC
End Enum
Private Enum BM As Integer
CLICK = &HF5
End Enum
Private WithEvents BackgroundWorker As New BackgroundWorker
Public Sub WaitDialogOpen(FileName As String)
Me.BackgroundWorker.RunWorkerAsync(FileName)
End Sub
Private Sub BackgroundWorker_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker.DoWork
Dim FileName As String = DirectCast(e.Argument, String)
Dim hWnd As IntPtr
Do While hWnd = IntPtr.Zero
hWnd = FindWindow("#32770", "開く")
Sleep(10)
Loop
Dim hComboBoxEx As IntPtr = FindWindowEx(hWnd, IntPtr.Zero, "ComboBoxEx32", String.Empty)
Dim hComboBox As IntPtr = FindWindowEx(hComboBoxEx, IntPtr.Zero, "ComboBox", String.Empty)
Dim hEdit As IntPtr = FindWindowEx(hComboBox, IntPtr.Zero, "Edit", String.Empty)
Do Until IsWindowVisible(hEdit)
Sleep(10)
Loop
SendMessage(hEdit, WM.SETTEXT, 0, New StringBuilder(FileName))
Dim hButton As IntPtr = FindWindowEx(hWnd, IntPtr.Zero, "Button", "開く(&O)")
SendMessage(hButton, BM.CLICK, 0, Nothing)
End Sub
End Class