
update 2008/09/02
一部Windowsのバージョンによって 変更が必要な場合があるかもしれません
UWSCサンプル
// 記録保存したスクリプトをループで実行
// 無限ループ
While True
Call xxxx.uws // xxxx.uws 記録保存したスクリプト名
Sleep(10) // 10秒の間を取る
Wend
// 10回ループ
for 回数 = 1 to 10
Call xxxx.uws // xxxx.uws 記録保存したスクリプト名
print 回数
next
// 関数(サブルーチン)の使用
public G = 0 // グローバル変数
public 配列[10] // 変数名 2バイト文字でもOK
a = 0 // ローカル変数
b = 0
c = 計算(a, b)
TETUZUKI()
print a + ", " + b + ", " + c + ", " + G + ", " + 配列[9] // 0, 2, 3, 99, 9
// Mainプログラムはここで終わり(関数定義の前までになる)
// 戻り値あり
function 計算(ka, var kb) // 関数名 2バイト文字でもOK
ka = 1
kb = 2 // Var宣言により引数の値が変更され返される
G = 99 // グローバル変数
Result = ka + kb // 関数の戻り値は Result変数
fend
// 戻り値なし
Procedure TETUZUKI()
for i = 0 TO 9
配列[i] = i
next
fend
// 開いているウインドウを全て閉じる
for i = 0 to GETALLWIN()-1 // 全てのウインドウIDをゲット(ALL_WIN_ID[]変数に入る)
if STATUS(ALL_WIN_ID[i], ST_CLASS) = "Shell_TrayWnd" then Continue // タスクバーはスキップ
if STATUS(ALL_WIN_ID[i], ST_VISIBLE) then CTRLWIN(ALL_WIN_ID[i], CLOSE)
next
// 表示中のエクスプローラからファイル情報を読み取る
id = GETID("", "CabinetWClass") // 表示中のエクスプローラ
SCKEY(id, VK_ALT, VK_V, VK_D) // 表示 -> 詳細
dim カラム名[3]
GETITEM(id, ITM_LSTVEW, 1, -1) // カラム名取得
for x = 0 to 2; カラム名[x] = ALL_ITEM_LIST[x]; next
for 列 = 0 to 2 // 列
print カラム名[列]
kz = GETITEM(id, ITM_LSTVEW, 1, 列+1)
for x = 0 to kz-1; print " "+ALL_ITEM_LIST[x]; next
next
// エクスプローラのファイルを右クリック、ポップアップメニューから選択
id = GETID("", "CabinetWClass") // 表示中のエクスプローラ
ClkItem(id, "表示", CLK_TOOLBAR) // ツールバーメニューの'表示'
popupid = GETID("","#32768") // ポップアップメニュー
CLKITEM(popupid, "詳細", CLK_ACC or CLK_BACK or CLK_MUSMOVE, False) // マウス移動
KBD(VK_RETURN) // メニューの'詳細'選択
ClkItem(id, "Readme.txt", CLK_LSTVEW or CLK_RIGHTCLK, False) // ファイル名 右クリック
popupid = GETID("","#32768") // コンテキストメニュー
CLKITEM(popupid, "プロパティ", CLK_ACC or CLK_BACK or CLK_MUSMOVE, False) // マウス移動
KBD(VK_RETURN) // メニューの'プロパティ'選択
// ボリュームを変える
ifb KINDOFOS() >= 12
KBD(VK_VOLUME_UP) // 2000, XPならばこれだけ
else
volid = Exec("SNDVOL32.exe /t") // メインボリュームのみ表示
値 = SETSLIDER(volid, GET_SLIDER) // 現在値
SETSLIDER(volid, 値-10) // 音量を少し上げる(レンジ0〜255)
endif
// 常にIMEをオンにする
while True
if ! GETKEYSTATE(TGL_IME) then KBD(VK_KANJI)
Sleep(0.1)
wend
// CTRLキーにてアクティブウィンドウの画像保存
GETKEYSTATE(VK_CTRL)
while True
ifb GETKEYSTATE(VK_CTRL)
id = GETID(GET_ACTIVE_WIN)
titl = STATUS(id, ST_TITLE)
if titl <> "" then SAVEIMG(titl, id) // タイトル名にて保存
endif
Sleep(0.2)
wend
// DOS窓に文字出力をする
SendStr(0, "DIR") // クリップボード経由で貼り付ける
id = GETID("コマンド プロンプト")
SCKEY(id, VK_ALT, VK_SPACE, E, P) // 貼り付け
// csvファイルのデータを xxxx.exe アプリに10秒毎に設定する
app = Exec("xxxx.exe") // xxxxアプリ起動
fid = FOpen("testdata.csv", F_READ) // csvファイル(3列構成)
for i = 1 to FGET(fid, -1) // -1の指定で行数が得られる
SendStr(app, FGet(fid, i, 1), 1)
ss = Replace(Format(FGet(fid, i, 2), 5), " ", "0") // 00000(5桁)の形にする
SendStr(app, ss, 2)
SendStr(app, FGet(fid, i, 3)+"<#CR>", 3) // Enterを付加
Sleep(10)
next
FClose(fid)
// OKボタンにマウスを移動する
while True
wid = GETID(GET_ACTIVE_WIN) // アクティブウィンドウ
btn_id = HNDTOID(GETCTLHND(wid, "OK")) // OKボタンのハンドル
ifb btn_id > 0
MMV(STATUS(btn_id, ST_X), STATUS(btn_id, ST_Y)) // マウス移動
endif
sleep(1)
wend
// 指定画像、ピクセルがあればクリック
STOPFORM(False) // "再生中...xxxx"ウィンドウは出さない
MMV(G_SCREEN_W, G_SCREEN_H) // カーソルを画面端に(カーソルがソフト描画の場合に退避)
while True
if GETKEYSTATE(VK_ESC) then exit // ESCキーで終了
ifb CHKIMG("check.bmp") // 画像があった
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) // 左クリック
break
endif
ifb PEEKCOLOR(320, 320) = $00FF00 // 指定ピクセルが緑
KBD(VK_SPACE) // スペースキー
break
endif
sleep(1)
wend
// マウスカーソル下のウィンドウのタイトルとクラス名を表示
While True
id = GETID(GET_FROMPOINT_WIN) // マウスカーソル下のウィンドウ
moji = STATUS(id, ST_TITLE) + " , " + STATUS(id, ST_CLASS)
Fukidasi(moji, G_MOUSE_X+8, G_MOUSE_Y, 3)
Sleep(0.2)
Wend
// 全ウィンドウのタイトルとクラス名を取得する
n = GETALLWIN()
print "ウィンドウ数=" + n
for i=0 to n-1
id = ALL_WIN_ID[i]
print STATUS(ID, ST_TITLE) + " , " + STATUS(ID, ST_CLASS)
next
// アクティブウィンドウを基準にした任意の座標を調べる
While True
x = G_MOUSE_X; y = G_MOUSE_Y // マウス位置
id = GETID(GET_ACTIVE_WIN) // アクティブウィンドウ
ofx = x - STATUS(id, ST_X) // 相対位置
ofy = y - STATUS(id, ST_Y)
moji = "x="+ofx + ", y="+ofy
Fukidasi(moji, x, y, 3)
Sleep(0.5)
Wend
// カーソル位置の色を表示する
While True
x = G_MOUSE_X; y = G_MOUSE_Y
c = PeekColor(x, y)
Fukidasi("赤="+赤色(c) + ",緑="+緑色(c) + ",青="+青色(c), x, y, 3)
Sleep(0.5)
Wend
// PeekColorによる色は B,G,R
function 赤色(c)
Result = c and $FF
fend
function 緑色(c)
Result = (c and $FF00) / $100
fend
function 青色(c)
Result = (c and $FF0000) / $10000
fend
// 画面プロパティからテーマを変更する
Exec("Control Desk.cpl") // 画面のプロパティを起動
id = getid("画面のプロパティ")
ClkItem(id, "テーマ", CLK_TAB)
ClkItem(id, "どうぶつ", CLK_LIST) // このComboBoxは選択時に数が変動する、その為にズレが生じる
ClkItem(id, "どうぶつ", CLK_LIST) // 事があるので、もう一度指定する事により修正する
ClkItem(id, "OK")
// スクリーンセーバーを変更する
Exec("Control Desk.cpl") // 画面のプロパティを起動
id = getid("画面のプロパティ")
ClkItem(id, "スクリーン セーバー", CLK_TAB)
ClkItem(id, "伝言板", CLK_LIST) // 伝言板を選択し設定する
ClkItem(id, "設定", CLK_BTN, True, 1)
SendStr(GETID("伝言板"), "ほにゃらら", 1, True)
ClkItem(GETID("伝言板"), "OK")
ClkItem(id, "OK")
// ファイルの関連付けをする .UWSファイルをUWSCに
ws = CreateOleObj("Wscript.Shell")
ws.RegWrite("HKCR\.uws\", "UWSCscript", "REG_SZ")
ws.RegWrite("HKCR\UWSCscript\", "UWSCスクリプト", "REG_SZ")
ws.RegWrite("HKCR\v\Shell\Open\", "", "REG_SZ")
ws.RegWrite("HKCR\UWSCscript\Shell\Open\Command\", GET_UWSC_DIR+"\UWSC.exe <#DBL>%1<#DBL>", "REG_SZ")
ifb MSGBOX("再起動して宜しいですか?", BTN_YES or BTN_NO) = BTN_YES
POFF(P_FORCE or P_REBOOT)
endif
// MSAgent と SpeechEngine の利用
キャラ = "Merlin" // キャラクタ に Merlin を選択
obj = CreateOLEObj("Agent.Control.1")
obj.Connected=True
ss = GET_WIN_DIR + "\msagent\chars\" + キャラ +".acs"
obj.Characters.Load(キャラ, ss)
agt = obj.Characters(キャラ)
agt.show
agt.Play("Greet")
agt.speak("Hello")
agt.speak("日本語も喋れるかな")
Sleep(10)
// クリップボードにコピーされた値をExcelに保存していく
Excel = CreateOLEObj("Excel.Application")
Excel.Visible = True
Workbook = Excel.WorkBooks.Add
y = 1
x = 1
SENDSTR(0, "")
while True
sleep(0.2)
ss = GETSTR(0)
ifb ss <> "" // クリップボードにある
Excel.ActiveSheet.Cells[y,x].Value = ss
SENDSTR(0, "") // クリップボードをクリア
x = x + 1
ifb x > 10 // 横方向は10(J)まで
x = 1
y = y + 1
endif
endif
wend
// DLL(API)の呼び出し
// メモ帳の終了ボタン・メニュを使えなくする、キャプションの変更
DEF_DLL SetWindowTextA(HWND, string): user32.DLL
DEF_DLL EnableWindow(HWND, Bool): Bool: user32.DLL
DEF_DLL EnableMenuItem(HWND, UINT, UINT): DWORD; user32.DLL
DEF_DLL GetSubMenu(HWND, int): HWND; user32.DLL
DEF_DLL ModifyMenuA(HWND, Long, Long, Long, Long): Long; user32.DLL
MF_GRAYED = $1
MF_BYPOSITION = $400
SC_CLOSE = $F060
// 終了は ALT + F4 で
id = exec("notepad")
hwnd = GetSubMenu(GetCtlHnd(id, GET_MENU_HND), 0) // メニュ->ファイル
EnableMenuItem(hwnd, 8, MF_BYPOSITION+MF_GRAYED) // 終了をグレー
hwnd = GetCtlHnd(id, GET_SYSMENU_HND) // システムメニュ
ModifyMenuA(hwnd, SC_CLOSE, MF_GRAYED, 0, 0) // クローズボタンをグレー
ClkItem(id, "バージョン情報")
hwnd = GetCtlHnd(GETID("バージョン情報"), "OK")
SetWindowTextA(hwnd, "押せまい") // OKボタン書換え
EnableWindow(hwnd, False)
// アクティブウィンドウの左上に時間を表示(デスクトップに文字を直書き)
DEF_DLL GetDC(hwnd): hwnd: USER32
DEF_DLL ReleaseDC(hwnd, hwnd): int: USER32
DEF_DLL TextOutW(hwnd, int, int, wstring, int): Bool: GDI32
dc = GetDC(0) // デスクトップのDC
while ! GETKEYSTATE(VK_ESC) // ESCキーにて終了
w = GETID(GET_ACTIVE_WIN)
GetTime()
s = G_TIME_HH2+":"+G_TIME_NN2+":"+G_TIME_SS2
TextOutW(dc, Status(w,ST_X)+2, Status(w,ST_Y)+2, s, Length(s))
Sleep(0.5)
wend
ReleaseDC(0, DC)
// WindowsXP/Windows2000 のデフラグの実行&シャットダウン
ifb (KINDOFOS()<12) or (KINDOFOS()>14)
MSGBOX("Windows XP or 2000 のみです")
Exit
endif
dim disk[5] = "(C:)", "(D:)", "STOP_DFRG" // 調べるディスク名定義
exec(GET_SYS_DIR+"\mmc.exe dfrg.msc") // デフラグ起動
id = getid("ディスク デフラグ")
dcnt = 0
While ClkItem(id, disk[dcnt], CLK_SHORT)
ClkItem(id, "分析")
ifb KINDOFOS() >= 13 // Windows XP
Repeat; sleep(1); Until id<>getid("ディスク デフラグ ツール")
bnsekiid = getid("ディスク デフラグ ツール")
wks = GetStr(bnsekiid, 1)
sai_msg = "最適化してください"
else
bnsekiid = GetID("分析が完了しました", , -1) // Windows2000
wks = GetStr(bnsekiid, 1, STR_STATIC)
sai_msg = "最適化することを推奨"
endif
ifb Pos(sai_msg, wks) > 0 // では最適化
ClkItem(bnsekiid, "最適化")
While True
Sleep(2)
ifb KINDOFOS() >= 13 // Windows XP
wks = GetStr(getid("ディスク デフラグ ツール"), 1)
ifb Pos("最適化が完了しました", wks) > 0
ClkItem(getid("ディスク デフラグ ツール"), "閉じる")
Break
endif
else
wks = GetStr(id, 1, STR_STATIC)
if Pos("一時停止", wks) > 0 then ClkItem(GetID("デフラグ ツール"), "はい")
ifb Pos("最適化済", wks) > 0
ClkItem(GetID("最適化が完了"), "閉じる")
Break
endif
endif
Wend
else
ClkItem(bnsekiid, "閉じる") // 最適化必要なし
endif
dcnt = dcnt + 1 // 次のディスクへ
Wend
POFF(P_POWEROFF or P_FORCE) // 電源断
// WMIによるBIOS、マザーボード情報の表示
Locator = CreateOleObj("WbemScripting.SWbemLocator")
consvr = Locator.ConnectServer()
biosset = consvr.ExecQuery("Select * From Win32_BIOS") // BIOS情報
GETOLEITEM(biosset); wk = ALL_OLE_ITEM[0]
print wk.Manufacturer
print wk.Name
print wk.SerialNumber
print wk.SMBIOSBIOSVersion
baseset = consvr.ExecQuery("Select * From Win32_BaseBoard") // マザーボード情報
GETOLEITEM(baseset); wk = ALL_OLE_ITEM[0]
print wk.Manufacturer
print wk.Product
print wk.SerialNumber
print wk.Version
// IEにてActiveX警告のダイアログを自動で閉じる
// このスクリプトをスケジュールの '指定Windowが現れた時' に登録する
// Title=Microsoft Internet Explorer Class=#32770 にて登録
STOPFORM(False) // 再生ボタンは出さない
id = GETID("Microsoft Internet Explorer", "#32770")
wks = getstr(id, 2, STR_STATIC)
msg = "現在のセキュリティの設定では、このページの ActiveX コントロールは実行できません"
if Copy(wks, 1, Length(msg)) = msg then ClkItem(id, "OK", Clk_Btn)
// 掲示板のスレをテキストファイルとして保存する
fp = FOPEN("掲示板.Log", F_WRITE)
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi")
While True
sleep(1)
Repeat
sleep(0.1)
Until (! IE.busy) and (IE.readyState=4) // 接続表示待ち
p = -1
atag = IE.document.body.all.tags("A")
for i = 0 to atag.Length - 1 // 次ページがあるか確認
ifb atag.item[i].innerText = "[次のページ]"
p = i
break
endif
next
wks = IE.document.body.innerText
if p > 0 then atag.item[p].click() // 次ページ クリック
wks = Replace(wks, "[HOME] [削除] [検索] [過去ログ] [管理人用]", "")
wks = Replace(wks, "お名前<#CR>Email<#CR>URL<#CR>題 名 <#CR>本 文", "")
wks = Replace(wks, "文字色■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ <#CR>削除キー", "")
wks = Replace(wks, "※ネットゲーム関係の質問はご遠慮下さい", "")
FPUT(fp, wks) // 要らない部分を削除して保存
if p < 0 then break // 終了
Wend
FCLOSE(fp)
IE.Quit
// システムのプロパティ -> パフォーマンス オプション の設定を変更する
exec("control SYSDM.CPL")
sid = GETID("システムのプロパティ")
ClkItem(sid, "詳細設定")
ClkItem(sid, "設定", CLK_BTN, True, 1)
pid = GETID("パフォーマンス オプション")
ClkItem(pid, "マウス ポインタの下に影を表示する", CLK_ACC, True) // Onにする
ClkItem(pid, "メニューの下に影を表示する", CLK_ACC, False) // Offにする
// デスクトップ、タスクバー、トレイの情報を取得
// デスクトップの情報を取得
for i = 0 to GETITEM(GETID("Program Manager","Progman"), ITM_LSTVEW)-1
print ALL_ITEM_LIST[i]
next
// タスクバー、トレイの情報を取得(XPではタスクバー、トレイはツールバーである)
for i = 0 to GETITEM(GETID("","Shell_TrayWnd"), ITM_TOOLBAR)-1
print ALL_ITEM_LIST[i]
next
// タスクトレイの '音量' をクリックし、ミュートをOnにする(XPにて)
CLKITEM(GETID("","Shell_TrayWnd"), "音量", CLK_TOOLBAR) // XPではタスクトレイはツールバー
id = GETID("ボリューム コントロール")
CLKITEM(id, "ミュート")
CTRLWIN(id, Close)
// マウスカーソル下の文字を取得、Shiftキーによりクリップボードへコピー
While True
x = G_MOUSE_X; y = G_MOUSE_Y // マウス位置
id = GETID(GET_FROMPOINT_WIN) // アクティブウィンドウ
if id = GETID(GET_FUKIDASI_WIN) then Continue // 吹き出し自体は無視
ofx = x - STATUS(id, ST_CLX) // 相対位置
ofy = y - STATUS(id, ST_CLY)
wks = PosACC(id, ofx, ofy)
Fukidasi(wks, x+10, y+10, 3)
if GetKeyState(VK_SHIFT) then SendStr(0, wks) // クリップボードへ
Sleep(0.5)
Wend
// マウスカーソル下の文章を読み上げる
sv_s = ""
While True
x = G_MOUSE_X; y = G_MOUSE_Y
id = GETID(GET_FROMPOINT_WIN) // アクティブウィンドウ
ofx = x - STATUS(id, ST_CLX) // 相対位置
ofy = y - STATUS(id, ST_CLY)
wks = PosACC(id, ofx, ofy) // マウスカーソル下の文章拾得
ifb sv_s <> wks
sv_s = wks
Speak(wks) // 読み上げ
endif
Sleep(0.5)
Wend
// 音声認識によるアプリの操作
// アクティブウィンドウのクリック可能なものを拾得、それを単語登録し使用
// 認識可能な単語は吹き出しにて表示
// コマンド発声前にShiftキーを叩いておくとチェックボックス等でOFF動作
id = -1
dim 単語登録[100]
While True
ifb id <> GETID(GET_ACTIVE_WIN) // アクティブウィンドウが変更されたか
id = GETID(GET_ACTIVE_WIN)
num = GETITEM(id, ITM_BTN+ITM_LIST+ITM_TAB+ITM_MENU+ITM_LSTVEW+ITM_TREEVEW+ITM_TOOLBAR,-1,0,True) // クリック可能なものを全て拾う
if num > resize(単語登録) then num = resize(単語登録) // 数制限
ifb num = 0
Sleep(0.2); Continue
endif
表示 = ""
SETCLEAR(単語登録, "")
for i = 0 to num-1
単語登録[i] = 記号削除(ALL_ITEM_LIST[i]) // 邪魔な文字は削除
if 単語登録[i]<>"" then 表示 = 表示 + 単語登録[i] + "<#CR>"
next
RECOSTATE(True, 単語登録) // 単語登録、実行
Fukidasi(表示, 0, 0, , , , , ,100)
endif
拾得音声 = DICTATE(False) // 拾得
ifb 拾得音声 <> "" // 音声入力あった
Fukidasi()
print 拾得音声
for i = 0 to num-1
ifb 拾得音声 = 単語登録[i]
chk_flg = ! GETKEYSTATE(VK_SHIFT) // Shiftキーが押されてた時は Off動作
CLKITEM(id, ALL_ITEM_LIST[i], 0, chk_flg) // コマンド実行
break
endif
next
id = -1
else
if GETKEYSTATE(VK_LBUTTON) then id = -1 // ボタン操作があった時も更新
endif
Sleep(0.2)
Wend
// 制御コードなどの記号があるとエラーになるのでゴミ文字削除
Function 記号削除(ss)
p = Pos("\", ss)
if p > 0 then ss = Copy(ss, p+1, 999)
ifb Pos("\", ss) > 0
Result=""; Exit // 階層化されている物まで拾うと数が多すぎになるので捨てる
endif
p = Pos("(", ss, -1)
if p > 0 then ss = Copy(ss, 1, p-1) // ( 以降は消す
for i = 1 to Length(ss)
mcd = ASC(Copy(ss,i,1)) // 英数字のチェック
ifb mcd < $80
if (mcd<$30) or (mcd>$7A) or ((mcd>=$3A)and(mcd<=$40)) or ((mcd>=$5B)and(mcd<=$60)) then ss=Copy(ss,1,i-1)+" "+Copy(ss,i+1,999)
endif
next
Result = Replace(ss, " ", "")
Fend
// Internet Explorer 上での文字設定、ボタンのクリック
// エディトボックス、ボタンはHTMLソースの'NAME='や'VALUE=' から確認
ie = CreateOLEObj("InternetExplorer.Application")
ie.Visible = True
ie.Navigate("http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi") // 掲示板
while True // 接続表示待ち
if (! ie.busy) and (ie.readyState=4) then Break
sleep(0.1)
wend
IESETDATA(ie, "題名カキカキ", "sub") // タイトル書込み
IESETDATA(ie, True, "color", "#aa33aa") // 文字色=紫
// IE にてGoogleを表示、日本語ページより検索 (アクセシビリティ用インターフェースを利用)
id = GETID("Internet Explorer")
SENDSTR(id, "http://www.google.co.jp/", 1, True, True) // URL
SCKEY(id, VK_RETURN)
表示完了待ち(id)
CLKITEM(id, "日本語のページを検索", CLK_ACC)
SENDSTR(id, "UWSC", 2, True, True) // 検索文字
CLKITEM(id, "Google 検索", CLK_ACC) // 検索ボタン
表示完了待ち(id)
// ステータスバーにて表示完了を確認
Procedure 表示完了待ち(id)
Repeat
Sleep(0.2)
Until GETSTR(id, 1, STR_STATUS) = "ページが表示されました"
Fend
// Firefox にてGoogleを表示、日本語ページより検索 (アクセシビリティ用インターフェースを利用)
id = GETID("Firefox")
sendstr_Ex(id, "http://www.google.co.jp/", 1) // URL
SCKEY(id, VK_RETURN)
表示完了待ち(id)
CLKITEM(id, "日本語のページを検索", CLK_ACC)
sendstr_Ex(id, "UWSC", 3) // 検索文字
CLKITEM(id, "Google 検索", CLK_ACC) // 検索ボタン
表示完了待ち(id)
// Firefoxでは文字送信(SENDSTR関数)の順番指定が使えないので代用
Procedure sendstr_Ex(id, 文字, 順番)
SENDSTR(id, "", 順番, False, True) // フォーカスは移動できる
SENDSTR(id, 文字) // フォーカスがあれば追加モードで送れる
Fend
// 完了メッセージが出るまで(ステータスバーは必ず画面上に出ている事)
Procedure 表示完了待ち(id)
Repeat
Sleep(0.2)
Until PosACC(id, 8, STATUS(id,ST_CLHEIGHT)-8, ACC_NAME) = "完了"
Fend
// Javaのデモアプリ FileChooserDemo を起動、操作 (Javaアクセシビリティ用インターフェースを利用)
デモ名 = "FileChooserDemo"
パス = "C:\Program Files\Java\jdk1.5.0_03\demo\jfc\"
DosCmd("explorer /select,<#DBL>"+パス+デモ名+"\"+デモ名+".jar<#DBL>", True)
ClkItem(GETID(デモ名, "CabinetWClass", -1), デモ名, CLK_LSTVEW or CLK_SHORT) // explorerより起動
id = GETID(デモ名, "javax.swing.JFrame", -1)
if ChkBtn(id, "Open", 1, True) then print "Open" // Dialog Tyep チェック
if ChkBtn(id, "Save", 1, True) then print "Save"
Sleep(2)
ClkItem(id, "Custom", CLK_ACC, True) // Custom クリック
SendStr(id, "書き込み", 1, True, True) // 文字書き込み
ClkItem(id, "Motif", CLK_ACC, True) // Window Tyep - Motif
// メールからスクリプトを指定して実行する (basp21.dll を使用)
// サブジェクトに UWSC xxxx.uws と書かれていればその xxxx.uws を実行
// スケジュールのタイマーにて一定間隔にて起動するよう指定しておく
bobj = CreateOLEObj("basp21")
output = bobj.RcvMail(サーバ, ユーザID, パスワード, "LIST", GET_CUR_DIR)
for i = Resize(output) to 0 step -1
p = Pos("UWSC ", output[i])
if p = 0 then continue
wks = Trim(Copy(output[i], p+5, 9999))
p = Pos(".uws", wks)
if p = 0 then continue
filnm = Copy(wks, 1, p+3)
wk = bobj.RcvMail(サーバ, ユーザID, パスワード, "DELE "+(i+1), GET_CUR_DIR) // 指定メール削除
exec("uwsc.exe " + filnm) // xxxx.uwsの実行
break
next
// VBScript、JScriptを呼び出す(足し算をする)
scpt = CreateOleObj("ScriptControl")
pls1 = 5
pls2 = 9
// VBScriptを使う
scpt.language="VBScript"
src = "Function tasizan(a, b): tasizan = a + b: End Function"
scpt.AddCode(src) // ソースを登録
answer = scpt.Run("tasizan", pls1, pls2) // 実行
print pls1 + " + " + pls2 + " = " + answer + "です(VBScript)"
// JScriptを使う
scpt.language="JScript"
src = "function tasizan(a, b){ return a + b; }"
scpt.AddCode(src) // ソースを登録
answer = scpt.Run("tasizan", pls1, pls2) // 実行
print pls1 + " + " + pls2 + " = " + answer + "です(JScript)"
// スレッドを使い吹出しを複数を出す
PUBLIC clear_fuki = -1 // 消去する識別No.を指定する
FUKIDASI("main")
thread create_fuki(1, "aaaa", 100, 100) // スレッドにて吹出し生成
thread create_fuki(2, "bbbb", 200, 200)
thread create_fuki(3, "cccc", 300, 300)
sleep(3)
clear_fuki = 2 // bbbbbを消去
sleep(5)
// 吹出し生成 (pno=識別No.、msg=表示メッセージ、x,y=位置)
procedure create_fuki(pno, msg, x, y)
FUKIDASI(msg, x, y)
while clear_fuki<>pno; sleep(0.1); wend // 消去指定されるまで表示
Fend
// Yahoo!検索Webサービスの利用
url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=YahooDemo&"
key = "高校野球" // 検索文字
xml = GetRXML(url + "query=" + Encode(Encode(key, CODE_UTF8), CODE_URL))
wkp = xml.getElementsByTagName("Result")
for i = 0 to wkp.Length-1
print wkp.item[i].childNodes.item[0].text // Title
print wkp.item[i].childNodes.item[1].text // Summary
print wkp.item[i].childNodes.item[2].text // Url
print
next
// ResponseXMLの取得
Function GetRXML(url)
oHttp = CreateOLEObj("MSXML2.XMLHTTP")
oHttp.Open("GET", url, 0)
oHttp.Send
Result = oHttp.responseXML
Fend
// Vista ガジェット 時計の設定変更
id = GETID("時計", "BasicWindow")
MOUSEORG(id, 2); MMV(0, 0) // メニューを有効にする為の処理
CLKITEM(id, "設定", CLK_ACC)
MOUSEORG(id, 0)
clockid = GETID("", "SideBar_SettingsWindow")
CLKITEM(clockid, "次へ", CLK_ACC or CLK_BACK, False) // フォーカス移す(JavaScriptの画像ボタン)
KBD(VK_SPACE) // 時計を一つ変更
CLKITEM(clockid, "秒針を表示する", CLK_ACC)
CLKITEM(clockid, "OK", CLK_ACC)
// 指定キーを無効にして、別の動作をさせる
DEF_DLL RegisterHotKey(Long, Long, Long, Long): Long: user32 // RegisterHotKeyを使いキーを無効にする
for k = VK_A to VK_F
RegisterHotKey(0, k, 0, k) // AからFまでのキーを潰す
next
while True
for k = VK_A to VK_F
if getkeystate(k) then print CHR(k) + "キーが押されたみたい"
next
sleep(0.2)
wend
Copyright (C) 2007-2008 umiumi All rights reserved.