ページに正常にアクセスし、[ファイルのアップロード] ボタンをクリックする Web アプリがあります。
私のアプリは、ポップアップ ウィンドウを監視してフックすることで、ポップアップ ウィンドウを正常に処理することもできます。ほとんどの場合、「OK」または「キャンセル」ボタンをクリックするだけです。ボタンは簡単です。
私が助けを必要としているのは、Choose-File ダイアログです。私はそれをうまくフックしていますが、それには多くのコントロールがあり、何らかの方向性が必要です.
これらはその上の子コントロールです:
DUIViewWndClassName,DirectUIHWND,CtrlNotifySink,NamespaceTreeControl,Static,SysTreeView32,CtrlNotifySink,Shell Preview Extension Host,CtrlNotifySink,SHELLDLL_DefView,DirectUIHWND,CtrlNotifySink,ScrollBar,CtrlNotifySink,ScrollBar,Static,Static,Static,ListBox,Static,Static,ComboBoxEx32,ComboBox,Edit,Static,ComboBox,Button,Button,Button,ScrollBar,WorkerW,ReBarWindow32,TravelBand,ToolbarWindow32,Address Band Root,msctls_progress32,Breadcrumb Parent,ToolbarWindow32,ToolbarWindow32,UniversalSearchBand,Search Box,SearchEditBoxWrapperClass,DirectUIHWND
File-Nameテキストボックス/コンボボックスに正確なパス/ファイルを貼り付けて、「開く」をクリックしていただければ幸いです。ボタンの部分は簡単ですが、ウィンドウでファイルを選択する方法も、ファイル名入力フィールドにパスを入力する方法もわかりません。
今、私はこのようなものを持っています:
<DllImport("user32.dll")> _
Private Shared Function GetClassName(ByVal hWnd As IntPtr, ByVal lpClassName As StringBuilder, ByVal nMaxCount As Int32) As Int32
End Function
<DllImport("user32.dll")> _
Private Shared Function GetWindowText(ByVal hWnd As IntPtr, ByVal text As StringBuilder, ByVal maxLength As Int32) As Int32
End Function
<DllImport("user32.dll")> _
Private Shared Function GetDlgCtrlID(ByVal hwndCtl As IntPtr) As Integer
End Function
....
Private Shared Function hwndHandler() As Int32
Dim ptrButtonhwnd As IntPtr
For Each pChild As IntPtr In Interop.ChildWindows(pPopup.hwnd)
Dim sbControl As New StringBuilder(255)
GetClassName(pChild, sbControl, sbControl.Capacity)
If "Button".Equals(sbControl.ToString()) Then
Dim sbText As New StringBuilder(255)
GetWindowText(pChildOfDialog, sbText, sbText.Capacity)
If "&Open".Equals(sbText.ToString()) Then
ptrButtonHwnd = pChild
End If
End If
Next
If ptrButtonHwnd <> IntPtr.Zero Then
Dim ctrlId As Int32 = GetDlgCtrlID(ptrButtonHwnd)
SendMessage(pPopup.hwnd, WM_COMMAND, New IntPtr(ctrlId), ptrButtonHwnd)
Return 1
End If
Return 0
End Function
これは問題なく動作しますが、テキスト/コンボ フィールドに入力するか、ウィンドウでファイルを選択して、開くファイルを選択するために何かを追加する必要があります。