UWSC

 

UWSC  Win32::GuiTest  Perlメモ/Win32::GuiTestモジュール liners    
           

 

BTN(LEFT,DOWN,53,189,0) MMV(x,y,t)        

 

BTN

BTN(LEFT,UP,53,189,94)

BTN(LEFT,CLICK,58,304,984)

 

MMV

MMV(58,302,156)

t: ms

 

 

ループ サブルーチン ウインドウを全て閉じる ファイルを全て削除 ファイル情報 ボリューム
IMEをオン 画像保存 DOS窓に文字出力      

 

// 記録保存したスクリプトをループで実行
// 無限ループ
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


// エクスプローラを開き C:\temp\ にある *.tmp ファイルを全て削除
exec("Explorer.exe C:\TEMP")
id = GETID("C:\TEMP")
ifb id < 0
  MsgBox("フォルダ オプション->表示 にて 'タイトルバーにファイルのパス名を表示する' をOnにして下さい")
  Exit
endif
ifb CLKITEM(id, ".TMP", CLK_LSTVEW or CLK_SHORT, False)   // 複数選択される
  SCKEY(id, VK_CTRL, VK_D)                      // 削除ショートキー
  CLKITEM(GETID("ファイルの削除の確認"), "はい")
endif


// 表示中のエクスプローラからファイル情報を読み取る
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


// ボリュームを変える
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 = ChgMoj(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("赤="+G_赤(c)+",緑="+G_緑(c)+",青="+G_青(c), x, y, 3)
  Sleep(0.5)
Wend
function G_赤(c)
  Result = c and $FF
fend
function G_緑(c)
  Result = (c and $FF00) / $100
fend
function G_青(c)
  Result = (c and $FF0000) / $10000
fend


// 画面プロパティからテーマを変更する
id = Exec("Control Desk.cpl")       // 画面のプロパティを起動
ClkItem(id, "テーマ", CLK_TAB)
ClkItem(id, "どうぶつ", CLK_LIST)    // (WinXPにて)このComboBoxは選択時に数が変動する、その為にズレが生じる
ClkItem(id, "どうぶつ", CLK_LIST)    // ので、もう一度指定する事により修正する
ClkItem(id, "OK")


// スクリーンセーバーを変更する
id = Exec("Control Desk.cpl")           // 画面のプロパティを起動
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)


// APIを利用した文字変換
DEF_DLL LCMapStringA(uint, dword, string, int, var string, int): int: kernel32.dll
LCMAP_LOWERCASE =$100    // 小文字
LCMAP_KATAKANA = $200000   // カタカナ
LCMAP_HALFWIDTH = $400000  // 半角文字
LCMAP_FULLWIDTH = $800000  // 全角文字
print 文字変換(LCMAP_LOWERCASE, "ABCDE")
print 文字変換(LCMAP_KATAKANA, "あいうえお")
print 文字変換(LCMAP_HALFWIDTH, "ABCDE")
print 文字変換(LCMAP_FULLWIDTH, "ABCDE")

function 文字変換(kind, moji)
  ret = moji + moji    // 半角->全角の為に倍の領域を確保
  LCMapStringA(0, kind, moji, -1, ret, Length(ret))
  result = ret
fend


// WindowsXP/Windows2000 のデフラグの実行&シャットダウン
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://hidebbs.net/bbs/umiumi")  // 掲示板
While True
  Repeat
    sleep(0.1)
  Until (! IE.busy) and (IE.readyState=4)          // 接続表示待ち
  if IE.document.body.all["next"].value="" then break  // 終了
  ofset_btn = IE.document.body.all.tags("INPUT").Length - 1  // ボタン位置:次の10件
  col_obj = IE.document.body.all.tags("INPUT").Item[ofset_btn]
  ifb col_obj.value <> "次の10件"
    MsgBox("掲示板の仕様に変更があったようです")
    ExitExit                    // 異常終了
  endif
  wks = IE.document.body.innerText
  col_obj.click()                  // ボタンクリック
  wks = Chgmoj(wks, "うみうみ屋さんの掲示板<#CR> お名前<#CR>Email<#CR>題 名   <#CR>本 文<#CR>", "")
  wks = Chgmoj(wks, "URL<#CR>文字色 ■ ■ ■ ■ ■ ■ ■ ■ 他の色 <#CR>削除キー<#CR>", "")
  wks = Chgmoj(wks, "うみうみ屋さん <#CR><#CR>", "")
  wks = Chgmoj(wks, "HideBBS<#CR><#CR>", "")
  wks = Chgmoj(wks, "管理モード", "")
  FPUT(fp, wks)              // 要らない部分を削除して保存
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)   // アクティブウィンドウ
  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(単語登録)  // 数制限
   表示 = ""
   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)
   ifb BYTETYPE(ss, i)=0
     mcd = ASC(Copy(ss,i,1))   // 1バイトの英数字のチェック
     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 = CHGMOJ(ss, " ", "")
Fend


// Internet Explorer 上での文字設定、ボタンのクリック (COM利用)
// エディトボックス、ボタンはHTMLソースの'NAME='や'VALUE=' から確認
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://hidebbs.net/bbs/umiumi") // 掲示板
while True                       // 接続表示待ち
  if (! IE.busy) and (IE.readyState=4) then Break
  sleep(0.1)
wend
IE.document.all["subject"].value = "題名カキカキ"  // タイトル書込み
col_obj = IE.document.all["color"]         // "Color"オブジェクト
for x = 0 to col_obj.length-1
  ifb (col_obj.Item[x].value="black")       // 文字色=黒
    col_obj.Item[x].click
    break
  endif
next


// 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(0, 文字)           // クリップボード経由で貼り付け
 SCKEY(id, VK_ALT, E, A)
 SCKEY(id, VK_ALT, E, P)
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>")
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