Your SlideShare is downloading. ×
Lep 2013-07-23
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Lep 2013-07-23

7,916
views

Published on

sample database posted on GitHub: …

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
7,916
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. LAUNCH EXTERNAL PROCESS
  • 2. LAUNCH EXTERNAL PROCESS
  • 3. LAUNCH EXTERNAL PROCESS 4Dから別アプリケーションを起動するコマンド
  • 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. 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. 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. 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. LAUNCH EXTERNAL PROCESS プログラム起動 LAUNCH EXTERNAL PROCESS("C:WINDOWSnotepad.exe")
  • 9. LAUNCH EXTERNAL PROCESS プログラム起動 LAUNCH EXTERNAL PROCESS("C:WINDOWSnotepad.exe") NG!!
  • 10. LAUNCH EXTERNAL PROCESS プログラム起動 LAUNCH EXTERNAL PROCESS("C:WINDOWSnotepad.exe") NG!! LAUNCH EXTERNAL PROCESS("cmd.exe /C start "" "+ "C:WINDOWSnotepad.exe") OK!!
  • 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. 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. 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. 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. 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. 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. 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. LAUNCH EXTERNAL PROCESS プログラム起動 $path:=Convert path system to POSIX($path) OK!!
  • 19. LAUNCH EXTERNAL PROCESS プログラム起動 $path:=Convert path system to POSIX($path) OK!! $path:=Convert path system to POSIX($path;*) NG!!
  • 20. LAUNCH EXTERNAL PROCESS プログラム起動 $path:=Convert path system to POSIX($path) OK!! $path:=Convert path system to POSIX($path;*) NG!! パーセントエンコーディング(URL)
  • 21. LAUNCH EXTERNAL PROCESS エスケープ $argument:=Convert path system to POSIX($path)
  • 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. 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. LAUNCH EXTERNAL PROCESS エスケープ If ($shoudQuote) If (Substring($argument;Length($argument))="") $argument:="""+$argument+""" Else $argument:="""+$argument+""" End if End if
  • 25. LAUNCH EXTERNAL PROCESS エスケープ If ($shoudQuote) If (Substring($argument;Length($argument))="") $argument:="""+$argument+""" Else $argument:="""+$argument+""" End if End if 最後の文字がだった場合(例: パス) エスケープをエスケープしないようにその文字をエスケープする
  • 26. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE PHP Execute, _o_SET CGI EXECUTABLE
  • 27. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE システムパスでカレントディレクトリを指定 一部のプログラムは長いパスや空白が含まれるパスに対応していない
  • 28. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE DOSのコンソールウィンドウを表示せずにコマンドを実行する
  • 29. 環境変数 • _4D_OPTION_CURRENT_DIRECTORY • _4D_OPTION_HIDE_CONSOLE • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS SET ENVIRONMENT VARIABLE 非同期モードで外部プログラムを起動したいとき
  • 30. LAUNCH EXTERNAL PROCESS バッチファイル起動
  • 31. LAUNCH EXTERNAL PROCESS バッチファイル起動 LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+ "toto.bat")
  • 32. LAUNCH EXTERNAL PROCESS ショートカット起動 LAUNCH EXTERNAL PROCESS("cmd.exe /C "+ "toto.lnk") LAUNCH EXTERNAL PROCESS("cmd.exe /C start /B "+ "toto.bat")
  • 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. 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. LAUNCH EXTERNAL PROCESS シェルスクリプト起動
  • 36. LAUNCH EXTERNAL PROCESS シェルスクリプト起動 LAUNCH EXTERNAL PROCESS("/bin/sh "+ "toto.sh")
  • 37. LAUNCH EXTERNAL PROCESS http://sources.4d.com/trac/4d_keisuke/wiki/Components Open JTalk 日本語テキスト音声合成 7-Zip ファイルの圧縮・展開 cURL ネットワーク・クライアント NKF 漢字コード変換
  • 38. osascript https://developer.apple.com/library/mac/#documentation/AppleScript/ Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html オープン・スクリプティング・アーキテクチャ ファイル コンパイルされたスクリプト(.scpt) ファイル 標準テキスト(.as, .applescript)
  • 39. osascript https://developer.apple.com/library/mac/#documentation/AppleScript/ Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html オープン・スクリプティング・アーキテクチャ ファイル コンパイルされたスクリプト(.scpt) ファイル 標準テキスト(.as, .applescript)
  • 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. 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. Convert to text CONVERT FROM TEXT UTF-8 エンコーディング AppleScript
  • 43. LAUNCH EXTERNAL PROCESS("osascript "+$path; $in;$out;$err) AppleScript
  • 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. cscript http://technet.microsoft.com/ja-jp/library/bb490887.aspx コマンドライン・スクリプティング・ホスト 言語 VBScript(.vbs) 言語 JScript(.js)言語 Windows Scripting File(.wsf)
  • 46. cscript http://technet.microsoft.com/ja-jp/library/bb490887.aspx コマンドライン・スクリプティング・ホスト 言語 VBScript(.vbs) 言語 JScript(.js)言語 Windows Scripting File(.wsf)
  • 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. 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. SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true") LAUNCH EXTERNAL PROCESS("cscript //Nologo //U "+$path; $in;$out;$err) cscript
  • 50. Convert to text CONVERT FROM TEXT UTF-16LE リトルエンディアン エンコーディング VBScript
  • 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. VBScript 明示的に型変換 CBool ブール型 CByte バイト型 CCur 通貨型 CDate 日付型 CDbl 倍精度浮動小数点実数型 CInt 整数型 CLng 長整数型 CSng 単精度浮動小数点実数型 CStr 文字列型 環境変数
  • 53. VBScript 明示的に型変換 CBool ブール型 CByte バイト型 CCur 通貨型 CDate 日付型 CDbl 倍精度浮動小数点実数型 CInt 整数型 CLng 長整数型 CSng 単精度浮動小数点実数型 CStr 文字列型 環境変数
  • 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. LAUNCH EXTERNAL PROCESS