Web inlog

Status
Niet open voor verdere reacties.

tierens

Gebruiker
Lid geworden
2 feb 2012
Berichten
37
Dag specialisten, ik ben beginnend programmeur en leerkracht.
Ik zou graag een auto inlog maken voor onze smartschool. bedoeling om automatisch punten in te voeren...

Onderstaande code werk goed, maar heeft 2 probleempjes:
-soms is de PC te traag en komt de inlog te vroeg.
-bij gebruik van verschillende PC's moet ik steeds AppActivate("Smartschool - Internet Explorer aangeboden door Dell") aanpassen...

Code:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        System.Diagnostics.Process.Start("IExplore.exe", "...mijn site...")


        'is er een betere manier om te wachten tot IE opgestart is??
        System.Threading.Thread.Sleep(4000)


        'Het activatieadres is veschillend bij gebruik met verschillede PC's.
        'Hoe kan ik programatisch het ondrstaande adras invoeren?
        AppActivate("Smartschool - Internet Explorer aangeboden door Dell")


        Dim wshShell
        wshShell = CreateObject("WScript.Shell")
        System.Threading.Thread.Sleep(1000)
        wshShell.SendKeys("mijn inlog")
        System.Threading.Thread.Sleep(1000)
        wshShell.SendKeys("{tab}")
        wshShell.SendKeys("mijn code")
        System.Threading.Thread.Sleep(1000)
        wshShell.SendKeys("{enter}")
    End Sub
End Class

Alvast Dank :thumb:
 
Laatst bewerkt:
Je kan dan misschien beter een webbrowser control op je form plaatsen... Dan kan je die gebruiken om naar de webpagina te gaan en ook gebruiken om de username en wachtwoord in te voeren.

Verder kan je (in vb.net) gewoon dit gebruiken om toetsaanslagen te simuleren:
[CPP] SendKeys.Send("Hallo!")
SendKeys.Send(Chr(10)) ''// chr(10) = een enter
SendKeys.Send(vbNewLine) ''// ook een enter
SendKeys.Send(Chr(9)) ''// chr(9) = tab[/CPP]

Overigens kan je in een webbrowser control de velden automatisch laten invullen, maar dat kan je op internet vinden, daar weet ik ook niet zo veel van...

MartinJM
 
Badankt MartinJM

Ik heb al met "senkeys" gewerkt maar dit ging niet met IE. (ik kreeg meerdere tekens... en heb toen deze methode govonden)
Ook smartschool werkt niet in VB.net (nogal eigenzinnig kwestie welke browser er gebruikt wordt).

Iemand nog ideën?? :rolleyes:
 
Alleen de benodigde gegevens opvragen mbv een webclient? http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

Raar dat sendkeys niet werkt in IE... Ik dacht dat sendkeys helemaal programma ongebonden was...

Als de smartschool niet werkt met de vb browser en wel met IE, dan is dat toch wel heel specifiek... De vb browser maakt namelijk gebruik van IE, alleen is het dan niet de nieuwste versie...

Ik ga nog even kijken of ik nog wat kan verzinnen.

MartinJM


PS: Werkt het wel als je bv firefox of chrome gebruikt? Dat zou dan een oplossing kunnen zijn.
 
Smartschool detecteert idd dat de IE niet de laatste versie is en wil daarmee niet werken.
Is er mss een methode om de laatste versie beschikbaar te maken?

Gebruik van Firefox gaat niet omdat ik daar in de puntenboek de rechtsklik functie met toetsenbord niet kan gebruiken (ook weer iets raar).

Veel dank! :thumb:
 
Neen, smartschool inlog werkt met java script, en daar ken ik niets van!


Ik zoek een methode als:

System.Diagnostics.Process.Start("IExplore.exe", "https://spia.smartschool.be")

(code voor "wachten tot smartschool opgestart is")

x = Process.GetProcessesByName("IExplore.exe", "https://spia.smartschool.be")
AppActivate(x)

wshShell.SendKeys("mijn inlog")
enz.........


maar aan de naam "Smartschool - Internet Explorer aangeboden door Dell" in x kom ik niet. :confused:


In ieder geval veel dank!
 
Laatst bewerkt:
Ik denk dat hier HttpRequests om de hoek komen kijken, maar dan wordt het wel gelijk een stuk ingewikkelder....
Het was om cijfers invoeren te automatiseren toch? Misschien heeft 'Smartschool' wel een API meegeleverd?
 
Ik wil toch bij de oude methode blijven, smartschool is zeer goed beveiligd, en terecht!
Met de oude methode blijf ik van alles af en zend gewoon toetsaanslagen...

niemand die iets kent van?
x = Process.GetProcessesByName("IExplore.exe", "https://spia.smartschool.be")
AppActivate(x)


Toch dank voor de steun!
 
Laatst bewerkt:
Ik wil toch bij de oude methode blijven, smartschool is zeer goed beveiligd, en terecht!
HttpRequests zijn niet illegaal ofzo? Het is gewoon een methode om codematig gegevens naar websites te sturen ...

niemand die iets kent van?
x = Process.GetProcessesByName("IExplore.exe", "https://spia.smartschool.be")
AppActivate(x)
Ja? Wat wil je weten? :P
 
Ja? Wat wil je weten? :P

Als ik
Code:
x = Process.GetProcessesByName("IExplore.exe", "https://spia.smartschool.be")
gebruik, dan zit er in x enkel een nummer en ik zou aan bv."Systeem voor Kwalitatieve ondersteuning bij remediëren en evalueren - Windows Internet Explorer" moeten komen. :confused:
 
Ik weet niet of Internet Explorer wel een caption heeft.
Maar anders zoiets:
[cpp]Dim x As Process() = Process.GetProcessesByName("iexplore")
If x.Length > 0 Then MsgBox(x(0).MainWindowTitle)[/cpp]

Wat probeer je nu precies te doen (stap voor stap?).
En wat lukt er al?
 
Werkt prima!! :thumb:

Echter nog een volgend probleem: Wachten tot iexplore is opgestart
Code:
System.Diagnostics.Process.Start("iexplore.exe", "https:...mijn site...")            
Dim x As Process() = Process.GetProcessesByName("iexplore")
            Do Until x.Length > 0
                x = Process.GetProcessesByName("iexplore")
            Loop
MessageBox.Show(x(0).MainWindowTitle)
Maar het werkt niet op deze manier.
Is er een andere mogelijkheid??

Veel dank!


(PS.sorry voor de late reactie, had weinig tijd...)
 
Laatst bewerkt:
Je kunt in principe zoiets doen:

[cpp]process.Start()
process.WaitForInputIdle()[/cpp]
 
Bedankt voor de hulp! :thumb:

Dit werkt goed:
Code:
 Dim myProcess As Process = New Process()
            myProcess.StartInfo.FileName = "IExplore"
            myProcess.StartInfo.Arguments = "https://mijn site"
            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
            myProcess.EnableRaisingEvents = True
            myProcess.Start()
            'wacht...
            myProcess.WaitForInputIdle()
            System.Threading.Thread.Sleep(500)
            'inloggen...
            Dim wshShell
            Try
                wshShell = CreateObject("WScript.Shell")
                System.Threading.Thread.Sleep(500)
                wshShell.SendKeys(login)
                System.Threading.Thread.Sleep(500)
                wshShell.SendKeys("{tab}")
                System.Threading.Thread.Sleep(500)
                wshShell.SendKeys(code)
                System.Threading.Thread.Sleep(500)
                wshShell.SendKeys("{enter}")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan