Schau doch noch mal genau in die Doku zu ShellExecute
Auflösung:
Du gibst ja auch einen Parameter (leerer String statt nil) an. Das bedeutet implizit dass deine .txt-Datei eine Anwendung wäre.
Zitat:
If lpFile specifies a document file, lpParameters should be NULL.