Du hast Recht, einfache \ tun es auch. Aber irgendwas ist hier trotzdem faul.
ShellExecute gibt mir den gleichen Fehler (31) wie bei dir zurück, himitsu, aber nur mit diesem Pfad:
C:\Users\Bjoern (englisches Windows 7 64bit). Das Explorer-Suchfenster öffnet sich erst gar nicht. Unterordner wie z.B.
C:\Users\Bjoern\Desktop öffnen wieder problemlos.
Dieses komische Verhalten hab ich jetzt mal für folgenden Versuch missbraucht:
Versuch 1
Delphi-Quellcode:
ShellExecute(0, 'find', 'C:\Windows', nil, nil, SW_SHOWNORMAL);
// Suchfenster öffnet sich, listet mit * alle Dateien richtig auf
Diese Zeile habe ich dann durch folgende ersetzt, Anwendung neu kompiliert und gestartet.
Delphi-Quellcode:
ShellExecute(0, 'find', 'C:\Program Files\Internet Explorer', nil, nil, SW_SHOWNORMAL);
// Suchfenster öffnet sich, listet aber immer noch alle Dateien aus C:\Windows auf
Versuch 2
Delphi-Quellcode:
ShellExecute(0, 'find', 'C:\Windows', nil, nil, SW_SHOWNORMAL);
// Suchfenster öffnet sich, listet mit * alle Dateien richtig auf
Zeile durch folgende ersetzen, Anwendung neu kompilieren und starten.
Delphi-Quellcode:
ShellExecute(0, 'find', 'C:\Users\Bjoern', nil, nil, SW_SHOWNORMAL);
// Suchfenster öffnet sich nicht, ShellExecute liefert 31 zurück
Zeile durch folgende ersetzen, Anwendung neu kompilieren und starten.
Delphi-Quellcode:
ShellExecute(0, 'find', 'C:\Program Files\Internet Explorer', nil, nil, SW_SHOWNORMAL);
// Suchfenster öffnet sich, listet mit * alle Dateien aus dem Internet Explorer Ordner auf!?
Mir kommt es so vor, als ob hier ShellExecute oder vielleicht sogar die Windows Suche
etwas falsch macht ein mir unbekanntes Feature hat. Ich bin jedenfalls mit meinem Latein am Ende.