webForumDet fria alternativet

Försöker logga in på hemsida

.NET

4 svar · 268 visningar · startad av Viking

Medlem sedan maj 20003 652 inlägg
Frågan#1

Hej

Håller på och försöker fixa så att jag kan logga in från ett VB-program på en sida jag håller på med. Har denna koden nu:

Private Sub Form_Load()

    Dim ieURL As InternetExplorer
    Set ieURL = New InternetExplorer
    ieURL.Navigate "***"
    
    Dim strPass As String
    Dim strUser As String
    
    strPass = "pass"
    strUser = "user"
    
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys strUser
    SendKeys "{TAB}"
    SendKeys strPass
    SendKeys "{TAB}"
    SendKeys "{ENTER}"
    
End Sub

Problemet är att ingenting händer. Någon som vet varför? :D Eller har några förslag på bättre sätt att lösa (finns säkert) :r

En annan sak, hur kan man kolla hur det går för programmet att ansluta till sidan? Finns det någon funktion eller så?

Medlem sedan juni 20022 599 inlägg
#2

Någon som vet varför?

Ja. Sendkeys skickar tangenttryckningar till den applikation som har fokus. En osynlig instans av IE kan inte ha input-fokus. Du skickar alltså tangentnedtryckningar i blindo.

Eller har några förslag på bättre sätt att lösa (finns säkert)

Ja. Om du bara vill logga in HTTP-mässigt så är det nog bättre att använda en Winsockkontroll. Hur koden då ser ut beror på rätt mycket saker: Hur sidan ser ut. Namn på variablerna som postas. Eventuella cookies. Exakt vad du vill göra. Osv ..

Gein höll på med samma sak nyligen: http://www.webforum.nu/showthread.php?threadid=63987.

Han kanske har lite kodexempel?

hur kan man kolla hur det går för programmet att ansluta till sidan?

Vill du ha visuell feed-back från din nuvarande kod kan du skriva tex:

Private WithEvents ieURL  As InternetExplorer

Private Sub Form_Load()
    Set ieURL = New InternetExplorer
    ieURL.Navigate "***"

    Dim strPass As String
    Dim strUser As String
    
    'strPass = "pass"
    'strUser = "user"
    
    'SendKeys "{TAB}"
    'SendKeys "{TAB}"
    'SendKeys strUser
    'SendKeys "{TAB}"
    'SendKeys strPass
    'SendKeys "{TAB}"
    'SendKeys "{ENTER}"
End Sub

Private Sub ieURL_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    MsgBox "Japp, nu är vi inne på sidan: " & ieURL.Document.Title
End Sub
Medlem sedan maj 20003 652 inlägg
#3

Ja, jag vet att det ínte är fokuserat, men hur gör man det? :) SetFocus funkar inte, och det är den enda jag har hört om :r Har inte hållit på så länge :D

Medlem sedan juni 20022 599 inlägg
#4

Som jag sa ovan så kan en osynlig osynlig/fönsterlös instans av något aldrig ha fokus. Isåf fall är det bättre du använder en visuell Explorer-kontroll (Project->Components->Microsoft Internet Controls, dra sen ut"jordgloben" på formuläret.)

Din kod bör sen bli:

Private Sub Form_Load()
    WebBrowser1.Navigate "***"
End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Dim strPass As String, strUser As String
    strPass = "pass"
    strUser = "user"
    SendKeys "{TAB}"
    ' osv
End Sub
Medlem sedan maj 20003 652 inlägg
#5

Ah, tackar! :)

269 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)