lep 2013-07-23
DESCRIPTION
sample database posted on GitHub: https://github.com/miyako/4d-training-lepTRANSCRIPT
LAUNCH EXTERNAL PROCESS
LAUNCH EXTERNAL PROCESS
LAUNCH EXTERNAL PROCESS
4Dから別アプリケーションを起動するコマンド
LAUNCH EXTERNAL PROCESS
C_TEXT($command)LAUNCH EXTERNAL PROCESS($command)
C_TEXT($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
C_BLOB($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
4Dから別アプリケーションを起動するコマンド同期モード 同期モード 同期モード
テキスト バイナリ
LAUNCH EXTERNAL PROCESS
C_TEXT($command)LAUNCH EXTERNAL PROCESS($command)
C_TEXT($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
C_BLOB($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
4Dから別アプリケーションを起動するコマンド同期モード 同期モード 同期モード
TEXT バイナリ
LAUNCH EXTERNAL PROCESS
C_TEXT($command)LAUNCH EXTERNAL PROCESS($command)
C_TEXT($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
C_BLOB($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
4Dから別アプリケーションを起動するコマンド同期モード 同期モード 同期モード
TEXT BLOB
LAUNCH EXTERNAL PROCESS
C_TEXT($command)LAUNCH EXTERNAL PROCESS($command)
C_TEXT($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
C_BLOB($in;$out;$err)LAUNCH EXTERNAL PROCESS($command;$in;$out;$err)
4Dから別アプリケーションを起動するコマンド同期モード 同期モード 同期モード
TEXT BLOB
LAUNCH EXTERNAL PROCESSプログラム起動
LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe")
LAUNCH EXTERNAL PROCESSプログラム起動
LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe")NG!!
LAUNCH EXTERNAL PROCESSプログラム起動
LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe")NG!!
LAUNCH EXTERNAL PROCESS("cmd.exe /C start \"\" "+\"C:\\WINDOWS\\notepad.exe")
OK!!
LAUNCH EXTERNAL PROCESSプログラム起動
LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe")NG!!
LAUNCH EXTERNAL PROCESS("cmd.exe /C start \"\" "+\"C:\\WINDOWS\\notepad.exe")
OK!!
http://technet.microsoft.com/en-us/library/bb491005.aspx
LAUNCH EXTERNAL PROCESSプログラム起動
$path:=System folder(Applications or Program Files)+"Calculator.app"$path:=Convert path system to POSIX($path)+/"Contents/MacOS/Calculator"
LAUNCH EXTERNAL PROCESS($path)
LAUNCH EXTERNAL PROCESSプログラム起動
$path:=System folder(Applications or Program Files)+"Calculator.app"$path:=Convert path system to POSIX($path)+/"Contents/MacOS/Calculator"
LAUNCH EXTERNAL PROCESS($path)
NG!!
LAUNCH EXTERNAL PROCESSプログラム起動
https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/open.1.html
LAUNCH EXTERNAL PROCESS("open "+\"/Applications/Calculator.app")
LAUNCH EXTERNAL PROCESSプログラム起動
https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/open.1.html
LAUNCH EXTERNAL PROCESS("open "+\"/Applications/Calculator.app")
POSIX path
LAUNCH EXTERNAL PROCESSプログラム起動
https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/open.1.html
LAUNCH EXTERNAL PROCESS("open "+\"/Applications/Calculator.app")
LAUNCH EXTERNAL PROCESS("open -a "+\"Calculator")
POSIX path
LAUNCH EXTERNAL PROCESSプログラム起動
https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/open.1.html
LAUNCH EXTERNAL PROCESS("open "+\"/Applications/Calculator.app")
LAUNCH EXTERNAL PROCESS("open -a "+\"Calculator")
LAUNCH EXTERNAL PROCESS("open -b "+\"com.apple.calculator")
POSIX path
LAUNCH EXTERNAL PROCESSプログラム起動
$path:=Convert path system to POSIX($path)OK!!
LAUNCH EXTERNAL PROCESSプログラム起動
$path:=Convert path system to POSIX($path)OK!!
$path:=Convert path system to POSIX($path;*)NG!!
LAUNCH EXTERNAL PROCESSプログラム起動
$path:=Convert path system to POSIX($path)OK!!
$path:=Convert path system to POSIX($path;*)NG!!
パーセントエンコーディング(URL)
LAUNCH EXTERNAL PROCESSエスケープ
$argument:=Convert path system to POSIX($path)
LAUNCH EXTERNAL PROCESSエスケープ
$argument:=Convert path system to POSIX($path)
$metacharacters:="\\!\"#$%&'()=~|<>?;*`[] "
For ($i;1;Length($metacharacters)) $metacharacter:=Substring($metacharacters;$i;1) $argument:=Replace string($argument;$metacharacter;"\\"+\ $metacharacter;*)End for
LAUNCH EXTERNAL PROCESSエスケープ
$shoudQuote:=False
$metacharacters:="&|<>()%^\" "
$len:=Length($metacharacters)
For ($i;1;$len) $metacharacter:=Substring($metacharacters;$i;1) $shoudQuote:=$shoudQuote|(Position($metacharacter;\ $argument;*)#0) If ($shoudQuote) $i:=$len End if End for
LAUNCH EXTERNAL PROCESSエスケープ
If ($shoudQuote) If (Substring($argument;Length($argument))="\\") $argument:="\""+$argument+"\\\"" Else $argument:="\""+$argument+"\"" End if End if
LAUNCH EXTERNAL PROCESSエスケープ
If ($shoudQuote) If (Substring($argument;Length($argument))="\\") $argument:="\""+$argument+"\\\"" Else $argument:="\""+$argument+"\"" End if End if
最後の文字が\だった場合(例: パス)エスケープをエスケープしないようにその文字をエスケープする
環境変数
• _4D_OPTION_CURRENT_DIRECTORY
• _4D_OPTION_HIDE_CONSOLE
• _4D_OPTION_BLOCKING_EXTERNAL_PROCESS
SET ENVIRONMENT VARIABLE
PHP Execute, _o_SET CGI EXECUTABLE
環境変数
• _4D_OPTION_CURRENT_DIRECTORY
• _4D_OPTION_HIDE_CONSOLE
• _4D_OPTION_BLOCKING_EXTERNAL_PROCESS
SET ENVIRONMENT VARIABLE
システムパスでカレントディレクトリを指定一部のプログラムは長いパスや空白が含まれるパスに対応していない
環境変数
• _4D_OPTION_CURRENT_DIRECTORY
• _4D_OPTION_HIDE_CONSOLE
• _4D_OPTION_BLOCKING_EXTERNAL_PROCESS
SET ENVIRONMENT VARIABLE
DOSのコンソールウィンドウを表示せずにコマンドを実行する
環境変数
• _4D_OPTION_CURRENT_DIRECTORY
• _4D_OPTION_HIDE_CONSOLE
• _4D_OPTION_BLOCKING_EXTERNAL_PROCESS
SET ENVIRONMENT VARIABLE
非同期モードで外部プログラムを起動したいとき
LAUNCH EXTERNAL PROCESSバッチファイル起動
LAUNCH EXTERNAL PROCESSバッチファイル起動
LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+\"toto.bat")
LAUNCH EXTERNAL PROCESSショートカット起動
LAUNCH EXTERNAL PROCESS("cmd.exe /C "+\"toto.lnk")
LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+\"toto.bat")
LAUNCH EXTERNAL PROCESSコンソールアプリケーション起動
LAUNCH EXTERNAL PROCESS("cmd.exe /C start "+\"toto.exe")
LAUNCH EXTERNAL PROCESS("cmd.exe /C "+\"toto.lnk")
LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+\"toto.bat")
LAUNCH EXTERNAL PROCESSコンソールアプリケーション起動
LAUNCH EXTERNAL PROCESS("cmd.exe /C start "+\"toto.exe")
LAUNCH EXTERNAL PROCESS("cmd.exe /C start \"\" "+\"C:\\WINDOWS\\notepad.exe")
比較
LAUNCH EXTERNAL PROCESS("cmd.exe /C "+\"toto.lnk")
LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+\"toto.bat")
LAUNCH EXTERNAL PROCESSシェルスクリプト起動
LAUNCH EXTERNAL PROCESSシェルスクリプト起動
LAUNCH EXTERNAL PROCESS("/bin/sh "+\"toto.sh")
LAUNCH EXTERNAL PROCESS
http://sources.4d.com/trac/4d_keisuke/wiki/Components
Open JTalk 日本語テキスト音声合成
7-Zip ファイルの圧縮・展開
cURL ネットワーク・クライアント
NKF 漢字コード変換
osascript
https://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html
オープン・スクリプティング・アーキテクチャ
ファイルコンパイルされたスクリプト(.scpt)
ファイル標準テキスト(.as, .applescript)
osascript
https://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html
オープン・スクリプティング・アーキテクチャ
ファイルコンパイルされたスクリプト(.scpt)
ファイル標準テキスト(.as, .applescript)
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/osascript.1.html#//apple_ref/doc/man/1/osascript
-e 1行のステートメント
-l 標準テキストをコンパイルするときのスクリプト言語
- 標準入力(stdIn)からスクリプトを受け取る
-s 出力スタイル(e, h, o, s)
osascript
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/osascript.1.html#//apple_ref/doc/man/1/osascript
-e 1行のステートメント
-l 標準テキストをコンパイルするときのスクリプト言語
- 標準入力(stdIn)からスクリプトを受け取る
-s 出力スタイル(e, h, o, s)
osascript
Convert to text
CONVERT FROM TEXT
UTF-8
エンコーディング
AppleScript
LAUNCH EXTERNAL PROCESS("osascript "+$path;\$in;$out;$err)
AppleScript
script parameters! to argument(variableName)! ! return do shell script ("iconv -f UTF-8 -t UTF-16|echo " & "$" & variableName)! end argumentend script
環境変数
AppleScript
cscript
http://technet.microsoft.com/ja-jp/library/bb490887.aspx
コマンドライン・スクリプティング・ホスト
言語
VBScript(.vbs)
言語 JScript(.js)言語
Windows Scripting File(.wsf)
cscript
http://technet.microsoft.com/ja-jp/library/bb490887.aspx
コマンドライン・スクリプティング・ホスト
言語
VBScript(.vbs)
言語 JScript(.js)言語
Windows Scripting File(.wsf)
cscript
http://technet.microsoft.com/ja-jp/library/bb490816.aspx
//B バッチ・モードで開始する
//D デバッガを起動する
//E: engine スクリプト言語を指定する
//H:cscript cscriptをデフォルトのホストに設定する
//H:wscript wscriptをデフォルトのホストに設定する
//I インタラクティブ・モードで開始する
//Job: xxxx .wsfファイル内の指定したジョブを実行する
//Logo 起動時のバナー・メッセージを表示する
//Nologo 起動時のバナー・メッセージを表示しない
//S コマンドプロンプト・オプションをセーブする
//T: nnnnn タイムアウトを設定する(単位: 秒)
//U Unicodeで入出力する
//X デバッガで開始する
//? ヘルプを表示する
cscript
http://technet.microsoft.com/ja-jp/library/bb490816.aspx
//B バッチ・モードで開始する
//D デバッガを起動する
//E: engine スクリプト言語を指定する
//H:cscript cscriptをデフォルトのホストに設定する
//H:wscript wscriptをデフォルトのホストに設定する
//I インタラクティブ・モードで開始する
//Job: xxxx .wsfファイル内の指定したジョブを実行する
//Logo 起動時のバナー・メッセージを表示する
//Nologo 起動時のバナー・メッセージを表示しない
//S コマンドプロンプト・オプションをセーブする
//T: nnnnn タイムアウトを設定する(単位: 秒)
//U Unicodeで入出力する
//X デバッガで開始する
//? ヘルプを表示する
SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true")LAUNCH EXTERNAL PROCESS("cscript //Nologo //U "+$path;\$in;$out;$err)
cscript
Convert to text
CONVERT FROM TEXT
UTF-16LEリトルエンディアン
エンコーディング
VBScript
VBScript
Function GETENV(variableName)!! Set objWshShell = WScript.CreateObject("WScript.Shell")! Set WshSysEnv = objWshShell.Environment("PROCESS")! GETENV = WshSysEnv(variableName)! Set objWshShell = Nothing
end Function
環境変数
VBScript
明示的に型変換CBool ブール型
CByte バイト型
CCur 通貨型
CDate 日付型
CDbl 倍精度浮動小数点実数型
CInt 整数型
CLng 長整数型
CSng 単精度浮動小数点実数型
CStr 文字列型
環境変数
VBScript
明示的に型変換CBool ブール型
CByte バイト型
CCur 通貨型
CDate 日付型
CDbl 倍精度浮動小数点実数型
CInt 整数型
CLng 長整数型
CSng 単精度浮動小数点実数型
CStr 文字列型
環境変数
VBScript
Set ObjSpVoice!! ! ! = CreateObject("SAPI.SpVoice")ObjSpVoice.Rate ! ! ! = CLng(GETENV("SPEAK_RATE"))ObjSpVoice.Volume ! ! = CLng(GETENV("SPEAK_VOLUME"))
ObjSpVoice.Speak GETENV("SPEAK_MESSAGE")
環境変数
LAUNCH EXTERNAL PROCESS