Problem mit ICQ
-
HWND p = ::FindWindow(NULL, "bill gates- Nachrichtensitzung"); HWND a = ::GetDlgItem(p, 7000); char String[] = "to be rich means to be a b****"; ::SendMessage(a, WM_SETTEXT, 0, (LPARAM)String); //fokus setzen ::SetForegroundWindow(p); ::SetFocus(a); ::SendMessage(a,WM_KEYDOWN,VK_RIGHT,0); HWND b = ::GetDlgItem(p, 6604); ::SendMessage(b, BM_CLICK, 0, 0L);Naja ok ich war grad in MFC unterwegs

-
Wäre noch interessant zu wissen, wie man evtl. an die einzelnen
Kontakteinträge in dem SysTreeView32 von ICQ kommen könnte.Wie würde man das Treeview denn auslesen können? Jemand ne Idee?
-
Auch dafür gibt es Nachrichten, guckt euch mal in der MSDN um (z.B.: LVM_FINDITEM).
-
Hi CodeFinder. Ich probiere momentan noch rum, aber vlt. kannst du
mir ja helfen?HWND xx = ::FindWindow("#32770 (Dialog)",0); HWND ti= ::GetDlgItem(xx,3134); LPLVITEM pitem=0; ::SendMessage(ti, LVM_GETITEMTEXT, (WPARAM) 1,(LPARAM)pitem);Wie kann ich denn nun diesen pitem->pszText korrekt in einen (C)String übergeben?
Ist grad alles MFC-lastig sry.

-
Hi,
IMHO lässt man das '(Dialog)' in:
HWND xx = ::FindWindow("#32770 (Dialog)",0);weg. Das gehört nicht zur ID.
So könnte man das beispielsweise machen (Habs aber nicht getestet):
HWND hWndICQ = FindWindow(TEXT("#32770"), NULL); HWND hlvcContactList = GetDlgItem(hWndICQ, 3134); if(hlvcContactList != NULL) { TCHAR szContactName[256]; LVITEM lvItem = { 0 }; lvItem.iItem = 1; lvItem.iSubItem = 0; lvItem.mask = LVIF_TEXT; lvItem.pszText = szContactName; lvItem.cchTextMax = sizeof(szContactName) / sizeof(szContactName[0]); if(SendMessage(hlvcContactList, LVM_GETITEM, 0, reinterpret_cast<LPARAM>(&lvItem))) MessageBox(NULL, szContactName, TEXT("Der 1. Eintrag der Kontaktliste in ICQ ist:"), MB_OK | MB_ICONINFORMATION); }
-
Hallo, das klappt so leider nicht.
Die Bedingungif(hlvcContactList != NULL)ist schon nicht
erfüllt. Bin mir aber sicher, dass die Klassennamen etc stimmen
(Spy++).Evtl. kann es ja nochmal jemand mit ICQ + Compiler gegenprüfen!
-
hallo,
ich beschäftige mich in letzter zeit auch mit Winapi funktionen.
ich wollte das beispiel von oben auf meiner icq ver(2003b pro) ausprobieren.
dazu hab ich die control id's meines icq fensters neubestimmt.
Richedit 101, OK-button 1008.hier der abgeänderte code:
#include <windows.h> int main() { HWND p = FindWindow(NULL, "maurice (Offline) - Message Session"); HWND a = GetDlgItem(p, 101); char test[] = "test123"; SendMessage(a, WM_SETTEXT, 0, (LPARAM)test); //fokus setzen SetForegroundWindow(p); SetFocus(a); SendMessage(a,WM_KEYDOWN,VK_RIGHT,0); HWND b = GetDlgItem(p, 1008); SendMessage(b, BM_CLICK, 0, 0L); }mein problem ist nun, dass "SendMessage(b, BM_CLICK, 0, 0L);" zwar klappt, aber er in das Richedit Fenster den inhalt der test variable nicht reinschreibt.
Könnt ihr mir vielleicht helfen woran das liegen könnte? Also Control ID 101 stimmt aufjedenfall
-
Prüf den Return-Wert von WM_SETTEXT (in Verbindung mit SendMessage
).
-
ja der return wert ist 0, also war Sendmessage mit WM_SETTEXT nicht erfolgreich. woran könnte das liegen?:<
hm mir fällt aber auf, dass der return wert von SendMessage(b, BM_CLICK, 0, 0L); auch 0 ist, obwohl dies geht! jetzt versteh ich nichts mehr:<
-
Iseeku schrieb:
Hallo, das klappt so leider nicht.
Die Bedingungif(hlvcContactList != NULL)ist schon nicht
erfüllt. Bin mir aber sicher, dass die Klassennamen etc stimmen
(Spy++).Evtl. kann es ja nochmal jemand mit ICQ + Compiler gegenprüfen!
Ja, wie verwendet man das denn richtig ums in nen string zu bekommen?