home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 July / VPR9707A.ISO / OLS / Win32 / Wbat128p / WBAT128P.LZH / SAMPLE / TESTCALC.BTW < prev    next >
Text File  |  1996-08-21  |  5KB  |  166 lines

  1. @batchwnd off
  2. @executewnd off
  3. :/    --------------------------------------------------------------
  4. :/    WinBatchEhサンプルバッチ - TESTCALC.BTW
  5. :/    電卓に計算をさせてみる
  6. :/
  7. :/    Author : Yohei Shimizu
  8. :/    Version: 1.2e
  9. :/    Date   : 1996/08/21
  10. :/
  11. :/    History: 1.0    1995/05/24
  12. :/            Initial Version
  13. :/         1.1    1995/06/23
  14. :/            終了時電卓が画面から逃げて消えるようにした
  15. :/            WM_CHARで送るようにしてコマンドを送るのをやめた
  16. :/            WinBatchEh 1.03 の機能を使用するようにした
  17. :/         1.2    1995/08/05
  18. :/            計算結果を自動で判断できるようにしてみた
  19. :/         1.2a    1995/10/13
  20. :/            Windows 3.1以外でもちゃんと動くようにした
  21. :/         1.2b    1996/07/11
  22. :/            クリップボードからの転送時にWAITを入れた(WinNT用)
  23. :/         1.2c    1996/07/21
  24. :/            バッチ内容表示ウィンドウがちらっと出るのを修正
  25. :/         1.2d    1996/07/27
  26. :/            数値の代入に LET コマンドを使うようにした
  27. :/         1.2e    1996/08/21
  28. :/            コメント文章の誤りの修正
  29. :/    --------------------------------------------------------------
  30.  
  31. :/ WinBatchEhのバージョンのチェック
  32. :/ バージョン 1.01 以前ではgetversionがサポートされてないので先にERRORLEVEL
  33. :/ に入れておく
  34. set ERRORLEVEL=101
  35. getversion
  36. if not ERRORLEVEL 118
  37.   messagebox このバッチを動作させるには WinBatchEh バージョン 1.18 以降を使用してください.
  38.   exit
  39. endif
  40.  
  41. messagebox=MB_YESNOCANCEL+MB_FORMAT 電卓を使用したサンプルです.\n電卓の計算結果をバッチ自身で自動的に判断させますか?
  42. if %ERRORLEVEL%==IDCANCEL exit
  43. set AUTOCHK=%ERRORLEVEL%
  44.  
  45.  
  46. :/ 電卓が起動してなければ起動
  47. if not existwindow "電卓" start calc.exe
  48.  
  49. :/ 電卓がちゃんと起動されるのを待つ
  50. while not existwindow "電卓"
  51. endwhile
  52.  
  53.  
  54. :/ 例の計算-1 4195835/3145727*3145727
  55. messagebox=MB_FORMAT お使いのCPUが正確かどうかを判断します.\n計算としては4195835/3145727*3145727を行ないます.
  56.  
  57. for %%a in (4 1 9 5 8 3 5 /) do postmessage "電卓" WM_CHAR '%%a'
  58. for %%a in (3 1 4 5 7 2 7) do postmessage "電卓" WM_CHAR '%%a'
  59. :/ '*' はfor文ではファイル名指定になるので分けて送る
  60. postmessage "電卓" WM_CHAR '*'
  61. for %%a in (3 1 4 5 7 2 7 =) do postmessage "電卓" WM_CHAR '%%a'
  62. if %AUTOCHK%==IDNO
  63.   messagebox=MB_YESNO 計算結果は4195835ですか?
  64.   if %ERRORLEVEL%==IDYES 
  65.     messagebox あなたのCPUは正確です(^_^).
  66.   else
  67.     messagebox あなたのCPUはPentiumでバグがあります(;_;).
  68.   endif
  69. else
  70.   :/ CTRL-Cでクリップボードに電卓から計算結果を転送
  71.   :/ postmessageがまだ終わってない可能性があるので転送されるまでループする
  72.   setclipboard DUMMY
  73.   :LOOP10
  74.   postmessage "電卓" WM_CHAR 0x03
  75.   :/ 念のためsleeptimeでちょっと一息
  76.   sleeptime 1
  77.   :LOOP11
  78.   getclipboard ANS
  79.   if %ANS%.==. goto LOOP10
  80.   if %ANS%.==DUMMY. goto LOOP11
  81.   if %ANS%.==4195835.
  82.     messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCPUは正確です(^_^).
  83.   else
  84.     messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCPUは多分Pentiumでバグがあります(;_;).
  85.   endif
  86. endif
  87.  
  88.  
  89. :/ 例の計算-2 10.01-10
  90. messagebox=MB_FORMAT お使いの電卓が最新版かどうかを判断します.\n計算としては10.01-10を行ないます.
  91.  
  92. for %%a in (1 0 . 0 1 - 1 0 =) do postmessage "電卓" WM_CHAR '%%a'
  93. if %AUTOCHK%==IDNO
  94.   messagebox=MB_YESNO 計算結果は 0.01 ですか?
  95.   if %ERRORLEVEL%==IDYES 
  96.     messagebox あなたのCALC.EXEは最新です(^_^).
  97.   else
  98.     messagebox あなたのCALC.EXEは古いです(;_;).
  99.   endif
  100. else
  101.   :/ CTRL-Cでクリップボードに電卓から計算結果を転送
  102.   :/ postmessageがまだ終わってない可能性があるので転送されるまでループする
  103.   setclipboard DUMMY
  104.   :LOOP20
  105.   postmessage "電卓" WM_CHAR 0x03
  106.   :/ 念のためsleeptimeでちょっと一息
  107.   sleeptime 1
  108.   :LOOP21
  109.   getclipboard ANS
  110.   if %ANS%.==. goto LOOP20
  111.   if %ANS%.==DUMMY. goto LOOP21
  112.   if %ANS%.==0.01.
  113.     messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCALC.EXEは最新です(^_^).
  114.   else
  115.     messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCALC.EXEは古いです(;_;).
  116.   endif
  117. endif
  118.  
  119.  
  120. messagebox 終了します
  121.  
  122.  
  123. :/ 電卓をフェードアウト(?)させる
  124.  
  125. :/ 移動させる範囲の取得
  126.  :/ 電卓の大きさを取得
  127. getwindow "電卓" X Y R B
  128.  :/ デスクトップ(全画面)の大きさを取得
  129. getwindow @Desktop DX DY DR DB
  130. let MAX_Y=%DB%-%B%
  131.  
  132. :/ 移動するループ(GOTOのループでもいいけどこういうときはWHILEの方が速い)
  133. let LOOPFLAG=1
  134. let CY=0
  135. let SY=1
  136. while %LOOPFLAG%
  137.   let X=X+16
  138.   if %SY%==1
  139.     :/ 下に移動
  140.     let Y=Y+CY
  141.     let CY=CY+4
  142.     let ERRORLEVEL=Y
  143.     if ERRORLEVEL %MAX_Y%
  144.       let SY=0
  145.       let CY=CY-16
  146.       let Y=MAX_Y
  147.     endif
  148.   else
  149.     :/ 上に移動
  150.     let Y=Y-CY
  151.     let CY=CY-4
  152.     if %CY%==0
  153.       let SY=1
  154.     endif
  155.   endif
  156.   setwindow "電卓" X Y
  157.   
  158.   :/ 画面の右端を越えたら終わり
  159.   let ERRORLEVEL=X
  160.   if ERRORLEVEL %DR% let LOOPFLAG=0
  161. endwhile
  162.  
  163. :QUIT
  164. :/ WM_QUITメッセージを送って終了させる
  165. postmessage "電卓" WM_QUIT
  166.