Problem mit ICQ
-
Hi
wenn ich im ICQ nachrichtenfenster einen button autamtisch betätigen will, hab ichein prob. wen ich das fenster close und danach neustarte, hat sich die id des buttons verändert(selber user).
habt ihr ne idee?MfG
eldarion
-
Such doch das Button nach Text oder nach relativer Posititon
-
Eldarion schrieb:
wenn ich im ICQ nachrichtenfenster einen button autamtisch betätigen will, hab ichein prob. wen ich das fenster close und danach neustarte, hat sich die id des buttons verändert(selber user).
Ne das kann eigentlich nicht sein...hab das auch grad ausprobiert und bei mir sind die ID's immer gleich (Habs mit der Status-Combo-Box probiert).
-
bei der rich-edit box wo man das tippt was man schicken will, und dem Senden button verändert sich das immer. zumindens bei 5.1
-
Jo bei ICQ 5.1 ists bei mir immer konstant:
Sende-Button(dezimal): 6604
RichEdit-Box (für den zu sendenden Text)(dezimal): 7000Vllt. hilft dir das
...
-
bei mir kommt da nur mist raus. ich testes ma mti deinen nacher.
-
Wie hastes denn ermittelt ?
-
mit winspy++
-
Hm damit sollte es eigentlich gehen, habs mit der Spy++ gemacht, aber sollt ja eingelt. :p ... Hat es denn mit meinen Werten funktioniert ?
-
Dann wäre mal der Code vom Senden her interessant. Kann ja fast nur noch
daran liegen.
-
mit codes sachen funzt es
es gibt jezt aber noch ein prob. aber hier ersma mein code:#include <windows.h> int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND p = FindWindow(NULL, "jou - Nachrichtensitzung"); HWND a = GetDlgItem(p, 7000); char String[] = "Testit"; SendMessage(a, WM_SETTEXT, 0, (LPARAM)String); HWND b = GetDlgItem(p, 6604); SendMessage(b, BM_CLICK, 0, 0L); }
sonen typ hat mich genervt, jetzt bekommt er rache
das problem ist einfach, das der button erst freigeschaltetet wird, wenn ich den cursr bewege. der text ist zwar im edit feld, aber der button ist mit dem cursor gekoppelt. habt ihr nochma ne idee? gibts evtl nen befehl, um die flags zuändern? weil dann könnte man den disabled rausnehmen.
MfG
Eldarion
-
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:<