Lep 2013-07-23

8,122 views
8,034 views

Published on

sample database posted on GitHub:

https://github.com/miyako/4d-training-lep

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
8,122
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lep 2013-07-23

  1. 1. LAUNCH EXTERNAL PROCESS
  2. 2. LAUNCH EXTERNAL PROCESS
  3. 3. LAUNCH EXTERNAL PROCESS 4Dから別アプリケーションを起動するコマンド
  4. 4. 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から別アプリケーションを起動するコマンド 同期モード 同期モード 同期モード テキスト バイナリ
  5. 5. 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 バイナリ
  6. 6. 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
  7. 7. 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
  8. 8. LAUNCH EXTERNAL PROCESS プログラム起動 LAUNCH EXTERNAL PROCESS("C:WINDOWSnotepad.exe")
  9. 9. LAUNCH EXTERNAL PROCESS プログラム起動 LAUNCH EXTERNAL PROCESS("C:WINDOWSnotepad.exe") NG!!
  10. 10. LAUNCH EXTERNAL PROCESS プログラム起動 LAUNCH EXTERNAL PROCESS("C:WINDOWSnotepad.exe") NG!! LAUNCH EXTERNAL PROCESS("cmd.exe /C start "" "+ "C:WINDOWSnotepad.exe") OK!!
  11. 11. LAUNCH EXTERNAL PROCESS プログラム起動 LAUNCH EXTERNAL PROCESS("C:WINDOWSnotepad.exe") NG!! LAUNCH EXTERNAL PROCESS("cmd.exe /C start "" "+ "C:WINDOWSnotepad.exe") OK!! http://technet.microsoft.com/en-us/library/bb491005.aspx
  12. 12. 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)
  13. 13. 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!!
  14. 14. LAUNCH EXTERNAL PROCESS プログラム起動 https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/ man1/open.1.html LAUNCH EXTERNAL PROCESS("open "+ "/Applications/Calculator.app")
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. LAUNCH EXTERNAL PROCESS プログラム起動 $path:=Convert path system to POSIX($path) OK!!
  19. 19. LAUNCH EXTERNAL PROCESS プログラム起動 $path:=Convert path system to POSIX($path) OK!! $path:=Convert path system to POSIX($path;*) NG!!
  20. 20. LAUNCH EXTERNAL PROCESS プログラム起動 $path:=Convert path system to POSIX($path) OK!! $path:=Convert path system to POSIX($path;*) NG!! パーセントエンコーディング(URL)
  21. 21. LAUNCH EXTERNAL PROCESS エスケープ $argument:=Convert path system to POSIX($path)
  22. 22. 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
  23. 23. 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
  24. 24. LAUNCH EXTERNAL PROCESS エスケープ If ($shoudQuote) If (Substring($argument;Length($argument))="") $argument:="""+$argument+""" Else $argument:="""+$argument+""" End if End if
  25. 25. LAUNCH EXTERNAL PROCESS エスケープ If ($shoudQuote) If (Substring($argument;Length($argument))="") $argument:="""+$argument+""" Else $argument:="""+$argument+""" End if End if 最後の文字がだった場合(例: パス) エスケープをエスケープしないようにその文字をエスケープする
  26. 26. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE PHP Execute, _o_SET CGI EXECUTABLE
  27. 27. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE システムパスでカレントディレクトリを指定 一部のプログラムは長いパスや空白が含まれるパスに対応していない
  28. 28. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE DOSのコンソールウィンドウを表示せずにコマンドを実行する
  29. 29. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE 非同期モードで外部プログラムを起動したいとき
  30. 30. LAUNCH EXTERNAL PROCESS バッチファイル起動
  31. 31. LAUNCH EXTERNAL PROCESS バッチファイル起動 LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+ "toto.bat")
  32. 32. LAUNCH EXTERNAL PROCESS ショートカット起動 LAUNCH EXTERNAL PROCESS("cmd.exe /C "+ "toto.lnk") LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+ "toto.bat")
  33. 33. 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")
  34. 34. LAUNCH EXTERNAL PROCESS コンソールアプリケーション起動 LAUNCH EXTERNAL PROCESS("cmd.exe /C start "+ "toto.exe") LAUNCH EXTERNAL PROCESS("cmd.exe /C start "" "+ "C:WINDOWSnotepad.exe") 比較 LAUNCH EXTERNAL PROCESS("cmd.exe /C "+ "toto.lnk") LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+ "toto.bat")
  35. 35. LAUNCH EXTERNAL PROCESS シェルスクリプト起動
  36. 36. LAUNCH EXTERNAL PROCESS シェルスクリプト起動 LAUNCH EXTERNAL PROCESS("/bin/sh "+ "toto.sh")
  37. 37. LAUNCH EXTERNAL PROCESS http://sources.4d.com/trac/4d_keisuke/wiki/Components Open JTalk 日本語テキスト音声合成 7-Zip ファイルの圧縮・展開 cURL ネットワーク・クライアント NKF 漢字コード変換
  38. 38. osascript https://developer.apple.com/library/mac/#documentation/AppleScript/ Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html オープン・スクリプティング・アーキテクチャ ファイル コンパイルされたスクリプト(.scpt) ファイル 標準テキスト(.as, .applescript)
  39. 39. osascript https://developer.apple.com/library/mac/#documentation/AppleScript/ Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html オープン・スクリプティング・アーキテクチャ ファイル コンパイルされたスクリプト(.scpt) ファイル 標準テキスト(.as, .applescript)
  40. 40. 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
  41. 41. 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
  42. 42. Convert to text CONVERT FROM TEXT UTF-8 エンコーディング AppleScript
  43. 43. LAUNCH EXTERNAL PROCESS("osascript "+$path; $in;$out;$err) AppleScript
  44. 44. script parameters ! to argument(variableName) ! ! return do shell script ("iconv -f UTF-8 -t UTF-16|echo " & "$" & variableName) ! end argument end script 環境変数 AppleScript
  45. 45. cscript http://technet.microsoft.com/ja-jp/library/bb490887.aspx コマンドライン・スクリプティング・ホスト 言語 VBScript(.vbs) 言語 JScript(.js)言語 Windows Scripting File(.wsf)
  46. 46. cscript http://technet.microsoft.com/ja-jp/library/bb490887.aspx コマンドライン・スクリプティング・ホスト 言語 VBScript(.vbs) 言語 JScript(.js)言語 Windows Scripting File(.wsf)
  47. 47. 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 デバッガで開始する //? ヘルプを表示する
  48. 48. 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 デバッガで開始する //? ヘルプを表示する
  49. 49. SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true") LAUNCH EXTERNAL PROCESS("cscript //Nologo //U "+$path; $in;$out;$err) cscript
  50. 50. Convert to text CONVERT FROM TEXT UTF-16LE リトルエンディアン エンコーディング VBScript
  51. 51. VBScript Function GETENV(variableName) ! ! Set objWshShell = WScript.CreateObject("WScript.Shell") ! Set WshSysEnv = objWshShell.Environment("PROCESS") ! GETENV = WshSysEnv(variableName) ! Set objWshShell = Nothing end Function 環境変数
  52. 52. VBScript 明示的に型変換 CBool ブール型 CByte バイト型 CCur 通貨型 CDate 日付型 CDbl 倍精度浮動小数点実数型 CInt 整数型 CLng 長整数型 CSng 単精度浮動小数点実数型 CStr 文字列型 環境変数
  53. 53. VBScript 明示的に型変換 CBool ブール型 CByte バイト型 CCur 通貨型 CDate 日付型 CDbl 倍精度浮動小数点実数型 CInt 整数型 CLng 長整数型 CSng 単精度浮動小数点実数型 CStr 文字列型 環境変数
  54. 54. VBScript Set ObjSpVoice!! ! ! = CreateObject("SAPI.SpVoice") ObjSpVoice.Rate ! ! ! = CLng(GETENV("SPEAK_RATE")) ObjSpVoice.Volume ! ! = CLng(GETENV("SPEAK_VOLUME")) ObjSpVoice.Speak GETENV("SPEAK_MESSAGE") 環境変数
  55. 55. LAUNCH EXTERNAL PROCESS

×