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 >
Wrap
Text File
|
1996-08-21
|
5KB
|
166 lines
@batchwnd off
@executewnd off
:/ --------------------------------------------------------------
:/ WinBatchEhサンプルバッチ - TESTCALC.BTW
:/ 電卓に計算をさせてみる
:/
:/ Author : Yohei Shimizu
:/ Version: 1.2e
:/ Date : 1996/08/21
:/
:/ History: 1.0 1995/05/24
:/ Initial Version
:/ 1.1 1995/06/23
:/ 終了時電卓が画面から逃げて消えるようにした
:/ WM_CHARで送るようにしてコマンドを送るのをやめた
:/ WinBatchEh 1.03 の機能を使用するようにした
:/ 1.2 1995/08/05
:/ 計算結果を自動で判断できるようにしてみた
:/ 1.2a 1995/10/13
:/ Windows 3.1以外でもちゃんと動くようにした
:/ 1.2b 1996/07/11
:/ クリップボードからの転送時にWAITを入れた(WinNT用)
:/ 1.2c 1996/07/21
:/ バッチ内容表示ウィンドウがちらっと出るのを修正
:/ 1.2d 1996/07/27
:/ 数値の代入に LET コマンドを使うようにした
:/ 1.2e 1996/08/21
:/ コメント文章の誤りの修正
:/ --------------------------------------------------------------
:/ WinBatchEhのバージョンのチェック
:/ バージョン 1.01 以前ではgetversionがサポートされてないので先にERRORLEVEL
:/ に入れておく
set ERRORLEVEL=101
getversion
if not ERRORLEVEL 118
messagebox このバッチを動作させるには WinBatchEh バージョン 1.18 以降を使用してください.
exit
endif
messagebox=MB_YESNOCANCEL+MB_FORMAT 電卓を使用したサンプルです.\n電卓の計算結果をバッチ自身で自動的に判断させますか?
if %ERRORLEVEL%==IDCANCEL exit
set AUTOCHK=%ERRORLEVEL%
:/ 電卓が起動してなければ起動
if not existwindow "電卓" start calc.exe
:/ 電卓がちゃんと起動されるのを待つ
while not existwindow "電卓"
endwhile
:/ 例の計算-1 4195835/3145727*3145727
messagebox=MB_FORMAT お使いのCPUが正確かどうかを判断します.\n計算としては4195835/3145727*3145727を行ないます.
for %%a in (4 1 9 5 8 3 5 /) do postmessage "電卓" WM_CHAR '%%a'
for %%a in (3 1 4 5 7 2 7) do postmessage "電卓" WM_CHAR '%%a'
:/ '*' はfor文ではファイル名指定になるので分けて送る
postmessage "電卓" WM_CHAR '*'
for %%a in (3 1 4 5 7 2 7 =) do postmessage "電卓" WM_CHAR '%%a'
if %AUTOCHK%==IDNO
messagebox=MB_YESNO 計算結果は4195835ですか?
if %ERRORLEVEL%==IDYES
messagebox あなたのCPUは正確です(^_^).
else
messagebox あなたのCPUはPentiumでバグがあります(;_;).
endif
else
:/ CTRL-Cでクリップボードに電卓から計算結果を転送
:/ postmessageがまだ終わってない可能性があるので転送されるまでループする
setclipboard DUMMY
:LOOP10
postmessage "電卓" WM_CHAR 0x03
:/ 念のためsleeptimeでちょっと一息
sleeptime 1
:LOOP11
getclipboard ANS
if %ANS%.==. goto LOOP10
if %ANS%.==DUMMY. goto LOOP11
if %ANS%.==4195835.
messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCPUは正確です(^_^).
else
messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCPUは多分Pentiumでバグがあります(;_;).
endif
endif
:/ 例の計算-2 10.01-10
messagebox=MB_FORMAT お使いの電卓が最新版かどうかを判断します.\n計算としては10.01-10を行ないます.
for %%a in (1 0 . 0 1 - 1 0 =) do postmessage "電卓" WM_CHAR '%%a'
if %AUTOCHK%==IDNO
messagebox=MB_YESNO 計算結果は 0.01 ですか?
if %ERRORLEVEL%==IDYES
messagebox あなたのCALC.EXEは最新です(^_^).
else
messagebox あなたのCALC.EXEは古いです(;_;).
endif
else
:/ CTRL-Cでクリップボードに電卓から計算結果を転送
:/ postmessageがまだ終わってない可能性があるので転送されるまでループする
setclipboard DUMMY
:LOOP20
postmessage "電卓" WM_CHAR 0x03
:/ 念のためsleeptimeでちょっと一息
sleeptime 1
:LOOP21
getclipboard ANS
if %ANS%.==. goto LOOP20
if %ANS%.==DUMMY. goto LOOP21
if %ANS%.==0.01.
messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCALC.EXEは最新です(^_^).
else
messagebox=MB_FORMAT 計算結果は%ANS%でした.\nあなたのCALC.EXEは古いです(;_;).
endif
endif
messagebox 終了します
:/ 電卓をフェードアウト(?)させる
:/ 移動させる範囲の取得
:/ 電卓の大きさを取得
getwindow "電卓" X Y R B
:/ デスクトップ(全画面)の大きさを取得
getwindow @Desktop DX DY DR DB
let MAX_Y=%DB%-%B%
:/ 移動するループ(GOTOのループでもいいけどこういうときはWHILEの方が速い)
let LOOPFLAG=1
let CY=0
let SY=1
while %LOOPFLAG%
let X=X+16
if %SY%==1
:/ 下に移動
let Y=Y+CY
let CY=CY+4
let ERRORLEVEL=Y
if ERRORLEVEL %MAX_Y%
let SY=0
let CY=CY-16
let Y=MAX_Y
endif
else
:/ 上に移動
let Y=Y-CY
let CY=CY-4
if %CY%==0
let SY=1
endif
endif
setwindow "電卓" X Y
:/ 画面の右端を越えたら終わり
let ERRORLEVEL=X
if ERRORLEVEL %DR% let LOOPFLAG=0
endwhile
:QUIT
:/ WM_QUITメッセージを送って終了させる
postmessage "電卓" WM_QUIT