Thema: Delphi Das Handle ist ungültig

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#30

AW: Das Handle ist ungültig

  Alt 3. Mai 2018, 10:56
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

Geändert von EWeiss ( 3. Mai 2018 um 11:03 Uhr)
  Mit Zitat antworten Zitat