Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: WinAPI ::  SysListView32 - select item     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
SysListView
Unregistrierter




Beitrag SysListView Unregistrierter 10:43:44 08.06.2012   Titel:   SysListView32 - select item            Zitieren

Hallo Leute,

ich habe ein Problem beim Auswählen einer Zeile einer ListView Form. Ich habe einige Befehle gefunden, doch mit keinem konnte ich eine Zeile markieren...

Bei meiner Suche habe ich das hier gefunden:
C++:
//selectieren
ListView_SetItemState(hWndLV, nIndex, LVIS_SELECTED, LVIS_SELECTED);
 
//deselectieren
ListView_SetItemState(hWndLV, nIndex, 0, LVIS_SELECTED);

Leider funktioniert das bei mir nicht. Für kurze Zeit hatte es beim MediaPlayer funktioniert, doch jetzt geht es dort auch nicht mehr :confused:

Ich habe gesehen, dass es bei meinem Taskmanager (Anwendungs/Prozessansicht...) ebenfalls nicht funktioniert. Falls es von eurer Seite Lösungsvorschläge gibt, wäre es gut, wenn es zumindest im Taskmanager funktioniert, da die ListView dem in meinem Programm ähnelt.

Für den Fall, dass es wichtig ist: Betriebssystem ist Win7 32Bit

Gruß, Waschbär
SysListView
Unregistrierter




Beitrag SysListView Unregistrierter 11:06:29 08.06.2012   Titel:              Zitieren

Nachtrag:

Nach einem Neustart funktioniert nun immerhin das selectieren sowohl im MediaPlayer als auch im Taskmanager.
Deselectieren geht weiterhin nicht... Und nach einem LVIS_FOCUSED bekomme ich den Focus nicht mal mehr mit der Maus weg -.-'
SysListView
Unregistrierter




Beitrag SysListView Unregistrierter 00:36:41 18.06.2012   Titel:              Zitieren

Hmm, scheint nur bei mir ein Problem zu sein... Nun ja, für den Fall, dass noch andere auf ähnliche Probleme stoßen, hier mein Weg:

C++:
// aktivieren und selectieren der Form mit der linken Maustaste
SendMessage(listview, WM_MOUSEACTIVATE, (WPARAM)parent, (LPARAM)((WM_LBUTTONDOWN<<16)+HTCLIENT));
SendMessage(listview, WM_SETCURSOR, (WPARAM)parent, (LPARAM)((WM_LBUTTONDOWN<<16)+HTCLIENT));
 
// mit der linken Maustaste auf den ersten Eintrag (Pixel (10|10) klicken
PostMessage(listview, WM_LBUTTONDOWN, 0, (LPARAM)(10<<16)+(10));


In den paar Zeilen klicke ich nur den ersten Eintrag an. Ich hatte versucht, mit LVM_GETITEMRECT die Koordinaten der anderen Einträge herauszubekommen, doch auch da hat sich mein PC quergestellt.

C++:
1
2
3
4
5
6
7
8
9
10
11
RECT position;
LRESULT ergebnis;
 
ergebnis = SendMessage(child, LVM_GETITEMCOUNT, 0, 0);
printf("%i ", (int)ergebnis);
 
position.left = position.top = position.right = position.bottom = LVIR_ICON;
ergebnis = SendMessage(child, LVM_GETITEMRECT, 1, (LPARAM)&position);
printf("%i - %lu %lu %lu %lu\n", (int)ergebnis, position.left, position.right, position.top, position.bottom);
 
// Ausgabe: 1 1 - 1 1 1 1, also 1 Element vorhanden, erfolgreiches Senden, aber keine Koords...

Spy++ hat beide Nachrichten korrekt angezeigt und in der letzten Antwort stehen auch die korrekten Koords (0 24 1260 44) des ersten Eintrages der ListView drin, nur in meinem Programm kann ich einfach nicht drauf zugreifen... Habe keinen Schimmer, woran das liegt... Wahrscheinlich funktioniert deswegen der einfache Weg aus Post 1 auch nicht.

Falls es noch ein paar Hinweise/Anregungen gibt, immer her damit. Ansonsten danke fürs lesen ^^
Gruß vom Waschbärn
_Luckie
Unregistrierter




Beitrag _Luckie Unregistrierter 13:55:14 18.06.2012   Titel:              Zitieren

Ähm, dir ist klar, dass das nicht dein Prozess ist? Du wirst dir wohl Speicher im fremden Prozess reservieren müssen und mit Read- und WriteProcessMemory arbeiten müssen: http://michael-puff.de/Pr ....... kel/AccessComCtrl32.shtml
SysListView
Unregistrierter




Beitrag SysListView Unregistrierter 01:32:01 27.06.2012   Titel:              Zitieren

Hi Luckie,

danke für den Tipp!!! Es fiel mir schwer, deinen Link nach C zu übersetzen, doch mit den Stichworten von dir habe ich eine gute Seite gefunden. Ich habe etwas gebraucht, bis ich den Code verstanden habe, doch nun ist es mir endlich gelungen, den Text eines Items aus der ListView auszulesen (die Koords kommen auch bald) :)

Hier die Anleitung: http://www.codeproject.com/Articles/5570/Stealing-Program-s-Memory

Vielen Dank für die Hilfe,
Gruß, Waschbär
c++.de :: WinAPI ::  SysListView32 - select item   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.