[Solved] UnicodeString and CreateProcessW lazarus / 67-Windows ---------------------------------------------------------------------- Mike.Cornflake · 2014-07-01 12:53 Sorry to keep hammering away at this, I've got a bee in my bonnet I've got CreateProcessW working in a simple test case.  From the reading I've done - UnicodeString would appear to be best fit for this code (but I've tried WideString as well) . Can anyone shed any light on why this isn't passing a correct encoded string through to mplayer?  Code: [Select]procedure TForm1.Button2Click(Sender: TObject); var   StartInfo: TStartUpInfo;   ProcInfo: TProcessInformation;   createOK: Boolean;   PName,PDir,PCommandLine : PWideChar;   sName, sDir, sCommandLine : UnicodeString;      //  Also tried WideString here, but I suspect UnicodeString is a better fit... begin   FillChar(StartInfo, SizeOf(TStartUpInfo), #0);   FillChar(ProcInfo, SizeOf(TProcessInformation), #0);   StartInfo.cb := SizeOf(TStartUpInfo);   StartInfo.dwFlags      := STARTF_USESHOWWINDOW;   StartInfo.wShowWindow := SW_SHOWMINIMIZED;   sName := 'B:\Code\Compile\mplayer-svn-37216\mplayer.exe';   sDir := 'B:\Code\Compile\mplayer-svn-37216';     sCommandLine := '-vo direct3d "B:\Code\Compile\Test Data\test2.mpg"';  //  This line works   //sCommandLine := '-vo direct3d "B:\skiing-ǤǥǦ.avi"';                //  This line doesn't - notice the encoding in the filename   PName := PWideChar(sName);   PCommandLine := PWideChar(sCommandLine);   PDir := PWideChar(sDir);   createOK := CreateProcessW(PName,PCommandLine,Nil, Nil, false,                            CREATE_NEW_PROCESS_GROUP+HIGH_PRIORITY_CLASS,                            NIL, PDir, STARTINFO, PROCINFO);   if createOK then     waitForSingleObject(PROCINFO.HPROCESS, Infinite)   else     ShowMessage('Create Failed'); end;  CreateOK is returning true here.  When I throw in assorted SysToUTF8 or UTF8ToSys, then CreateOK returns false.  Which makes some sort of sense to me. This is my main reference page http://wiki.freepascal.org/FPC_Unicode_support but I've also been bimbling through http://docwiki.embarcadero.com/RAD Studio/XE/en/Enabling_Applications_for_Unicode (kind of dangerous I know as fpc and delphi are in different places right now with this stuff) ---------------------------------------------------------------------- taazz · 2014-07-01 12:58 well you do need to convert the string to widestring that is done using the utf8decode/utf8encode not the sys variant. ---------------------------------------------------------------------- Mike.Cornflake · 2014-07-01 13:23 Quote from: taazz on July 01, 2014, 02:58:11 pmwell you do need to convert the string to widestring that is done using the utf8decode/utf8encode not the sys variant. Brilliant.  UTF8Decode was the go... Many, *many* thanks