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 herausfinden

    ungetestet 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


Anmelden zum Antworten