Jeg er bange for at jeg ikke rigtig ved, hvordan jeg skal bruge det.
Jeg prøvede følgende: procedure TForm1.miHelpClick(Sender: TObject); Begin ShellExecute(Handle,\'open\',ExtractFilePath(Burgmann.exe)+\'Help\\Help.html\'),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL); end;
Men det virkede ikke. Delphi siger: Undeclared identifier: \'Burgmann\'
For at det virker så skal programmet vel være \"oprettet\" i windows\'s Path ellers kan den vel ikke vide hvad det for en *.exe den skal \"ExtractFilePath\" fra. Der kan jo ligge flere exe\'r med samme navn.(i forskellige biblioteker, vel at mærke :)
Skal jeg hente stien til programmet f.eks ved FormCreate eller hvordan gør jeg?
Jeg fik nogle irriterende fejl med: Incompatible Types: \'String\' and\'PChar\'
Men det lykkedes ved at jeg gjorde sådan her: procedure TForm1.miHelpClick(Sender: TObject); var Path: String; Begin Path := ExtractFilePath(ParamStr(0)) + \'Help\\Help.html\'; ShellExecute(Handle,\'open\',PChar(Path),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL); end;
Det var min erfaring der spillede mig et lille pus, jeg tænker ikke på String/PChar, jeg er så vant til at bruge PChar til API kald.
Jan >> Du kar faktisk gjort som man gjore i gl. dage, paramstr(0) virker fint i delphi også, hvilket paramcount også gør, men problemet var som fejlen også sagde string/pchar, Delphi kan typecaste mellem String og PChar som du har lyst til, så længe vi taler \"huge\" string og altså ikke ShortString ( kun 255 karakterer ), så som ziron skiver en pchar rundt om også \"funker\" det. du kan også bruge PChar(Strx+\' Hej du\'), det bliver også til en valid PChar til et API-kald.
Hvis der er et let svar på det her (og I gider), har I så en enkel løsning på det.
Jeg bruger shellexecute to forskellige steder. Det ene sted (ovenstående) er det altid en html-fil, men det andet sted kan det være en vilkårlig fil *.* Er der en setting, så man kan sørge for at filen altid åbnes med notepad, eller et andet program der er registreret til *.txt filer.
Jo, filen som bliver gemt kan have et vilkårligt efternavn, da filen skal kunne bruges i flere forskellige sammenhænge. Man kan selvfølgelig bare gemme den fra programmet som en *.txt fil, og så omdøbe den senere. Det ville bare være en mere elegant løsning, at brugeren kunne give filen det rigtige navn med det samme.
Findes der ikke en kommando så man kan finde \"windir\"?
Jeg har ledt i WIN32.hlp, men har ikke kunnet finde noget.
Jeg har fundet her i WIN32.hlp, men kan ikke finde ud af at bruge det:
The GetSystemDirectory function retrieves the path of the Windows system directory. The system directory contains such files as Windows libraries, drivers, and font files.
UINT GetSystemDirectory(
LPTSTR lpBuffer, // address of buffer for system directory UINT uSize // size of directory buffer );
Parameters
lpBuffer
Points to the buffer to receive the null-terminated string containing the path. This path does not end with a backslash unless the system directory is the root directory. For example, if the system directory is named WINDOWS\\SYSTEM on drive C, the path of the system directory retrieved by this function is C:\\WINDOWS\\SYSTEM.
uSize
Specifies the maximum size of the buffer, in characters. This value should be set to at least MAX_PATH.
Return Values
If the function succeeds, the return value is the length, in characters, of the string copied to the buffer, not including the terminating null character. If the length is greater than the size of the buffer, the return value is the size of the buffer required to hold the path. If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Applications should not create files in the system directory. If the user is running a shared version of Windows, the application does not have write access to the system directory. Applications should create files only in the directory returned by the GetWindowsDirectory function.
See Also GetCurrentDirectory, GetWindowsDirectory, SetCurrentDirectory
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.