EDIT:
Schlage mich jetzt mit der Änderung rum.
Durch die Änderung auf GetProcessImageFileNameW habe ich nun Probleme den korrekten Pfad zu Anwendung zu finden um das Icon zu setzen.
Muss diesen Pfad
Zitat:
\Device\HarddiskVolume1\Program Files\Windows Sidebar\sidebar.exe
in einem gültigen umwandeln.
Delphi-Quellcode:
SessionControl2.GetProcessId(ProcessId);
Writeln('Process ID: ', ProcessId);
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessId);
if ProcessHandle <> 0 then
begin
if GetModuleFileNameEx(ProcessHandle, 0, ProcessName, MAX_PATH) <> 0 then
begin
Writeln('ProcessName: ', ProcessName);
end;
CloseHandle(ProcessHandle);
end;
Das hatten wir schon Seiten vorher... aber trotzdem Danke.
Nicht nur GetModuleBaseName (gibt den ExeNamen ohne Pfad zurück) verursacht diesen Fehler auch GetModuleFileNameEx (ExeNamen inklusive Pfad)
Hier gibt es den Fehler das mein
Handle ungültig ist.
Deshalb haben wir es doch geändert.
Zitat:
Hier noch ein Schups in die richtige Richtung, weil heute Donnerstag ist:
Danke hatte ich schon fertig.. und ist mir bekannt.
Delphi-Quellcode:
procedure TAudioVolume.SetSysItemIcon(wsItems: PWideChar);
var
fi: TSHFileInfo;
begin
ZeroMemory(@fi, sizeof(TSHFileInfo));
if SHGetFileInfo(wsItems, 0, fi, sizeof(TSHFileInfo),
SHGFI_DISPLAYNAME Or SHGFI_SYSICONINDEX or SHGFI_LARGEICON or SHGFI_ICON) <> 0 then
Icon := fi.HICON;
end;
gruss