Fremde List View auslesen
-
Hallo wie kann ich auf eine fremde list view zugreifen? Mit LM_GETITEM gehts nicht wegen den getrennten Addressbereichen. Könnte mir jemand zeigen wie genau ich das mit Read- und WriteProcessMemory mache? Bitte ein kleines funktionierendes Beispiel. Oder gibts noch andere Möglichkeiten?
Danke
-
ein handel auf die liste besorgen und dann via SendMessage das aus der liste holen was du willst.
const DWORD dwSize = 1024; LVITEM LvItem; memset(&LvItem,0,sizeof(LvItem)); LvItem.mask = LVIF_STATE | LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE; LvItem.cchTextMax = dwSize; int nListCtrlId = ;//Must du dir über Spy oder ähnliche Programme suchen HWND hDlg = FindWindow(NULL,"FensterName"); HWND hList = GetDlgItem( hDlg, nListCtrlId ); SendMessage(hList,LVM_GETITEM,(WPARAM)0,(LPARAM)&LvItem); MessageBox(0,LvItem.pszText,0,0);
-
Such mal im Netz nach Desktop Item Position Save, oder DIPS von Jeffrey Richter.
Das ist ein Sample aus dem Buch "Advanced Windows"...
-
@martin
Da mich das auch interessiert, und ich evtl. nach einer besseren lösung als meinem vorschlag suche. hab ich mal wie vorgeschlagen nach deinen stichwörtern gesucht.sucht man unter google nach Desktop Item Position Save bringt googel nur Desktop Icon Position Save
unter DIPS findet google nur kochrezepte
und zuletzt unter Jeffrey Richter bringt google nur beiträge über oder beiträge von dem guten mann.
hast du zufällig den direkten link zu dem sample
-
deine "lösung" funktioniert gar nich du witzbold, wie der threadersteller in seinem ausgangsposting schon richtig formuliert hat, @rT!f@Ct

-
Bin sofort fündig geworden:
http://www.google.com/codesearch/p?hl=de#w-iYcH7dYFs/cd_win/DIPS/DIPS.C&q=DIPS jeffrey richter lang:c%2B%2B
Siehe auch DISPLIB!
-
@rT!f@Ct schrieb:
ein handel auf die liste besorgen und dann via SendMessage das aus der liste holen was du willst.
const DWORD dwSize = 1024; LVITEM LvItem; memset(&LvItem,0,sizeof(LvItem)); LvItem.mask = LVIF_STATE | LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE; LvItem.cchTextMax = dwSize; int nListCtrlId = ;//Must du dir über Spy oder ähnliche Programme suchen HWND hDlg = FindWindow(NULL,"FensterName"); HWND hList = GetDlgItem( hDlg, nListCtrlId ); SendMessage(hList,LVM_GETITEM,(WPARAM)0,(LPARAM)&LvItem); MessageBox(0,LvItem.pszText,0,0);Hast du das auch mal mit erfolg ausprobiert?
-
mit einer liste noch nicht.
aber mit einem Editfeld, Button und ner Combobox.
da hat es einwandfrei gefunzt.warum also sollte es nicht auch bei einer liste gehn.
-
Weil der Zeiger, den Du übergibst in einem anderenProzessraum liegt. Bei WM_GETTEXT und WM_SETTEXT und anderen standard Windows COntrols werden die Nachrichten gemarshalled.
Bei den COMCTL32 COntrols gibt es das nicht.