Otwarcie pliku html do edycji, z poziomu mojego programu

2015-09-09 20:53
żubr
0

Mam lokalnie zapisany plik html, w moich dokumentach. Czy da się go otworzyć , do edycji, ale w notatniku?
Za pomocą takiego kodu "wyskakuje" mi przeglądarka:

// Edycja pliku TPopupMenu
procedure TForm1.MenuItemEdytujClick(Sender: TObject);
begin
Shellexecute(Handle,'Open',PChar(GetSpecialFolderPath(5)+'\Plik do edycji.html'),nil,nil,0);
end; 
function GetSpecialFolderPath(const Folder: Integer): string;
var
  Path: array[0..MAX_PATH] of Char;
begin
  SHGetSpecialFolderPath(0, Path, Folder , False);
  Result := Path;
end; 

Program piszę w Lazarusie. W nim używam komponentu IpHtmlPanel.

Pozostało 580 znaków

2015-09-09 21:34
2

W ten sposób otwierasz plik w domyślnej dla rozszerzenia html aplikacji, więc to kiepski pomysł; Musisz uruchomić program notatnik (czyli proces notepad.exe), podając mu jako parametr ścieżkę do pliku; Do tego także użyj funkcji ShellExecute;

Dawno się tą funkcją nie bawiłem, ale sprawdziłem otwarcie przykładowego pliku w ten sposób:

ShellExecute(0, 'open', 'notepad.exe', 'C:\Config.tsinfo', nil, SW_SHOWNORMAL);

i plik otwiera się w systemowym notatniku; Plik wykonywalny aplikacji testowej znajduje się gdzieś w Tempie (aplikacja okienkowa w Lazarusie, bez zapisywania projektu), a rozszerzenie tsinfo mam skojarzone z aplikacją Notepad++, więc powyższy przykład działa prawidłowo - otwiera plik w zadanej aplikacji, a nie domyślnej;

Wystarczy tylko zmienić ścieżkę pliku w argumencie lpParameters i gotowe; W razie czego tutaj jest opis funkcji ShellExecute w dokumentacji na MSDN.


edytowany 3x, ostatnio: furious programming, 2015-09-09 21:41

Pozostało 580 znaków

2015-09-10 19:28
żubr
0

Dzięki, bd się z tym bawić dalej, pozdrawiam :)

Pozostało 580 znaków

2015-09-10 20:51
0

Ale to nie baw się dalej, tylko użyj podanej przeze mnie instrukcji, a w miejsce poniższego literału:

'C:\Config.tsinfo'

wstaw ścieżkę do swojego pliku, czyli to:

PChar(GetSpecialFolderPath(5) + '\Plik do edycji.html')

Reszta pozostaje bez zmian.


Pozostało 580 znaków

2015-09-10 20:52
żubr
0

Przepraszam , że tak post pod postem.... teraz koduje ;) i ostatecznie u mnie, w lazarusie (najnowszym) taki kod działa i nie sypie błędem:

 Shellexecute(Handle,'Open','notepad.exe',PChar(GetSpecialFolderPath(5)+'\Plik do edycji.html'),nil,1);
edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26
Byłem pierwszy ;) - furious programming 2015-09-10 20:53

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0