home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2003 April / VPR0304.ISO / OLS / UWSC27 / uwsc27.lzh / サンプル.UWS < prev   
Text File  |  2002-10-16  |  4KB  |  111 lines

  1. // MSAgentがあれば起動してみる
  2. agent()               // 下で関数化されている
  3.  
  4. // メモ帳 起動
  5. メモID = GETID("メモ帳", , 0.1)
  6. ifb メモID < 0               // 存在してなければ起動
  7.     メモID = EXEC("notepad", False, 200, 10, 400, 400)
  8. endif
  9. // フォントの変更
  10. ClkItem(メモID, "フォント", CLK_MENU or CLK_SHORT)
  11. fontid = GETID("フォント")
  12. ClkItem(fontid, "MS ゴシック", CLK_LIST)    // フォント名
  13. ClkItem(fontid, "太字", CLK_LIST)             // スタイル
  14. SendStr(fontid, "14", 3)                      // サイズ (もちClkItemでも可)
  15. ClkItem(fontid, "OK", CLK_BTN)
  16.  
  17. // 電卓 起動
  18. 電卓ID = EXEC("calc")
  19. ifb 電卓ID < 0 then
  20.     MsgBox("電卓が起動できませんでした")
  21.     Exit                                    // ダメであれば終了
  22. endif
  23. 計算式 = "123456789*10="
  24. SendStr(電卓ID, 計算式)                     // 電卓で計算
  25. SendStr(メモID, 計算式)
  26. Sleep(0.5)
  27. ifb KINDOFOS() = 13     // Windows XP
  28.    wks = GetStr(電卓ID, 1, 0)    // エデット
  29. else 
  30.    wks = GetStr(電卓ID, 1, 1)  // スタテック
  31. endif
  32.  
  33. SendStr(メモID, wks+"<#CR>")
  34.  
  35. // 電卓回す
  36. SendStr(メモID, "電卓をグルグル回してみる<#CR>")
  37. ifb MsgBox("回してみます?", BTN_YES or BTN_NO) = BTN_YES
  38.     ifb 音楽を入れるか()
  39.         ifb KINDOFOS() = 13     // Windows XP
  40.             musicnm = "flourish.mid"
  41.         else
  42.             musicnm = "canyon.mid"
  43.         endif
  44.         FUKIDASI("読み込む中...", 100, 100)
  45.         Sound(musicnm)   // バックミュージック
  46.         FUKIDASI()
  47.     endif
  48.     for 回数 = 1 to 3
  49.         廻れ廻れ(回数, 電卓ID)
  50.     next
  51. else
  52.     FUKIDASI("それは残念", 100, 100, 0, 14)
  53.     Sleep(3)
  54. endif
  55.  
  56. // 終了処理
  57. Sound()                 // SOUND OFF
  58. FUKIDASI()                          // 吹出しOFF
  59. CtrlWin(電卓ID, CLOSE)              // 電卓終了
  60. SendStr(メモID, "終了~")
  61. Sleep(1)
  62. CtrlWin(メモID, CLOSE)              // メモ終了
  63. Sleep(1)
  64. ClkItem(GETID("メモ帳"), "いいえ")  // 保存はしない
  65. // メイン処理はここまでになる(関数の前まで)
  66.  
  67.  
  68. // 以下 関数(サブルーチン)
  69.  
  70. // 電卓を廻す
  71. Procedure 廻れ廻れ(回数, ID)
  72.    if 回数 = 2 then FUKIDASI("いつもより余計に回しています<#cr>バチバチバチ"_
  73.                  , 100, 40, 3, 14)                // _により前行と繋がっている
  74.    DIM 選択メニュ[2] = "普通の電卓", "関数電卓"   // 変数の配列宣言
  75.    ClkItem(ID, 選択メニュ[回数 mod 2])            // メニュ選択
  76.    call grugru                                    // grugru.uws を実行
  77. fend
  78.  
  79. // 指定キーが押されたらTrueを返す
  80. Function 音楽を入れるか()
  81.    Result = False                // 戻り値
  82.    moji = "音楽を入れますか? Yesなら5秒以内にスペースキーを叩いてね "
  83.    sv_tm = GetTime()
  84.    while GetTime()-sv_tm < 5             // 5秒まで待つ
  85.        wk_sec = 5 - (GetTime()-sv_tm)
  86.        FUKIDASI(moji + wk_sec, 100, 100, 0, 14)
  87.        ifb GETKEYSTATE(VK_SPACE)        // スペースキー チェック
  88.         Result = True                // 戻り値=True
  89.       break
  90.        endif
  91.        sleep(0.2)
  92.    wend
  93.    FUKIDASI()                          // 吹出しOFF
  94. fend
  95.  
  96. // MSAgent と SpeechEngine を利用
  97. Procedure agent()
  98.    キャラ = "Merlin"             // キャラクタ に Merlin を選択
  99.    ss = GET_WIN_DIR + "\msagent\chars\" + キャラ +".acs"
  100.    if ! FOPEN(ss, F_EXISTS) then exit      // 見つからない
  101.    public obj_agt                          // 関数を抜けても維持するように
  102.    obj_agt = CreateOLEObj("Agent.Control.1")   // COM
  103.    obj_agt.Connected=True
  104.    obj_agt.Characters.Load(キャラ, ss)
  105.    agt = obj_agt.Characters(キャラ)
  106.    agt.show
  107.    agt.Play("Greet")
  108.    agt.speak("回してみます?")
  109. Fend
  110.  
  111.