#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files\steam\public\steam_tray.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <File.au3>

if $CmdLine[0] = 0 Then

$SteamExec = FileOpenDialog("Steam-Verzeichnis", "", "Steam (steam.exe)", 1, "steam.exe")
If @error Then Exit

$PathSplit = StringSplit($SteamExec, "\")
$FilePath = $PathSplit[1]

For $i=2 to ($PathSplit[0]-1)
$FilePath = $FilePath & "\" & $PathSplit[$i]
Next

$SteamLauncherPath = $FilePath & "\SteamLauncher"
DirCreate($SteamLauncherPath)

$AllGames = _FileListToArray ( $FilePath & "\steamapps","*.acf")
If @error Then
MsgBox (0,"Info", "Keine Spiele gefunden.",5)
Exit
EndIf

For $i = 1 To $AllGames[0]
$GameSpecs = FileOpen($FilePath & "\steamapps\" & $AllGames[$i])
$GameID = FileReadLine($GameSpecs,3)
$GameName = FileReadLine($GameSpecs,5)
FileClose($GameSpecs)

$GameIDSplit = StringSplit($GameID,Chr(9),1)
$GameID = StringTrimLeft($GameIDSplit[4],1)
$GameID = StringTrimRight($GameID,1)

$GameNameSplit = StringSplit($GameName,Chr(9),1)
$GameName = StringTrimLeft($GameNameSplit[4],1)
$GameName = StringTrimRight($GameName,1)

If Not FileExists( $SteamLauncherPath & "\SteamLauncher_" & $GameID & ".exe" ) Then
FileCopy(@ScriptDir & "\SteamLauncher.exe", $SteamLauncherPath & "\SteamLauncher_" & $GameID & ".exe",1)
$GameIcon = FileOpenDialog("Icon für <" & $GameName & "> oder Abbrechen für Standard-Icon", $FilePath & "\steam\games", "Icons (*.ico;*.exe)", 0)
FileCreateShortcut($SteamLauncherPath & "\SteamLauncher_" & $GameID & ".exe", @ScriptDir & "\" & $GameName , $FilePath, $FilePath & " " & $GameID, "Startet Steam-Spiel: " & $GameName, $GameIcon)
EndIf
Next

ShellExecute($SteamLauncherPath)

Else
Run($CmdLine[1] & "\steam.exe -applaunch " & $CmdLine[2], $CmdLine[1])
EndIf

...zur Antwort

Die Frage ist zwar schon über ein Jahr alt, die Problematik aber nachwievor aktuell.

Die beschriebene Lösung mittels applaunch-parameter klappt bei einem Spiel. Leider erkennt Windows 10, dass auf die Steam.exe verlinkt wurde und somit lässt sich nur eine Verknüpfung "An Start anheften". Will man das nächste Spiel anheften, kann man es nur von Start lösen.

Also habe ich ein kleines AutoIT-Script geschrieben, welches als Wrapper dient. Kompiliert müsst ihr euren Steam-Speicherort angeben. Das Script sucht nach installierten App-IDs und legt von sich selbst eine Kopie pro ID an, so dass jede separate Exe angeheftet werden kann.

Erstellt eine neue AutoIT-Datei namens SteamLauncher.au3 , kopiert den folgenden Code rein, kompiliert sie und führt sie aus. Vielleicht kann ein anderes Mitglied den Code noch optimieren:

...zur Antwort