ICQ-Anwesenheitsstatus prüfen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

ICQ-Anwesenheitsstatus prüfen

Beitrag 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
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: ICQ

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag 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
Benutzeravatar
unix
Beiträge: 361
Registriert: 15.02.2005 19:25
Wohnort: Zwischen Coburg und Bamberg :-)
Kontaktdaten:

Beitrag von unix »

Ich bin selber anfänger aber ich muss sagen da hast du viel vor
ich bin der Meinung mach erstal etwas einfacheres
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Vielleicht kann dir das hier helfen:
http://www.purearea.net/pb/CodeArchiv/I ... ICQ-Bot.pb
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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 ;).
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Nicht? Dann sorry... :oops:
Benutzeravatar
sharkpeter
Beiträge: 474
Registriert: 29.08.2004 16:18
Wohnort: Dresden
Kontaktdaten:

Beitrag 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
PB3.94 bis 6.xx / (Win98/98SE/ME/XPProSP3/WINVista-X32)/WIN7HP-X64/WIN8PRO-X32/WIN10-64

Nichts wissen macht nichts, sich dumm stellen aber schon.
Benutzeravatar
sharkpeter
Beiträge: 474
Registriert: 29.08.2004 16:18
Wohnort: Dresden
Kontaktdaten:

Beitrag 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
PB3.94 bis 6.xx / (Win98/98SE/ME/XPProSP3/WINVista-X32)/WIN7HP-X64/WIN8PRO-X32/WIN10-64

Nichts wissen macht nichts, sich dumm stellen aber schon.
Antworten