| Autor |
Beitrag |
phogl
      
Beiträge: 67
Windows 98,2000Pro,XPPro, SuSE Linux 9.0
D5Stad D7Pers D2005Pers
|
Verfasst: Fr 05.05.06 18:32
Hi!
Ich hab mir grad mal das ICQLib mit dem TICQClient angeguckt und finds an sich super, eine frage die sich mir nur grad stellt ist wie ich damit den Userstatus herausfinde (also ob ein User Online/Offline/Away etc. ist). Hab jetzt gegoogelt, bin aber erfolglos geblieben. Wär super wenn jemand eine Lösung hätte und die hier Posten würde, für Lösungsansätze bin ich auch schon dankbar weil ich das ICQ-Protokoll so gut wie garnicht kenne.
Danke schonmal ;)
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 07.09.06 12:00
ICQClientStatusChange => UIN und Status, den kannst du durch die konstanten in ICQWorks auslesen also z.B.
Delphi-Quelltext 1: 2:
| if Status<>statustoint(S_Offline)then ShowMessage(UIN+' online'); |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Sa 09.09.06 11:52
@Xion, leider beantwortest du die Frage nur passiv.
Ich habe das selbe Problem  , diese Funktion ist passiv, wenn man die Benutzerliste erhält kann man trotzdem nicht abfragen ob ein User online ist.
Ich auch schon einiges versucht, aber nix erreicht  , damit "Ich" abfragen kann.
Ich hab mal was von so nem link gehört und werds jetzt so versuchen:
Quelltext 1:
| http://web.icq.com/whitepages/online?icq=[ICQ-Nummer]&img=x |
Dieser Link ^^ gibt ein Bild aus, entweder mit roter oder grüner blume.
Ich werd dieses bild mit URLMon runterladen und dann vergleichen, mal schaun obs was wird, vll schreib ich ne kleine Unit und schick die hoch ...
MfG Fighter#1
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 09.09.06 12:10
Hi
passiv reicht doch, hätte ich gedacht?
bei meinem prog funzt das so: wenn ich mich einlogge, dann bekomme ich für die User, die online sind eine message über ICQClientStatusChange. Dann hab ich je ne Liste für online und offline. Die offline Liste lade ich mit RequestContactList, ICQClientServerListRecv. Die von ICQClientStatusChange verschiebe ich in die online-Liste. Jetzt hab ich 2Listen mit on/offline-Leuten. wenn jetzt jemand off geht, dann krieg ich ja wieder die message und verschieb dementsprechend. So weiß ich immer wer on bzw. off ist.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Mi 13.09.06 13:29
Hey XION
Als ich deine Antwort las, dachte ich du hättest recht, jetzt mach ich mein eigenes ICQ mit der Komponente, klappt ALLES bis auf die Funktion Status Change, muss ich da noch irgendwas einstellen?.
Hab jetzt einfach mal nur ein ShowMessage reingemacht das die UIN anzeigt.
Es geht nix auf, auch wenn ich weiß das einer aus der Kontaktliste online ist, da ich 2 Accs parallel laufen lass (mein ICQ und normales).
Wo liegt der Fehler?
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 13.09.06 15:04
hast du das ShowMessage in OnStatusChange? sonst weiß ich auch net...
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Mi 13.09.06 20:04
@Xion, bin zwar nicht der eingefleischeste Delphifreak aber soviel versteh ich
Hab jetzt schon einiges Probiert.
Beim Icq Clienten muss da DisableDirectConnections auf True Sein?
die anderen Sachen ham meinermeinung nach nix damit zu tun-
Bidde Helft mir
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 13.09.06 20:55
du musst vermutlich ICQClientServerListRecv bekommen, also... ICQClient.RequestContactList; Dabei musst du beachten, dass er sich schon eingeloggt hat...hmm, ansonsten fällt mir nix ein...hast du vielleicht den Code, den du beim einloggen hast? Damit könnt man vielleicht was machen...
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 13.09.06 21:07
aah, ich seh grad, bei mir funzt das auch so nicht...hmmm. das problem ist das statustoint nicht funzt...du hast sicherlich ne if-abfrage mit if Status=statustoint(S_Online) then das funzt so leider nicht...muss ich mal gucken wie ich das hinbekomm...der Status ist nämlich nich S_Online. Ich hab ne if Abfrage mit if S_Offline else ... => es is bei mir noch nie einer off gegangen, aber on krieg ich mit  muss ich mal gucken...
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 13.09.06 21:12
der off-status ist anscheinend 268500992...seltsam irgendwie
//Oder der für Away oder Invis usw... 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Do 14.09.06 11:20
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 14.09.06 14:08
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Fr 15.09.06 13:24
Supi danke für die Ausfürliche antwort.
Also dann werd ich mal gucken
Also OnError zeigt nix an (hab ich mir mal eine ShowMessage reingebaut)
UINToNick ist eine Prozedur die mir ne Menge Ärger mit umformen spart. (Hab ich mir gebastelt mit meinen beiden Listen (UIN und NICKListe)
OK das mit dem DestroyUINList tu ich mal raus...
so.
mal sehn was passiert.
ändert sich nix  , is jetzt nichtmehr drinne und auch nach mehrmaligem Statuswechsel ändert sich nichts.
Gehts bei dir denn jetzt?
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 15.09.06 14:03
bei mir hat es ja im prinzip schon von anfang an funktioniert, ich hab nur das mit dem Offline-gehen noch nicht gewusst  hab ich jetzt reingebaut, funzt prima. Aber warums bei dir nicht geht...hmmm...aber eine ContactList bekommst du schon, oder? Oder geht das auch nicht? dann musst mal passwort und ICQNr checken. Ansonsten...vielleicht bis du ja mit dem einen Account in der Invis-List des andren. Dann siehst du nicht, wann der on ist *g* ich weiß, extrem weit hergeholt, aber möglich ists trotzdem 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: So 17.09.06 10:25
So, nach der ein und anderen PN ... mit Xion habe ich durch seine Unterstützung das Problem lösen können.
Eigentlich stimmte schon alles, bis darauf, dass man dem ICQClienten jeden Kontakt adden muss, sieht dann etwa so aus:
OnServerListRcv 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var i: Word; UserInfo: TUINEntry; begin for i := 0 to SrvContactList.Count - 1 do begin UserInfo := PUINEntry(SrvContactList.Items[i])^; if Length(IntToStr(UserInfo.UIN))= 9 then begin IcqClient1.AddContact(UserInfo.UIN); DeineKontaktListe.Items.Add(UserInfo.Nick); end; end; |
Und dann funktioniert auch die onStatusChange funktion
Viel Spaß Fighter#1
Zudem kann ich mit an sicherheit grenzender wahrscheinlichkeit sagen, dass im OnStatusChange der Status 26850092 für Online und 26850093 für abwesend steht.
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Zuletzt bearbeitet von Fighter#1 am Mo 18.09.06 18:23, insgesamt 1-mal bearbeitet
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 17.09.06 12:46
Fighter#1 hat folgendes geschrieben: |
Zudem kann ich mit an sicherheit grenzender wahrscheinlichkeit sagen, dass im OnStatusChange der Status 26850092 für Online und 26850092 für abwesend steht. |
*g* wo ist der Unterschied zwischen 26850092 und 26850092???
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Mo 18.09.06 18:25
Fighter#1 hat folgendes geschrieben: | | Zudem kann ich mit an sicherheit grenzender wahrscheinlichkeit sagen, dass im OnStatusChange der Status 26850092 für Online und 26850093 für abwesend steht. |
Tja der unterschied zwischen 26850092 und 2680093 beträgt zwar nicht einmal ein Prozent, ist aber dennoch nachweisbar, ...
Nee is klar. Hab den Fehler behoben, dass unschuldige User nicht denken, hä? is der blöd?
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
|