Task-Manager - LVM_INSERTITEM
-
Weiß jemand mit welcher Funktion der Windows Task-Manager Items in das SysListView32 Control einträgt mit LVM_INSERTITEM. Normal macht man das ja mit SendMessage, bei dem Task-Manager ist das komischerweise nicht der Fall. Ist es eine von den Funktionen?
SendMessageCallback
SendNotifyMessage
PostMessage
PostThreadMessage
-
Der macht das mit LVM_INSERTITEM.
Du willst aber aus einem Fremden Prozess "mogeln".
Das kann nicht aus einem fremden Prozess gehen. Denn Dein Speicher den Du für Insert liegt in Deinem Prozess undnciht im Prozess des Taskmanagers.
-
Aber mit welcher Funktion sendet der Task-Manager die LVM_INSERTITEM message an das eigene Control? Nur das interessiert mich vorerst. Selbst wenn er es mit ListView_InsertItem macht, es ist ja letztendlich auch nur ein Macro oder nicht? Der Task-Manager muss doch auf Funktionen wie SendMessage zurückgreifen um das Item an das ListView zu senden.
-
Ja, er benutzt wahrscheinlich SendMessage. Du musst halt bevor du das machst Speicher mit VirtualAllocEx anfordern, danach WriteProcessMemory nehmen, um die LVITEM Struktur in den Speicher des Prozesses zu schreiben. Dann kannst du die Adresse des Speichers, den du angefordert hast, als lParam in SendMessage übergeben.
-
Mit SendMessage macht er es komischerweise nicht, darauf wollte ich hinaus.
-
Wie kommst Du darauf?
Intern gibt es manche Tricks auch durch das drekte Aufrufen von CallWindowProc umd Nachrichten an die interne Fensterprozedur weiterzugeben.
Aber nichts desto trotz, wenn Du es von außen machen willst (aus einem anderenen Prozess) musst Du vorgehen wie desktops es schreibt.
-
Wie kommst Du darauf?
Habe mir grade die Mühe gemacht und alle Funktionen per .dll Injection zu meinen eigenen Funktionen umgeleitet. Folgene Funktionen werden für die Prozesse Liste des Task-Managers nicht aufgerufen:
SensMessageW
SensMessageA
SendMessageCallbackW
SendMessageCallbackA
SendNotifyMessageW
SendNotifyMessageA
PostMessageW
PostMessageA
PostThreadMessageW
PostThreadMessageA
Für die Liste Anwendungen im Task-Manager wird jedoch SendMessageW verwendet. Da frag ich mich wie der Task-Manager das nun genau macht.
-
Wie ich schon geschrieben habe.
Man kann wenn man ein Fenster gesubclassed hat direkt CallWindowProc mit der alten Fensterprozedur benutzen und die eigenen Parameter angeben.In der NFC wird das IMHO in CCheckListBox genau so gemacht.