PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB | Internet Explorer]


memphis.2000
31.07.2004, 21:05
Vorhaben:

ich schreibe mir ein kleines Programm dass die Url des geöffneten (!) Internet Explorers ändert.

Kenne mich mit VB nicht unbedingt gut aus ... habe auch nur den Code gefunden dass man ein neues Fenster öffnet und dann da die Url bestimmt .. aber für ein geöffnetes Fenster nicht.

weiß jemand Rat? :(

memphis.2000
30.08.2004, 17:34
toll das man hier so schnell ne Antwort bekommt ^^

i_hasser
31.08.2004, 06:01
Na du könntest ja auch mal etwas detaillierter werden.

Bei einer Frage frei nach dem Motto "Hilfäää, wie geht das?" ist es schwierig eine passende Antwort zu finden ;).


Also fangen wir mal ganz langsam an: Du willst den IEh steuern. Wie? Mit einer HTML Seite oder mit einem 2. Prog/Skript?

Bei ersterem kannst du VB Skript vergessen. Der IE versteht das zwar auch in Webseiten, aber das ist schlicht Müll - nimm lieber Javascript.

Bei letzterem wird es auch schwierig, weil man den IE eben nicht mit einem anderen Programm mal so eben steuern kann. Vor allem nicht mit VB Skript, also wie du es drehst - VB Skript ist Mist.


Viel einfacher wäre es wenn du einfach sagen würdest wozu du das brauchst...

memphis.2000
31.08.2004, 14:47
ok *g*

also eine bestimmte Seite benutzt Sessions .. d.h. wenn ich mit dem Steuerelement von VB die Adresse aufruf dann bin ich bei der Seite ausgeloggt.

d.h. ich muss mich manuell einloggen und dann brauch ich ein Tool das dann Variablen über die geöffnete Seite schickt damit ich halt noch eingeloggt bin.

und nicht mit html sondern mit ner EXE .. mit C++ dürfte das ja auch gehen? aber davon hab ich überhaupt keine Ahnung und auch keinen Compiler ..

ich öffne eine Seite.. logge mich ein .. und dann muss das Tool die Adresse oben ändern damit die session noch gültig is (.. und keine neue seite öffnen)

verstanden?`O.o is nich so toll erklärt *g*

TiKu
31.08.2004, 15:37
VBScript ist nicht VB ;) Außerdem ist VBScript nicht per se Müll, es kommt vielmehr auf das Einsatzgebiet an. Javascript ist für Internetsachen, VBScript ist eher der Nachfolger der guten alten Batchdateien (*.bat) und da ist es gar nicht mal übel.

@Topic:
Hab's quick and dirty in VB6 gelöst. Es gibt sicher einen besseren Weg.

Option Explicit

Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
Private Declare Function SendMessageAsLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


Private Sub Command1_Click()
Const EM_SETSEL = &HB1
Const WM_KEYDOWN = &H100
Const WM_KEYUP = &H101
Dim hWnd_IE As Long
Dim hWnd_tmp As Long
Dim hWnd_URLEdit As Long
Dim url As String

url = "http://www.planet3dnow.de"

' Adressleiste finden
hWnd_IE = FindWindowEx(0, 0, "IEFrame", vbNullString)
If hWnd_IE Then
hWnd_tmp = FindWindowEx(hWnd_IE, 0, "WorkerW", vbNullString)
If hWnd_tmp Then
hWnd_tmp = FindWindowEx(hWnd_tmp, 0, "RebarWindow32", vbNullString)
If hWnd_tmp Then
hWnd_tmp = FindWindowEx(hWnd_tmp, 0, "ComboBoxEx32", vbNullString)
If hWnd_tmp Then
hWnd_tmp = FindWindowEx(hWnd_tmp, 0, "ComboBox", vbNullString)
If hWnd_tmp Then
hWnd_URLEdit = FindWindowEx(hWnd_tmp, 0, "Edit", vbNullString)
If hWnd_URLEdit Then
' aktuelle Adresse entfernen
SendMessageAsLong hWnd_URLEdit, EM_SETSEL, 0, 2 ^ 31 - 1
SendMessageAsLong hWnd_URLEdit, WM_KEYDOWN, vbKeyDelete, 0
SendMessageAsLong hWnd_URLEdit, WM_KEYUP, vbKeyDelete, 0
' neue Adresse senden
sendText hWnd_URLEdit, url
' Enter "drücken"
SendMessageAsLong hWnd_URLEdit, WM_KEYDOWN, vbKeyReturn, 0
SendMessageAsLong hWnd_URLEdit, WM_KEYUP, vbKeyReturn, 0
End If
End If
End If
End If
End If
End If
End Sub


Private Sub sendText(ByVal hWnd As Long, ByVal txt As String)
Const WM_CHAR = &H102
Dim char As String
Dim iChar As Long

If hWnd Then
' jedes Zeichen einzeln senden, da SetWindowText() Pointer verwendet und diese nur innerhalb
' eines Prozesses gültig sind
For iChar = 1 To Len(txt)
char = Mid(txt, iChar, 1)
SendMessageAsLong hWnd, WM_CHAR, Asc(char), 0
Next iChar
End If
End Sub


/e: Da fehlte noch was.

memphis.2000
31.08.2004, 15:42
es klappt!!!! danke für eure Hilfe *g* echt perfekt *g* *freu*

memphis.2000
01.09.2004, 12:39
eine kleine modifikation wär noch schöner ..


kann man das auch so machen:

wenn die neue Url dem Browser übergeben wurde und die nun läd, dass dann das VB-Prog warten bis die Seite fertig geladen ist und dann den Vorgang wiederholt?

TiKu
01.09.2004, 13:20
Ich wüsste nicht wie. Man könnte evt. nachschauen, ob es in der Statusleiste ("msctls_statusbar32") einen Fortschrittsbalken ("msctls_progress32") gibt. Aber das ist a) genausowenig eine schöne Lösung wie obiger Code und b) unzuverlässig, da man bspw. die Statusleiste ausblenden kann.

memphis.2000
01.09.2004, 20:33
schade *noahnung* naja muss es dann wohl so gehen ..thx



Copyright © 1999 - 2011 Planet 3DNow!
Rechtliche Hinweise