Entwickler-Ecke

Sonstiges (Delphi) - Icon aus der Anwendung, die eine Datei öffnet?


lotus - Di 17.04.07 18:09
Titel: Icon aus der Anwendung, die eine Datei öffnet?
Hi!!

Ich will ein Programm schreiben, dass das Icon aus Dateien ausliest.
Mit SaveResIconToFile [http://www.dsdt.info/tipps/?id=318&search=Icon] klappt das auch ziemlich gut (Hab den Code etwas abgewandelt, sodass das Icon nicht gespeichert, sondern nur in ein TImage geladen wird)!

Nun gibt es aber Dateien, die keinen eigenen Icons besitzen, sondern mit einer Anwendung verknüpft sind (*.doc)

Bei so einer Datei möchte ich, dass es dann das icon der verknüpften Datei, also z.B. das MicroSoft-Word-Logo lädt.

Also wollte ich die GetProgramAssociation [http://www.dsdt.info/tipps/?id=482&search=Verkn%FCpft]-Funktion verwenden und aus dem Rückgabewert (dem Pfad der Anwendung) das Icon extrahieren.

Nun gibt GetProgrammAssociation zum Teil solche oder noch kompliziertere Pfade zurück (Hier Word):


Quelltext
1:
'C:\Programme\Microsoft Office\OFFICE11\WINWORD.EXE" \n \dde                    


Das Icon wird nicht ordnungsgemäß geladen!
Ich denke das liegt an den "\n" und "\dde" - Was ist das überhaupt und wie bekommt man das weg?

Hier nochmal mein Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if ico.Empty=true then
      begin
      s:=ExtractFileExt(JvOpendialog1.FileName);
      Delete(s,1,1); // "." löschen
      SaveResIconToFile(Ico,GetProgramAssociation(s));
      end;


Habt ihr vielleicht eine Idee, wie ich das Icon richtig extrahieren kann? :lol:

Sorry für den langen Text und danke im Voraus,
lotus


zuma - Di 17.04.07 18:37

1.)
/n /dde sind aufrufparameter für winword

2.)
GetProgramAssociation(s) liefert dir den String zum aufruf der Exe,
von der du das icon haben willst ?

dann solltest du ne zwischenvariable (string) machen,
und dort das ergebnis von getprog... merken
(etwa so :
str := GetProgramAssociation(s);
und str dann entsprechend kürzen,
so das lediglich der Pfad/Dateiname-teil bleibt
strings kürzen -> copy, length, pos sind da die sachen,
die du dir mal angucken solltest.