「input type=file」で表示されるダイアログの制御方法 削除
Message#4 2015年4月13日(月)09時09分 From: DSC_渡辺 |
どうも、しばらく放置していました。すいません。 ファイルダイアログの自動操作ですが、EXCELVBAからVbscriptを起動することでファィルパスの入力と開くボタンクリックを実現することができました。 ''ファイルダイアログ表示待ちの為に待機 WScript.sleep(5000) Set ObjExcel = WScript.CreateObject("Excel.Application") ''ファイルダイアログのハンドラ取得 DialogHnd = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowA"", ""JCC"", ""#32770"", """ & ファイルダイアログのタイトル & """)" ) ''ファイルダイアログの各入力項目のハンドラ取得 EditHnd1 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & DialogHnd & "," & 0 & ",""ComboBoxEx32""," & vbNullString & ")") EditHnd2 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & EditHnd1 & "," & 0 & ",""ComboBox""," & vbNullString & ")") EditHnd3 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & EditHnd2 & "," & 0 & ",""Edit""," & vbNullString & ")") ''ファイルパスを入力項目にセット ret = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""SendMessageA"", ""JJJJC"", " & EditHnd3 & "," & &HC & "," & 0 & ",""" & ファイルパス & """)") ''開くボタンのハンドラ取得 BtnHnd = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & DialogHnd & "," & 0 & ",""Button"",""開く(&O)"")") ''開くボタンのコントロールID取得 CtrID = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""GetDlgCtrlID"", ""JJ""," & BtnHnd & ")") ''開くボタンをクリック ret = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""SendMessageA"", ""JJJJC"", " & DialogHnd & "," & &H111 & "," & CtrID & ",""" & BtnHnd & """)") ObjExcel.Quit Set ObjExcel = nothing WScript.Quit 以上の処理をファイルダイアログが表示されている間に実行することでファイルパス入力と開くボタンクリックに成功し、Web画面のテキストにもファイルパスが表示されました。 ただ、この後にsubmitボタンクリックでファイルアップロードを実行しても、「-2147352319 オートメーション エラーです。」となったり、ファイルアップロードが実行されないという現象が発生しました。 これに関しては別途質問を投げることとします。 どうもお世話をかけました。 |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。