Option Explicit On Option Strict On Imports System.ComponentModel Imports System.Runtime.InteropServices Imports System.Text Imports System.Threading.Thread Public Class Form1 <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> Public 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 WebBrowser As New WebBrowser Private WithEvents BackgroundWorker As New BackgroundWorker Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.WebBrowser.Dock = DockStyle.Fill Me.Controls.Add(Me.WebBrowser) Me.BackgroundWorker.RunWorkerAsync(Application.ExecutablePath) Me.WebBrowser.DocumentText = "<input type=""file"" id=""upload"">" End Sub Private Sub WebBrowser_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser.DocumentCompleted Dim Document As HtmlDocument = DirectCast(sender, WebBrowser).Document Dim InputElement As HtmlElement = Document.GetElementById("upload") InputElement.InvokeMember("click") 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(1) 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(1) 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