vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)? 
Autor: planetULTRA
Datum: 23.08.03 22:05

Hallo Leute,

ich habe es endlich. Ich habe das Problem auch im activeVB Forum gepostet,
da hat mir jemanden den entscheidenden Tip gegeben, pszText als Long zu
deklarieren und ihm den Pointer auf den Shared Memory zuzuweisen. Dann
braucht man noch einen zweiten shared memory. Und das beste ist, dass ich noch
jemanden gefunden habe, der mir erklärt hat, wie man das unter Win9x/ME zum
Laufen bringt. Hier ist meine funktionierende Funktion (ohne Deklarationen bis auf
LV_ITEM und der neue Pointer LV_TEXT. Das Shared Memory zeugs siehe meinen
ersten Post), wenns jemanden interressiert. Ist jetzt getestet unter Win95B, Win98SE,
Win2kSP4 und WinXPSP1.

Option Explicit
 
Private Type LV_ITEM
    mask As Long
    iItem As Long
    iSubItem As Long
    state As Long
    stateMask As Long
    lpszText As Long 'HIER IST DER KNACKPUNKT!!
    cchTextMax As Long
    iImage As Long
    lParam As Long
    iIndent As Long
End Type
 
Private Type LV_TEXT
    sItemText As String * 80
End Type
 
Private Const LVM_FIRST = &H1000
 
Private Const LVM_GETITEMTEXTA As Long = (LVM_FIRST + 45)
Private Const LVM_GETITEMW = (LVM_FIRST + 75)
 
Private Const LVIF_TEXT As Long = &H1
 
Public Function GetLVWLabel(lHwnD As Long, lNum As Long) As String
    Dim pid As Long, tid As Long
    Dim hProcess As Long
    Dim lpSysSharedA As Long, dwSizeI As Long
    Dim lpSysSharedB As Long, dwSizeT As Long
    Dim hFileMappingA As Long
    Dim hFileMappingB As Long
    Dim lWritten As Long
    Dim LV As LV_ITEM
    Dim LT As LV_TEXT
 
    LV.cchTextMax = 80
 
    dwSizeI = Len(LV)
    dwSizeT = Len(LT)
 
    tid = GetWindowThreadProcessId(lHwnD, pid)
 
    If IsWindowsNT Then
        lpSysSharedA = GetMemSharedNT(pid, dwSizeI, hProcess)
        lpSysSharedB = GetMemSharedNT(pid, dwSizeT, hProcess)
 
        With LV
            .mask = LVIF_TEXT
            .lpszText = lpSysSharedB
            .cchTextMax = 80
            .iItem = lNum
        End With
 
            WriteProcessMemory hProcess, ByVal lpSysSharedA, LV, dwSizeI, _
              lWritten
            WriteProcessMemory hProcess, ByVal lpSysSharedB, LT, dwSizeT, _
            lWritten
 
            SendMessage lHwnD, LVM_GETITEMW, 0, ByVal lpSysSharedA
 
            ReadProcessMemory hProcess, ByVal lpSysSharedB, LT, dwSizeT, _
              lWritten
 
            GetLVWLabel = TrimNull(StrConv(LT.sItemText, vbFromUnicode))
 
            FreeMemSharedNT hProcess, lpSysSharedA, dwSizeI
            FreeMemSharedNT hProcess, lpSysSharedB, dwSizeT
    Else
            lpSysSharedA = GetMemShared95(dwSizeI, hFileMappingA)
            lpSysSharedB = GetMemShared95(dwSizeT, hFileMappingB)
 
            LV.lpszText = lpSysSharedB
 
            CopyMemory ByVal lpSysSharedA, LV, dwSizeI
            CopyMemory ByVal lpSysSharedB, LT, dwSizeT
 
            SendMessage lHwnD, LVM_GETITEMTEXTA, lNum, ByVal lpSysSharedA
 
            CopyMemory LT, ByVal lpSysSharedB, dwSizeT
            GetLVWLabel = TrimNull(LT.sItemText)
 
            FreeMemShared95 hFileMappingA, lpSysSharedA
            FreeMemShared95 hFileMappingB, lpSysSharedB
    End If
End Function
Vielen Dank für eure Bemühungen!

Gruß,
planetULTRA

For VB Tools visit :: www.planetultra.de ::

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Labels der Items im Desktoplistview auslesen (Win2k/XP)?3.261planetULTRA21.08.03 16:23
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.429michi-bib21.08.03 22:04
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.286E722.08.03 12:02
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.528ModeratorMartoeng22.08.03 17:17
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.380michi-bib23.08.03 06:05
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.244Mr. Fox23.08.03 17:55
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?2.148planetULTRA23.08.03 22:05
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.271CyberDreams01.04.04 12:40
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.206planetULTRA01.04.04 14:13
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.371planetULTRA01.04.04 14:23
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.313planetULTRA01.04.04 14:27
Re: Labels der Items im Desktoplistview auslesen (Win2k/XP)?1.542CyberDreams01.04.04 14:35

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel