Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XE4在MacOS中通过管道控制mplayer_Macos_Delphi_Pipe_Mplayer - Fatal编程技术网

使用XE4在MacOS中通过管道控制mplayer

使用XE4在MacOS中通过管道控制mplayer,macos,delphi,pipe,mplayer,Macos,Delphi,Pipe,Mplayer,我用-slave命令在Windows中使用管道完成了对mplayer的控制,但我不知道如何在MacOS中做到这一点。 因为MacOS开发对我来说是新的,所以,我脑海中仍然有Windows的概念。所以,我决定在OSX中也使用管道。 这是我创建管道的代码: uses Macapi.ObjectiveC,Macapi.ObjCRuntime, Macapi.Foundation; var LArray: array of Pointer; LArgs: NSArray; LTas

我用-slave命令在Windows中使用管道完成了对mplayer的控制,但我不知道如何在MacOS中做到这一点。 因为MacOS开发对我来说是新的,所以,我脑海中仍然有Windows的概念。所以,我决定在OSX中也使用管道。 这是我创建管道的代码:

uses
  Macapi.ObjectiveC,Macapi.ObjCRuntime,
  Macapi.Foundation;

var
  LArray: array of Pointer;
  LArgs: NSArray;
  LTask: NSTask;
  LPipe: NSPipe;
  fileHandler: NSFileHandle;

  function RawStr(const Str: string): Pointer;
  begin
    Result := TNSString.OCClass.stringWithUTF8String(PAnsiChar(UTF8String(Str)));
  end;

  procedure runInMacOSX;
  var
    data : NSData;
    nsText : NSString;
  begin
    LArgs := TNSArray.Create;
    setlength(LArray, 2);
    LArray[0] := RawStr('/test.avi');
    LArray[1] := RawStr('-slave');
    LArgs := TNSArray.Wrap(TNSArray.Alloc.initWithObjects(@(LArray[0]), 2));
    LTask := TNSTask.Wrap(TNSTask.Alloc.init);
    LPipe := TNSPipe.Create;
    fileHandler := TNSFileHandle.Create;

    LTask.setLaunchPath(NSStr('/mplayer'));
    LTask.setArguments(LArgs);
    LTask.setStandardOutput((LPipe as ILocalObject).GetObjectID);
    fileHandler := LPipe.fileHandleForReading;
    LTask.launch;
  end;
在按钮1中,我执行runInMacOSX:/mplayer-slave/test.avi,并且它执行正确。 但是在按钮2中,我想通过发送pause命令来暂停mplayer。我被卡住了:

var
  a: NSData;
  str: NSString;
begin
  str := TNSString.Wrap(TNSString.OCClass.stringWithUTF8String(PAnsiChar('pause')));
  a := str.dataUsingEncoding(NSUTF8StringEncoding);
  LPipe.fileHandleForWriting.writeData(a);
我怎样才能解决这个问题? 多谢各位