sorry, aber ich war heut morgen zu müde um drann zu bleiben.
Zitat: |  | Ja, aber wie fülle ich denn diese uploadfelder?
...über value nicht geschafft...
...anscheinden deaktiviert. |  |
das ist richtig!
"Das Attribut value in Verbindung mit <input type="file">, mit dem das Vorbelegen der Dateiauswahl möglich wäre, wird von moderneren Browsern aus Sicherheitsgründen nicht mehr unterstützt."
deshalb muss hier ein trick angewandt werden.
das was der benutzer normalerweise selber macht, auf durchsuchen klicken, eine datei auswählen und auf öffnen klicken, muss durch entsprechenden code erledigt werden.
das klicken auf durchsuchen ist noch kein problem.
wir gehen alle input felder durch bis wir zum uploadfeld kommen und lassen klicken
icount = WebBrowser1.Document.getElementsByTagName("input").Length
For i = 0 To icount - 1
If LCase(WebBrowser1.Document.getElementsByTagName("input")(i).Type) = _
"file" Then
WebBrowser1.Document.getElementsByTagName("input")(i).Click
Exit For
End If
Next dadurch öffnet sich der datei auswählen dialog (bei firefox nennt er sich datei uploaden)
wir benötigen einen timer der prüft ob der dialog geöffnet ist um dann das feld für den dateinamen zu füllen und dann auf öffnen zu klicken.
da vb während geöffnetem dialog pausiert und nicht weiter ausgeführt wird, erstellt man einen timer per api.Sub TimerProc(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As _
Long, ByVal lpTimerFunc As Long)
hdl = FindWindowEx(0&, 0&, vbNullString, "Datei auswählen")
If hdl = 0 Then Exit Sub
hdl = FindWindowEx(hdl, 0&, "ComboBoxEx32", "")
hdl = FindWindowEx(hdl, 0&, "ComboBox", "")
hdl = FindWindowEx(hdl, 0&, "Edit", "")
SetWindowText hdl, Form1.List1.List(currentfile)
hdl = FindWindowEx(0&, 0&, vbNullString, "Datei auswählen")
hdl = FindWindowEx(hdl, 0&, "Button", "Ö&ffnen")
PostMessage hdl, WM_LBUTTONDOWN, 1, &H8001F
PostMessage hdl, WM_LBUTTONUP, 0&, &H8001F
End Sub nachdem der dialog per code "bedient" wurde und wieder geschlossen ist, fehlt nur noch das absenden des formulars.
da wie gesagt die anwendung pausiert während der dialog geöffnet ist, kann das absenden direkt nach dem öffnen des dialogs erfolgen.
icount = WebBrowser1.Document.getElementsByTagName("input").Length
For i = 0 To icount - 1
If LCase(WebBrowser1.Document.getElementsByTagName("input")(i).Type) = _
"file" Then
WebBrowser1.Document.getElementsByTagName("input")(i).Click
[color=green] 'dateiauswahl dialog öffnet sich und
' anwendung pausiert dadurch hier
WebBrowser1.Document.Forms(0).submit
Exit For
End If
Next mfg
brave@heart
...bis zur unendlichkeit und noch viel weiter... |