ShellExecute nie otwiera plików z polskimi znakami

0

Witam,
Piszę w Lazarusie i nie mogę poradzić sobie z ShellExecute i polskimi znakami, otwiera wszystkie pliki oprócz tych z polskimi znakami
poniższy kod nie działa:

   
  plik := 'c:/pliką.txt';
  ShellExecute(GetDesktopWindow,'open',PAnsiChar(plik),nil,nil,SW_SHOWNORMAL);

nawet po wpisaniu bezpośrednio w ShellExecute(GetDesktopWindow,'open','c:/pliką.txt',nil,nil,SW_SHOWNORMAL);

Proszę o pomoc

1

W lazarusie tekst jest kodowany w UTF-8, windows natomiast (w wersji pl) obsługuje cp1250, więc należy całą ścieżkę do pliku (wraz z nazwą pliku) przekonwertować z UTF-8:

plik := 'c:/pliką.txt';
ShellExecute(GetDesktopWindow,'open',PAnsiChar(UTF8ToAnsi(plik)),nil,nil,SW_SHOWNORMAL);
0

Dzięki działa ;)

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