Zitat:
Mir geht es darum, dass ich das 'ShellExecute' ja bevor ich mit dem eigentlichen Code anfange deklarieren muss.
Seit wann das?
Zitat:
Wenn ich 'ShellExecute' nicht als Funktion deklariere, ist die Fehlermeldung
unbekannte Funktion. D.h. ich muss es am Anfang als Funktion deklarieren.
Wenn du das so machst, deklarierst du eine
neue Funktion, die, wenn du das nicht selbst so programmierst, gar nix macht, und schon gar nix auszuführt...
Schon mal das probiert:
Könnte helfen.
Trotzdem nochmal ne Antwort auf deine Frage:
Welchen Typ welcher Parameter hat, kannst du im
PSDK nachgucken. Das wären in dem Fall:
'open' = PChar
nil = Pointer(0) = PChar('')
SW_SHOW Integer(oder cardinal?
; müsst ich jetzt auch nachgucken)
PChar ist n Pointer auf n Null-Terminierten string im Speicher, deshalb gilt: nil = Pointer(0) = PChar(''). Warum muss man nun PChar nehmen und kann keine strings verwenden? C++ kennt keine strings(jedenfalls nicht so, wie wir die kennen). D.h. man muss sich n string selbst "nachbauen", als n Pointer, der auf ne Stelle im Arbeitsspeicher zeitgt. Findet man irgendwo dann n #0(
ASCII-Zeichen), gilt der string da als "terminated" --> Stringende...
Da ShellExecute ne
WinAPI-Funktion ist und die
WinAPI in C/C++ geschrieben ist, muss man eben konvertieren...
mfg
Christian