Hallo,
ich habe folgendes Problem:
Eine Website besitzt ein <input type="File"/> Tag, das mit javascript und value="meinePfadundFileangabe" oder Files[0]="meinePfadUndFileangabe" leider aus (von Netzseiten nicht näher erläuterten) sicherheitsgründen nicht fernzusteuern sei.
Das möchte ich aber trotzdem gerne tun :-). (Übrigens value und Files[0] werden gesetz, nur vom Tag der Seite ignoriert, also nicht auf der Seite angezeigt)
Nun, es gibt in VB .net die schöne Möglichkeit, API-Funktionene einzubinden.
Soweit so gut. Das bedeutet, ich bekomme schon mal die Speicherstelle des Fensters und mit C oder C++ käme ich da wohl auch weiter, aber ich bin auf VB angewiesen bei dem Tool, aus dem das Problem stammt.
Es geht also, jedoch komme ich mit SendMessage nicht weiter, um Pfad und File zu setzen. (Vmtl. gibt's das Gegenstück im Dialog nicht(?))
Kennt jemand eine Möglichkeit, dem Dialog trotzdem das File beizubiegen?
ich habe folgendes Problem:
Eine Website besitzt ein <input type="File"/> Tag, das mit javascript und value="meinePfadundFileangabe" oder Files[0]="meinePfadUndFileangabe" leider aus (von Netzseiten nicht näher erläuterten) sicherheitsgründen nicht fernzusteuern sei.
Das möchte ich aber trotzdem gerne tun :-). (Übrigens value und Files[0] werden gesetz, nur vom Tag der Seite ignoriert, also nicht auf der Seite angezeigt)
Nun, es gibt in VB .net die schöne Möglichkeit, API-Funktionene einzubinden.
Quellcode
- Public class Beispiel
- 'Entweder so:
- Private Declare Function GetActiveWindow Lib "user32" () As IntPtr
- Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As IntPtr,
- ByVal lpString As StringBuilder, ByVal nMaxCount As Integer) As Integer
- Private Declare Function GetForegroundWindow Lib "user32" () As IntPtr
- 'oder so:
- <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
- Private Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean
- End Function
- <DllImport("user32", SetLastError:=True, CharSet:=CharSet.Auto)>
- Public Shared Function FindWindowEx(ByVal hWndParent As IntPtr, ByVal hWndChildAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr
- End Function
- Private Sub Beispiel_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- 'Vorausgesetzt, Beispiel hat einen Webbrowserplugin, dass eine Seite mit dem Tag aufruft und schon mal draufklickt, um den Dialog zu öffnen.
- '...
- End Sub
- Private Sub Beispiel_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles Beispiel.DocumentCompleted
- 'Klick input type='File' Tag
- 'Mach_mal_was evntl. in einem jetzt gestarteten Timer aufrufen, falls auf das Dialogfenster gewartet werden muss.
- Mach_mal_was()
- End Sub
- Private Sub Mach_mal_was()
- Dim WHnd As IntPtr = GetForegroundWindow() 'Passt bei mir grad, geht aber auch FIndWindow oder GetActiveWindow
- Dim myTest AS Boolean = False
- myTest = SetWindowText(WHnd, "Ich wusste ich schaffs ...")
- If myTest Then MsgBox("Wie man sieht wurde das richtige Fenster umgetitelt",vbInformation,"Debug Information")
- End Sub
- End Class
Soweit so gut. Das bedeutet, ich bekomme schon mal die Speicherstelle des Fensters und mit C oder C++ käme ich da wohl auch weiter, aber ich bin auf VB angewiesen bei dem Tool, aus dem das Problem stammt.
Es geht also, jedoch komme ich mit SendMessage nicht weiter, um Pfad und File zu setzen. (Vmtl. gibt's das Gegenstück im Dialog nicht(?))
Kennt jemand eine Möglichkeit, dem Dialog trotzdem das File beizubiegen?
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „DrSeltsam“ ()