ListView_GetItemText misslingt



  • ein char array (300 zeichen), aber das programm stürzt ja auch nicht ab, sondern das programm mit dem listview scheinbar beim Auslesen... is doch komisch oder ????

    [ Dieser Beitrag wurde am 14.03.2003 um 21:21 Uhr von BiGFusel editiert. ]



  • Die MSDN-Library sagt:

    iSubItem
    Index of the subitem. To retrieve the item text, set iSubItem to zero.

    Also als 3. Parameter mal statt der 1 eine 0 probieren 🙄



  • Ne, geth auch nicht, habe ich auch schon probiert.
    Der King hat nach ner Suche hier im Forum mal erwähnt, dass es diese Funktion ein Speicherproblem verursacht. Trotzdem muss es doch irgendeine Möglichkeit geben, den Text eines Eintrags herauszufinden. King´s posting ist hier nachzulesen:
    ItemText aus einem SysListView32 auslesen



  • Wenn du genau liest, ging es damals aber darum den Text aus einem Listview eines anderen Programms auszulesen
    Das hast du doch nicht vor, oder? Und hast du auch Speicher für szItem reserviert hast? 🙄

    [ Dieser Beitrag wurde am 15.03.2003 um 22:01 Uhr von flenders editiert. ]



  • Doch genau das habe ich auch vor. Ich hab den Beitrag erst gelesen, nachdem ich bereits gepostet hatte. szItem[300] ist ein char-Array !



  • Wie wär's mal damit? (Auszug aus der Hilfe von M$)

    LPVOID lpMsgBuf;
    FormatMessage ( 
                FORMAT_MESSAGE_ALLOCATE_BUFFER | 
                FORMAT_MESSAGE_FROM_SYSTEM | 
                FORMAT_MESSAGE_IGNORE_INSERTS,
                NULL,
                GetLastError(),
                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                (LPTSTR) &lpMsgBuf,
                0,
                NULL);
    
    MessageBox (NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION);
    // Free the buffer.
    LocalFree (lpMsgBuf);
    


  • Gibt es denn überhaupt die Zeile 1 und die Spalte 1? Vorher geprüft, z.B. mit:

    if((i = SendMessage(GetDlgItem(hwindow,LISTVIEW1), LVM_GETSELECTIONMARK, 0, 0))>0)
    {
    ...
    

    ?

    Und so ist es auch korrekt:

    i ist der Index der selektierten Zeile, 1 ist die Spalte 1 (mit 0 beginned), wenn es die überhaupt gibt?

    [cpp]
    ListView_GetItemText(GetDlgItem(hwindow,LISTVIEW1),i,1,szItem,sizeof(szItem));[/cpp]



  • Hallo!

    Bin beim Suchen über diesen Beitrag gestossen - der leider einfach aufhört ohne funktionierende Problemlösung.
    Habe das gleiche Problem (möchte ListView aus anderer Anwendung auslesen, was aber nicht klappt)

    Weiß jemand, wie man das lösen kann?



  • Du musst dir mit VirtuallAlloc und WriteProcessMemmory einen Speicherlock im Adressraum der fremden Anwendung reservieren und ihn dann mit ReadProcessMemory auslesen und ihn in deinen Adre4ssraum kopieren. Kuck dir mal LuckieDips von meiner Seite an, bei den Downloads, das lese ich so den Listview des Desktops aus. Ist zwar Delphi, sollte sich aber auch nach C/C++ umsetzten lassen. Die API's sind die gleichen.



  • Hallo!

    Vielen Dank - jetzt funktionierts!

    Habe übrigens auch noch was für C++ gefunden:
    http://www.codeproject.com/threads/int64_memsteal.asp

    Danke!!

    tschüss
    Robert


Anmelden zum Antworten