home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2002 December (Special) / DOSV2002_12.iso / utility / uwsc26a.lzh / サンプル.UWS < prev   
Text File  |  2002-04-23  |  4KB  |  110 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. ClkItem(GETID("メモ帳"), "いいえ")  // 保存はしない
  64. // メイン処理はここまでになる(関数の前まで)
  65.  
  66.  
  67. // 以下 関数(サブルーチン)
  68.  
  69. // 電卓を廻す
  70. Procedure 廻れ廻れ(回数, ID)
  71.    if 回数 = 2 then FUKIDASI("いつもより余計に回しています<#cr>バチバチバチ"_
  72.                  , 100, 40, 3, 14)                // _により前行と繋がっている
  73.    DIM 選択メニュ[2] = "普通の電卓", "関数電卓"   // 変数の配列宣言
  74.    ClkItem(ID, 選択メニュ[回数 mod 2])            // メニュ選択
  75.    call grugru                                    // grugru.uws を実行
  76. fend
  77.  
  78. // 指定キーが押されたらTrueを返す
  79. Function 音楽を入れるか()
  80.    Result = False                // 戻り値
  81.    moji = "音楽を入れますか? Yesなら5秒以内にスペースキーを叩いてね "
  82.    sv_tm = GetTime()
  83.    while GetTime()-sv_tm < 5             // 5秒まで待つ
  84.        wk_sec = 5 - (GetTime()-sv_tm)
  85.        FUKIDASI(moji + wk_sec, 100, 100, 0, 14)
  86.        ifb GETKEYSTATE(VK_SPACE)        // スペースキー チェック
  87.         Result = True                // 戻り値=True
  88.       break
  89.        endif
  90.        sleep(0.2)
  91.    wend
  92.    FUKIDASI()                          // 吹出しOFF
  93. fend
  94.  
  95. // MSAgent と SpeechEngine を利用
  96. Procedure agent()
  97.    キャラ = "Merlin"             // キャラクタ に Merlin を選択
  98.    ss = GET_WIN_DIR + "\msagent\chars\" + キャラ +".acs"
  99.    if ! FOPEN(ss, F_EXISTS) then exit      // 見つからない
  100.    public obj_agt                          // 関数を抜けても維持するように
  101.    obj_agt = CreateOLEObj("Agent.Control.1")   // COM
  102.    obj_agt.Connected=True
  103.    obj_agt.Characters.Load(キャラ, ss)
  104.    agt = obj_agt.Characters(キャラ)
  105.    agt.show
  106.    agt.Play("Greet")
  107.    agt.speak("回してみます?")
  108. Fend
  109.  
  110.