Seite 1 von 2

ICQ-Anwesenheitsstatus prüfen

Verfasst: 30.07.2005 23:55
von R4z0r1989
KAnn man reintheroretisch mit Purebasic eine Anfrage bei ICQ machen ob eine bestimmte Person anwesend ist.
Wenn ja wie.

Danke für jede Antwort.

Edit by Kiffi: Betreff angepasst

Re: ICQ

Verfasst: 31.07.2005 10:17
von DarkDragon
Badboy99 hat geschrieben:KAnn man reintheroretisch mit Purebasic eine Anfrage bei ICQ machen ob eine bestimmte Person anwesend ist.
Wenn ja wie.

Danke für jede Antwort.
Ja, :freak: mit der UDP Lib und den TCP Netzwerkfunktionen die schon in PB vorhanden sind, denn soweit ich weiß(aus den RFCs) brauchst du für das Messenger Protokol beides.

Verfasst: 31.07.2005 11:49
von R4z0r1989
Könnte mir jemand ein beispiel machen.
Denn das ist gar nicht so leicht für einen Anfänger.
Wäre für jede Hilfe dankbar.

THX

Verfasst: 31.07.2005 12:48
von unix
Ich bin selber anfänger aber ich muss sagen da hast du viel vor
ich bin der Meinung mach erstal etwas einfacheres

Verfasst: 31.07.2005 13:14
von DarkDragon
Badboy99 hat geschrieben:Könnte mir jemand ein beispiel machen.
Denn das ist gar nicht so leicht für einen Anfänger.
Wäre für jede Hilfe dankbar.

THX
Ein Beispiel hat hier wohl niemand, such in Google nach "ICQ Client OpenSource" und eventuell nach "Miranda Source", denn ich glaube Miranda ist OpenSource. Dann kannst du dir die sources mal ansehen.

Verfasst: 31.07.2005 16:59
von hardfalcon
Vielleicht kann dir das hier helfen:
http://www.purearea.net/pb/CodeArchiv/I ... ICQ-Bot.pb

Verfasst: 31.07.2005 17:36
von Leo
hardfalcon hat geschrieben:Vielleicht kann dir das hier helfen:
http://www.purearea.net/pb/CodeArchiv/I ... ICQ-Bot.pb
Das hat überhaupt nichts mit dem ICQ Protokoll zu tun ;).

Verfasst: 31.07.2005 17:48
von hardfalcon
Nicht? Dann sorry... :oops:

Verfasst: 31.07.2005 22:24
von sharkpeter
Hi suchende,

ich glaube ich habe hier was für Euch. :D

ABER ACHTUNG, WEBGADGET BASIERT AUF IE-TECHNOLOGIE! Also wer IE nicht mag,
die dortigen Sicherheitslücken werden transferiert. Hat nichts mit PB zu tun.

Link zur SetupLib von A.Miethe:
http://www.purearea.net/pb/download/use ... lib392.zip
Sie ist aktualisiert für PB3.92 habe aber bisher keine Probleme mit 3.93 oder 3.94 bemerken können.

Hier nur mal ein Beispiel für einen HTML-Code.
Die ICQ-Nummern sind durch xxxxxxxxx ersetzt und die Namen durch >EINER< und >EIN ANDERER<
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
    <TITLE></TITLE>
    <META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.1 (Win32)">
    <META NAME="CREATED" CONTENT="20050104;8391242">
    <META NAME="CHANGEDBY" CONTENT="Jens Haipeter">
    <META NAME="CHANGED" CONTENT="20050104;8401871">
    </HEAD>
    <BODY LANG="de-DE" DIR="LTR">
    <P><IMG SRC="http://wwp.icq.com/scripts/online.dll?i ... xxx&img=12" NAME="bild" ALIGN=BOTTOM WIDTH=75 HEIGHT=18 BORDER=0>
    <SCRIPT LANGUAGE="JavaScript">
    var b = new Array();
    lade = new Image();
    lade.src = "http://wwp.icq.com/scripts/online.dll?i ... xxx&img=12";

    function laden()
    {
    document.images.bild.src = lade.src;
    window.setTimeout("laden()",40000);
    }
    window.setTimeout("laden()",40000);
    </SCRIPT>
    </P>
    <P>EINER</P>
    </SCRIPT>
    <IMG SRC="http://wwp.icq.com/scripts/online.dll?i ... xxx&img=10" NAME="bild" ALIGN=BOTTOM WIDTH=75 HEIGHT=18 BORDER=0>
    <SCRIPT LANGUAGE="JavaScript">
    var b = new Array();
    lade = new Image();
    lade.src = "http://wwp.icq.com/scripts/online.dll?i ... xxx&img=10";

    function laden()
    {
    document.images.bild.src = lade.src;
    window.setTimeout("laden()",40000);
    }
    window.setTimeout("laden()",40000);

    </SCRIPT>
    </P>
    <P>EIN ANDERER</P>
    </BODY>
    </HTML>
