Text und Count einer Listbox in einem anderen Programm.. LBox geschützt?
-
aber jetzt (hoffe ich mal)
würde behaupten dein (WPARAM) hast du falsch verstanden.
es ist nicht die grösse des Buffers, sondern der Index (ListBox1->Items->Strings[x])
die grösse für den Buffer kannst du mit LB_GETTEXTLEN herausfindenungetestet sieht das ungefähr so aus..
int iIndexVonLB = 0; int iBuffer = SendMessage(LISTBOX,LB_GETTEXTLEN,(WPARAM)iIndexVonLB,NULL); char *szBuffer = new char[iBuffer]; SendMessage(LISTBOX,LB_GETTEXT,(WPARAM)iIndexVonLB,(LPARAM)&szBuffer); Memo1->Lines->Add(szBuffer); delete[] szBuffer;
[Edit]MSDN-Link[/Edit]
-
Hey, danke, dass du so "früh" antworten konntest
Werde mein Script schnell mal umschreiben
DjDaPle
-
Ich kann mein PÖrogramm starten, aber dann zeig er mir, wenn ich auf die Listbo zugreifen will:
Information: Project C:\... faulted with message: 'access violation at 0x77f50b6f: write of adress 0x00030fc8'. Process Stopped. Use Step or Run to continue.
Ich weiss leider nciht, woran das liege könnte...
-
Aso so zeigt er mir zumindest die Länge an:
int iIndexVonLB = 0; int iBuffer = SendMessage(LISTBOX,LB_GETTEXTLEN,(WPARAM)iIndexVonLB,NULL); //char *szBuffer = new char[iBuffer]; //SendMessage(LISTBOX,LB_GETTEXT,(WPARAM)iIndexVonLB,(LPARAM)&szBuffer); Memo1->Lines->Add(IntToStr(iBuffer)); //delete[] szBuffer;
Was mri aber nicht viel nützt...
-
Hmm so geht das ganze auch (nur die Länge):
HWND hICQ = FindWindow(NULL,"Vietcong v1.60 : .:TOU:. Public Server : 5425"); HWND LISTBOX = GetDlgItem(hICQ, 1244); int iIndexVonLB = 0; int iBuffer = SendMessage(LISTBOX,LB_GETTEXTLEN,(WPARAM)iIndexVonLB,NULL); char *szBuffer = new char[iBuffer]; SendMessage(LISTBOX,LB_GETTEXT,0,0); Memo1->Lines->Add(IntToStr(iBuffer)); delete[] szBuffer;
-
Das heißt, HIER:
SendMessage(LISTBOX,LB_GETTEXT,(WPARAM)iIndexVonLB,(LPARAM)&szBuffer);
muss ihrgendetwas falsch sein hmm
-
SendMessage(LISTBOX,LB_GETTEXT,iIndexVonLB,szBuffer); // WAS IST HIER FALSCH??? O.o
[C++ Error] test.cpp(26): E2034 Cannot convert 'char *' to 'long'
Hmm weiss aber nicht ob es daran liegt, dass er char nicht nach long holen kann kA...
-
JUHUUUUUU
Habs selbst geschaft: Einfach das & rausnehmen:
SendMessage(LISTBOX,LB_GETTEXT,(WPARAM)iIndexVonLB,(LPARAM)HIER WAR DAS & ZEICHENszBuffer);
Mein kompletter code sieht dass so aus:
HWND SERVERWINDOW = FindWindow(NULL,"Vietcong v1.60 : .:TOU:. Public Server : 5425"); HWND LISTBOX = GetDlgItem(SERVERWINDOW, 1244); int iIndexVonLB = 0; int iBuffer = SendMessage(LISTBOX,LB_GETTEXT,(WPARAM)iIndexVonLB,NULL); char *szBuffer = new char[iBuffer]; SendMessage(LISTBOX,LB_GETTEXT,(WPARAM)iIndexVonLB,(LPARAM)szBuffer); Memo1->Lines->Add(szBuffer); delete[] szBuffer;
Aber:
-Er liest nur eine (die Erste) Zeile
-Wenn ich das Programm schließe kommt wieder son komischer Fehler
-
Okay, habs nun hinbekommen jetzt geht alles weiss aber nciht was ich gemacht habe hab den code nur in ein anderes programm geholt hmm naja Danke fr die Antworten!
-
achja, etwas habe ich vergessen. du musst
char *szBuffer = new char[iBuffer+1];
DjDaPle schrieb:
-Er liest nur eine (die Erste) Zeile
überlege dir mal, was iIndexVonLB ist und bewirkt.
DjDaPle schrieb:
-Wenn ich das Programm schließe kommt wieder son komischer Fehler
meine Kristalkugel funktioniert bei regen leider nicht. was für ne fehlermeldung kommt?
-
BigNeal schrieb:
achja, etwas habe ich vergessen. du musst
char *szBuffer = new char[iBuffer+1];
Von einem sehr empfohlenen memset(szBuffer, '\0', iBuffer+1); ganz zu schweigen (o;
-
Okay, nun geht alles die Fehlermeldung ging nach ner zeit (neustart) von alleine Weg!(Meine Kritallkugel funktioniert ^^)
Danke an alle