Seite 1 von 1
#LVM_GETITEMTEXT auf DesktopIcons anwenden
Verfasst: 06.11.2004 18:59
von bingo
Code: Alles auswählen
#LVM_GETTITEMCOUNT = $1000 + 4
hDesktop=GetDesktopWindow_();
hDesktop=FindWindowEx_(hDesktop, 0, "Progman", "Program Manager");
hDesktop=FindWindowEx_(hDesktop, 0, "SHELLDLL_DefView", 0);
hDesktop=FindWindowEx_(hDesktop, 0, "SysListView32", 0);
Debug SendMessage_(hDesktop, #LVM_GETTITEMCOUNT, 0, 0) ;anzahl der desktop icons
aber wie weiter mit ...
lvi.LV_ITEM
lvi\iSubItem
lvi\pszText
lvi\cchTextMax
lvi\mask = #LVIF_TEXT
SendMessage_(hDesktop, #LVM_GETITEMTEXT, iconindex, @lvi)
... um den namen/label zu vergleichen ?
Verfasst: 26.11.2006 23:11
von tobe
hi,
ich hab es so gelöst:
Code: Alles auswählen
EnableExplicit
Define h, pid, ItemCount, hProcess, smItem, smName, item.LVITEM, Written, i, text$
h = FindWindow_("Progman",0)
h = FindWindowEx_(h, 0, "SHELLDLL_defVIEW",0)
h = FindWindowEx_(h, 0, "SysListView32",0)
GetWindowThreadProcessId_(h, @pid)
ItemCount = SendMessage_(h, #LVM_GETITEMCOUNT, 0, 0)
hProcess = OpenProcess_(#PROCESS_VM_OPERATION | #PROCESS_VM_READ | #PROCESS_VM_WRITE, 0, pid)
smItem = VirtualAllocEx_(hProcess,0,SizeOf(LVITEM),#MEM_RESERVE | #MEM_COMMIT, #PAGE_READWRITE)
smName = VirtualAllocEx_(hProcess,0,40,#MEM_RESERVE | #MEM_COMMIT, #PAGE_READWRITE)
item\mask = #LVIF_TEXT
item\cchTextMax = 40
item\pszText = smName
WriteProcessMemory_(hProcess, smItem, item, SizeOf(LVITEM), @Written)
For i = 0 To ItemCount - 1
SendMessage_(h, #LVM_GETITEMTEXT, i, smItem)
text$ = Space(40)
ReadProcessMemory_(hProcess, smName, @text$, 40, @Written)
Debug text$
Next i
VirtualFreeEx_(hProcess, smItem, SizeOf(LVITEM), #MEM_RELEASE)
VirtualFreeEx_(hProcess, smName, 40, #MEM_RELEASE)
CloseHandle_(hProcess)
Verfasst: 27.11.2006 20:06
von bingo