ICQ-Kontakt online?

  • Ich schrieb kurz mal ne Funktion, mit der man feststellt, ob eine bestimmte Person online ist!

    [autoit]

    #include <INet.au3>

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite(ICQState(592280945))

    [/autoit][autoit][/autoit][autoit]

    func ICQState($sID)
    $sSource = _INetGetSource("http://www.icq.com/people/"&$sID&"/")
    If @error then return SetError(@error)
    If StringInStr ( $sSource, "online.gif" ) then return 1
    endfunc

    [/autoit]


    Vielleicht kann sie jemand gebrauchen ;)

  • Ich schrieb kurz mal ne Funktion, mit der man feststellt, ob eine bestimmte Person online ist!

    [autoit]

    #include <INet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite(ICQState(592280945))

    [/autoit] [autoit][/autoit] [autoit]

    func ICQState($sID)
    $sSource = _INetGetSource("http://www.icq.com/people/"&$sID&"/")
    If @error then return SetError(@error)
    If StringInStr ( $sSource, "online.gif" ) then return 1
    endfunc

    [/autoit]


    Vielleicht kann sie jemand gebrauchen ;)


    die seite würde ich nicht nehmen unsichtbar usw wird nicht mit als online gewertet...
    gibt so ne gute kanicq.ru/invisible/de/ glaube die wars

  • :P kranke ABER Nett^^

    natürlich wäre es interesannt wenn es über den icq server geben würde aber mann muss sagen für so ein problem so ne simple lösung zu finden erfodert socn fantasie :P

  • Ok, ich schreibe gerade die Funktion ein wenig um, sodass man auch den Status Unsichtbar erkennen kann, dies funktioniert nicht ohne IE, nun möchte ich auf folgendes Button klicken:
    <td><input type="submit" value="&Uuml;berpr&uuml;fen"></td>
    Jedoch, weiß ich nicht, wie ich das anstellen sollte?

  • also eine auf ie basierende udf ist um ehrlich zu sein ziemlich grottig xD erstens hat nicht jeder ie, zweitens dauert es einfach viel zu lange und ist auch noch arbeitspeicherlastig :S
    würde dir webtcp oder winhttp vorschlagen ist nur ein einziger aufruf :)
    aber du kannst auf den button klicken per:

    [autoit]

    $oIe.document.forms.item(0).submit

    [/autoit]
  • *Hust* Es hat nicht jeder IE
    haste probiert den IE mal wirklich 100% aus deinem system zu killen?
    ich kenne keinen der es geschafft hat ohne das es probleme nachsich gezogen hätte ganz weg bekommt man ihn einfach nich^^

  • 1. man kann den ie zu 100% killen ;)
    2. ist es einfach viel zu langsam... wenn man auf eine sollche mit werbung vollgekleisterte seite geht brauch der standard ie erstmal 2 minuten zum laden... solange kann das tool einfach nix machen :P

  • also ich habn bisschen rumprobiert.
    aber vorerst nur ne lösung per IE gefunden ;)

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.6.1
    Author: myName

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Template AutoIt script.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Script Start - Add your code below here

    [/autoit] [autoit][/autoit] [autoit]

    #include <INet.au3>
    #include <IE.au3>
    #include <Array.au3>
    #include <String.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $main = GUICreate("Visible ICQ",250,200)
    Guictrlcreatelabel("ICQ Nummer:",10,15,100,25)
    $icqnr = GuictrlcreateInput("",10,50,100,20)
    $start = Guictrlcreatebutton("starten",10,80,100,25)
    $input = Guictrlcreateinput("",10,120,230,70)
    Guictrlsetstate(-1,$GUI_DISABLE)
    GUISetState(@SW_SHOW) ;

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    switch $msg
    case $start
    start()
    case $GUI_EVENT_CLOSE
    exit
    Endswitch
    WEnd
    GUIDelete()

    [/autoit] [autoit][/autoit] [autoit]

    Func start()
    Guictrlsetdata($input,"Bitte warten...")
    $icq = Guictrlread($icqnr)
    if $icq = "" Then
    msgbox(0,"Achtung","Keine ICQ Nummer angegeben")
    else
    $oIE = _IEcreate("http://kanicq.ru/invisible/de/"&$icq,0,0)
    $source = _IEBodyReadHTML($oIE)
    Filewrite(@tempdir & "\log.txt",$source)
    $x = fileread(@tempdir & "\log.txt")
    $string = _StringBetween($x,"title="," alt=")
    Guictrlsetdata($input,$icq & " ist " & $string[9] & " ! ")
    _IEQuit($oIE)
    Fileclose($x)
    Filedelete(@tempdir & "\log.txt")
    Endif
    Endfunc

    [/autoit]
  • ich habe mal ne frage
    warum speicherst du den htmlsource zuerst in die log.txt und dann liest du das sofort wieder ab ???

    Zitat
    Spoiler anzeigen
    [autoit]

    $source = _IEBodyReadHTML($oIE)
    Filewrite(@tempdir & "\log.txt",$source)
    $x = fileread(@tempdir & "\log.txt")
    $string = _StringBetween($x,"title="," alt=")

    [/autoit]

    währe es nicht einfacher die $source sofort in die _StringBetween einzufügen ?
    das würde dann so aussehen

    [autoit]

    $source = _IEBodyReadHTML($oIE)
    $string = _StringBetween($source,"title="," alt=")

    [/autoit]
  • hab ich versucht ;) da kommt bei mir irgendwie nur rotz raus.
    kann aber auch am proxy liegen, dsw speicher ich das zwischen.

    habs nun so gelößt.

    [autoit]

    Func start()
    Filedelete(@tempdir & "\log.txt")
    Guictrlsetdata($input,"Bitte warten...")
    $icq = Guictrlread($icqnr)
    if $icq = "" Then
    msgbox(0,"Achtung","Keine ICQ Nummer angegeben")
    else
    $oIE = _IEcreate("http://kanicq.ru/invisible/de/"&$icq,0,0)
    if @error Then
    msgbox(0,"Achtung","Service momentan nicht verfügbar")
    Endif
    $source = _IEBodyReadHTML($oIE)
    Filewrite(@tempdir & "\log.txt",$source)
    ;$x = fileread(@tempdir & "\log.txt")

    [/autoit][autoit][/autoit][autoit]

    $string = Filereadline(@tempdir & "\log.txt",83)
    $auf = _StringBetween($string,"title=","alt")

    [/autoit][autoit][/autoit][autoit]

    Guictrlsetdata($input,$icq & " ist " & $auf[0] & " ! ")

    [/autoit][autoit][/autoit][autoit]

    _IEQuit($oIE)
    Endif
    Endfunc

    [/autoit]

    das klappt auch ;)

    solange der source sich nich verändert :S

  • wenn man das zuoft versucht muss man ne zeitlang warten bis zum nächsten versucht
    soltest du auch noch reinbringen
    Edit:
    jedenfals stand grade "Du hast das Limit erreicht. Versuche in 2 Minute(n)."
    jetzt geht alles perfekt

    Einmal editiert, zuletzt von Jeka (14. Juli 2010 um 14:57)

  • Nein Abfrage funktionert nicht ;)

    Zitat


    U:\AutoIt\install\Eigen\aaaaa.au3 (66) : ==> Subscript used with non-Array variable.:
    Guictrlsetdata($input,$icq & " ist " & $auf[0] & " ! ")
    Guictrlsetdata($input,$icq & " ist " & $auf^ ERROR

  • habs jetzt etwas angepasst

    Spoiler anzeigen
    [autoit]


    Func start()
    Filedelete(@tempdir & "\log.txt")
    Guictrlsetdata($input,"Bitte warten...")
    $icq = Guictrlread($icqnr)
    if $icq = "" Then
    msgbox(0,"Achtung","Keine ICQ Nummer angegeben")
    else
    $oIE = _IEcreate("http://kanicq.ru/invisible/de/"&$icq,0,0)
    if @error Then
    msgbox(0,"Achtung","Service momentan nicht verfügbar")
    Endif
    $source = _IEBodyReadHTML($oIE)
    Filewrite(@tempdir & "\log.txt",$source)
    ;$x = fileread(@tempdir & "\log.txt")

    [/autoit] [autoit][/autoit] [autoit]

    $string = Filereadline(@tempdir & "\log.txt",83)
    $auf = _StringBetween($string,"title=","alt")
    $Limit_a = "Du hast das Limit erreicht. Versuche in "
    $Limit_e = " Minute(n)."
    $Limit = _StringBetween($string, $Limit_a, $Limit_e)

    [/autoit] [autoit][/autoit] [autoit]

    If Not IsDeclared("Limit") Then
    Guictrlsetdata($input,$Limit_a & $Limit & $Limit_e)
    Else
    Guictrlsetdata($input,$icq & " ist " & $auf[0] & " ! ")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _IEQuit($oIE)
    Endif
    Endfunc

    [/autoit]

    so sollte das jetzt funktionieren

    Edit: oder auch nicht :D