FireMonkey Win&Macクロス環境で、
共通コードで外部プログラムの実行は可能でしょうか?
VCL(Windowsオンリー)ならば手段はあるようですが、
どちらでも利用できる手段を見つけることができませんでした。
macでファイルを指定してフォトショップを起動したいと思います。
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
通りすがりさん ありがとうございます
ヒントを元に試行錯誤しています
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でもできないものでしょうか?
自己レス Pythonと連携を模索しています
openFile:withApplication: - Cocoa API解説(macOS/iOS)
http://cocoaapi.hatenablog.com/entry/00000111/recID34985
とかでやってみましたか?
通りすがりさん ありがとうございます
何ともお恥ずかしいことにopenFileは第二引数があり
そこに実行したいプログラムのパスを書けばよかったのでした
ツイート | ![]() |