Moin Daniel,
das IShellLink Interface ist für die Shortcuts zuständig.
Als erstes wird einmal eine Instanz davon erzeugt, und ein Pointer darauf zurückgegeben.
Wenn das geklappt hat wird der Pfad auf die Datei gesetzt, für die ein Shortcut angelegt werden soll.
Um den Shortcut speichern zu können, wird dann ein Pointer auf das IPersistFile Interface geholt, damit auf dessen Funktionen zugegriffen werden kann.
War das von Erfolg gekrönt, wird noch der komplette Pfad des Shortcuts erzeugt und in einen Widestring umgewandelt.
Anschliessend wird dieser dann gespeichert (pfPersistFile.Save(...,true)). True damit die Datei auch gespeichert wird.
In der OnClick Routine des Buttons wird der absolute Pfad des Desktop Ordners geholt.
Zu 1.
In Uses musst Du natürlich
ActiveX und ShlObj aufnehmen.
Zu 2.
Verlangt ja auch niemand. Schau Dir doch das ganze auch mal im
PSDK an.
Zu 3.
Der OpenDialog dient doch nur der Auswahl der Datei

, auf die der Shortcut gesetzt werden soll. Ich denke mal, dass Du den Pfad dahin in Deinem Programm wohl selber wirst festlegen können.