Und hier der PB_Code dazu, gibt sicher auch noch perfektere Lösungen, aber das funktioniert.

Wenn man mehr Leute anzeigen will, den HTML-Text anpassen und die Gadget und Window-Größe.

Viel Spaß beim Probieren :D

Code: Alles auswählen

;Online_request 
;Create: 05.01.2005 
;Actual: 05.01.2005
;by Jens Haipeter 

;Jens, wenn du das mal wieder compilierst, denke daran: 
;Die ATL.dll  muß aus dem Verzeichnis PureBasic\Compilers\) 
;in das gleiche Verzeichnis wie das Executable. 
  
;bei Offline Aufruf auch die *.htm Datei oder man gibt den Pfad an 

;benötigt die Setup-Lib von A.Miethe oder GetTempPath() entfernen) 

;Name des HTML-Files: 
;  wenn auf dem PC mit direkter Angabe: 
;  name$="file://e:\test.htm": #WinWidth=130: #WinHeight=220: #GadWidth=128: #GadHeight=178 


;  wenn auf dem PC im Verzeichnis der *.exe 
name$="online.htm": #WinWidth=190: #WinHeight=90: #GadWidth=188: #GadHeight=48 

;  wenn im Internet: 
;  name$="http://www.winbahn.de": #WinWidth=1280: #WinHeight=980: #GadWidth=1278: #GadHeight=900 
;  Werbung in eigener Sache ;-), außerdem liebe ich es gern groß 

Global _TempDir.s 
Global _ExePath.s 
Global _HTMFile.s 
_TempDir = GetTempPath() 
_ExePath = Space(1000) 
GetModuleFileName_(0, @_ExePath, 1000) 
_ExePath = GetPathPart(_ExePath) 

;wenn Internet oder direkte Pfadangabe, dann nur name$ 
_HTMFile = "file://"+_ExePath+name$ 
;_HTMFile = name$ [/list]
;MessageRequester(_HTMFile,"",0) ; nur falls was schief geht 

Enumeration 
  #Window_0 
EndEnumeration  

Enumeration 
  #Web_0
  #Button_0 
EndEnumeration  

a=Date(); Zeit nehmen

If OpenWindow(#Window_0,0,20,#WinWidth,#WinHeight,#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SystemMenu,"Wer ist Online?") 
  If CreateGadgetList(WindowID(#Window_0)) 
    WebGadget   (#Web_0   ,  1, 40,#GadWidth,#GadHeight,_HTMFile) 
    ButtonGadget(#Button_0,  5,  5,180, 24             ,"Aktualisieren")
    Repeat
      EventID = WindowEvent()
      If EventID=0
        Delay(10)
      EndIf
      b=Date()
      If b>a+10
        DisableGadget(#Button_0,0)
      EndIf
      If b>a+30
        SetGadgetState(#Web_0,#PB_Web_Refresh)
        DisableGadget(#Button_0,1)
        a=b
      EndIf
      If EventID = #PB_EventGadget
        Select EventGadgetID()
          Case #Button_0
            SetGadgetState(#Web_0,#PB_Web_Refresh)
            DisableGadget(#Button_0,1)
            a=Date()
        EndSelect
      EndIf
      If EventID=#PB_Event_CloseWindow
        CloseWindow(#Window_0)
        End
      EndIf
    ForEver 
  EndIf 
EndIf 
CloseWindow(#Window_0) 
End
Und wenn alles richtig ist, sieht es dann so aus:

Bild

Gruß Jens

PS: Die Rentnerbrigade bastelt schon an was anderem in dieser Richtung :D

Verfasst: 01.08.2005 00:10
von sharkpeter
Und noch eine Möglichkeit, ohne HTML-Code.

Code: Alles auswählen

;Wer ist Online?
;ohne HTML-Code
;Beispiel und Testprogramm
;Create: 31.07.2005
;Falko Lünsmann/Jens Haipeter

; die ICQ-Nummern sind auch hier als xxxxxxxxx angegeben.

;Dient nur als Ansatz, wer mehr daraus machen will, nur zu

Global _wbg.l
Global _tx.l
Dim txt.s(1)
txt(0)="http://wwp.icq.com/scripts/online.dll?icq=xxxxxxxxx&img=8"
txt(1)="http://wwp.icq.com/scripts/online.dll?icq=xxxxxxxxx&img=14"
Enumeration
  #Window
EndEnumeration  
Procedure WBG_StartTimer()
     _tx=1-_tx
     SetGadgetText(_wbg,txt(_tx))
EndProcedure
If OpenWindow(#Window,0,0,300,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"WebGadget") And CreateGadgetList(WindowID(#Window))
    _wbg=WebGadget(#PB_Any,10,10,280,50,"http://wwp.icq.com/scripts/online.dll?icq=xxxxxxxxx&img=8")
EndIf  
SetTimer_(WindowID(#Window),2,2000,@WBG_StartTimer())
Repeat: Until WaitWindowEvent()=#PB_Event_CloseWindow
End
Gruß Jens