FireMonkey Win&Mac 外部プログラムの実行

解決


ささき  2019-05-07 03:59:40  No: 49748

FireMonkey  Win&Macクロス環境で、
共通コードで外部プログラムの実行は可能でしょうか?
VCL(Windowsオンリー)ならば手段はあるようですが、
どちらでも利用できる手段を見つけることができませんでした。
macでファイルを指定してフォトショップを起動したいと思います。


通りすがり  2019-05-08 23:50:47  No: 49749

macOSは全然詳しくないのですが、一発でWindowsとmacOSの両方でできる方法はないようです。
ですので標準条件シンボルMSWINDOWSとMACOSを使って
{$IFDEF MSWINDOWS}
  ShellExecute(...
{$ENDIF}
{$MACOS}
  Workspace := TNSWorkspace.Create;
  Workspace.openFile(NSSTR(...
{$ENDIF}
とかする必要がありそうです。

See also:
https://stackoverflow.com/questions/28858392/open-file-in-os-x
http://cocoaapi.hatenablog.com/entry/00000111/recID34983


ささき  2019-05-16 15:40:01  No: 49750

通りすがりさん  ありがとうございます
ヒントを元に試行錯誤しています


ささき  2019-05-17 05:56:06  No: 49751

var
  LFile   : string;
  LParams : string;
  {$IFDEF MACOS}
  Workspace : NSWorkspace;
  {$ENDIF}
begin
  {$IFDEF MSWINDOWS}
    LFile   := 'C:\Program Files\Adobe\Adobe Photoshop CS5 (64 Bit)\Photoshop.exe';
    LParams := '- "c:\test.jpg"';

    ShellExecute(WindowHandleToPlatform(Handle).Wnd, 'open', PChar(LFile), PChar(LParams), nil, 1);
  {$ENDIF}
  {$IFDEF MACOS}
    Workspace := TNSWorkspace.Create;
    Workspace.openFile(NSSTR('c:\test.jpg'));
  {$ENDIF}
end;

と書きました

Windowsではプログラムに引数をつけて外部プログラムを起動できました。
MacOSXではネットで探しましたが同様のことができませんでした。

引数をつけてMacOSXでもできないものでしょうか?


ささき  2019-05-29 05:35:36  No: 49752

自己レス  Pythonと連携を模索しています


通りすがり  2019-05-29 15:29:34  No: 49753

openFile:withApplication: - Cocoa API解説(macOS/iOS)
http://cocoaapi.hatenablog.com/entry/00000111/recID34985

とかでやってみましたか?


ささき  2019-05-29 16:48:21  No: 49754

通りすがりさん  ありがとうございます
何ともお恥ずかしいことにopenFileは第二引数があり
そこに実行したいプログラムのパスを書けばよかったのでした


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加