UWSC サンプル
2019/02/11
Warning: Use of undefined constant full - assumed 'full' (this will throw an Error in a future version of PHP) in /home/hikarujyouho/hikarujyouhou.com/public_html/wp-content/themes/giraffe/single.php on line 49

スポンサーリンク

HPが復活しないので、もしもの時の為のバックパップです。
コンテンツ(CONTENT)
- YOUTUBEチャンネル
- // 記録保存したスクリプトを無限ループで実行 #N1
- // 記録保存したスクリプトを10回ループで実行 #N2
- // 関数(Function)の使用 #N3
- // プロシージャ(Procedure)の使用 #N4
- // 開いているウインドウを全て閉じる #N5
- // メモ帳を起動し使用できるフォント名の取得 #N6
- // ボリュームを変える #N7
- // 常にIMEをオンにする #N8
- // CTRLキーにてアクティブウィンドウの画像保存 #N9
- // SHIFTキーにてマウス下のオブジェクト画像をJPEGにて保存 #N10
- // csvファイルのデータを xxxx.exe アプリに 10秒毎に設定する #N11
- // OKボタンにマウスを移動する #N12
- // 指定画像、ピクセルがあればクリック #N13
- // マウスカーソル下のウィンドウのタイトルとクラス名を表示 #N14
- // 全ウィンドウのタイトルとクラス名を取得する #N15
- // アクティブウィンドウを基準にした任意の座標を調べる #N16
- // カーソル位置の色を表示する #N17
- // スクリーンセーバーの設定を変更する #N18
- // レジストリより IEのバージョン取得 #N19
- // MSAgent と SpeechEngine の利用 #N20
- // クリップボードにコピーされた値を Excelに保存していく #N21
- // メモ帳のボタン・メニューの変更(DLL(API)の呼び出し) #N22
- // アクティブウィンドウの左上に時間を表示(デスクトップに文字を直書き) #N23
- // WindowsXP/Windows2000 のデフラグの実行&シャットダウン #N24
- // WMIによるBIOS、マザーボード情報の表示 #N25
- // IEにてActiveX警告のダイアログを自動で閉じる #N26
- // 掲示板のスレをテキストファイルとして保存する #N27
- // デスクトップ、タスクバー、トレイの情報を取得 #N28
- // タスクトレイの ‘音量’ をクリック #N29
- // マウスカーソル下の文字と位置を取得、Shiftキーによりクリップボードへコピー #N30
- // マウスカーソル下の文章を読み上げる #N31
- // 音声認識によるアプリの操作 #N32
- // Internet Explorer 上での文字設定、ボタンのクリック #N33
- // IE にてGoogleを表示、日本語ページより検索 (RecIEにより生成されたもの) #N34
- // Yahoo!ファイナンスを開き、データをExcelに送りグラフを作成 #N35
- // Firefox にてGoogleを表示、検索 & ニュース表示 #N36
- // Google Chrome にてGoogleを表示、検索 & ニュース表示 #N37
- // MS Edge にてGoogleを表示、検索 & ニュース表示 #N38
- // Javaのデモアプリ FileChooserDemo を起動、操作 #N39
- // メールからスクリプトを指定して実行する(basp21.dll を使用) #N40
- // VBScript、JScriptを呼び出す(足し算をする) #N41
- // スレッドを使い吹出しを複数を出す #N42
- // Yahoo!検索Webサービスの利用 #N43
- // Vista/7 ガジェット 時計の設定変更 #N44
- // キーボードからのキーを一文字づつずらす #N45
- // CLK_ACC指定時の位置、順番を確認する #N46
- // スタートメニュー プログラムを ポップアップメニューにする #N47
- // iTunesを起動しラジオの選択 #N48
- // タスクマネージャよりプロセス情報を読み取り、メモリ使用量でソート #N49
- // マインスイーパー自動処理 #N50
- // PowerShellより C#を呼び出す(足し算をする) #N51
- // PowerShellより .Net Frameworkを利用しフォームを作る #N52
- // デフォルトプリンタの設定を変更する #N53
- // 1分間操作がなかったら場合にモニターをOFF状態にする #N54
- // 指定フォルダにあるjpgファイルをペイントにドロップする #N55
- // 指定ウィンドウの全オブジェクトの文字を種類別に取得する #N56
- // OCRの利用(Office付属) #N57
- // IE にてファイルのダウンロード処理 #N58
- // OpenOffice.org/LibreOffice 表計算(Calc)の操作、存在しない場合にはExcelにて #N59
- // IE上のFlashからデータ取得(FXのレート取得) #N60
- // マウスがクリック可能領域に入った時に そのオブジェクトの中心にマウスを移動する #N61
- // IE上に表示されている文字 「です」を 「だす」に書き換える、カラーも変更 #N62
- // CDOを利用したメール送信 #N63
- // インプットボックスを利用した計算 #N64
- // CSVファイル情報をUWSファイルに取り込んだ形で使う #N65
- // 現在位置を Google マップ で表示する #N66
- // オーディオ出力が2系統あり、指定WAVファイルのみ別系統で出力する #N67
- // 低レベルで記録したスクリプトのスピードを変える #N68
- 関連記事.
YOUTUBEチャンネル
https://www.youtube.com/channel/UCRzkIVd28RRt9fI4gNraIqQ/featured
スポンサーリンク
// 記録保存したスクリプトを無限ループで実行 #N1
// 無限ループ While True Call xxxx.uws // xxxx.uws 記録保存したスクリプト名 Sleep(10) // 10秒の間を取る Wend
// 記録保存したスクリプトを10回ループで実行 #N2
// 10回ループ for 回数 = 1 to 10 Call xxxx.uws // xxxx.uws 記録保存したスクリプト名 print 回数 next
// 関数(Function)の使用 #N3
public G = 0 // グローバル変数 a = 1 // ローカル変数 b = 2 c = 計算(a, b) print c // 3 print G // 99 // Mainプログラムはここで終わり(関数定義の前までになる) // Function 戻り値あり(Result変数に戻り値を入れる) Function 計算(ka, kb) // 関数名 2バイト文字でもOK Result = ka + kb // 関数の戻り値は Result変数 G = 99 // グローバル変数 Fend
// プロシージャ(Procedure)の使用 #N4
あ = 0 // 変数名 2バイト文字でもOK い = 0 TETUZUKI(あ, い) print あ // 0 print い // 99 // Mainプログラムはここで終わり(関数定義の前までになる) // Procedure 戻り値なし Procedure TETUZUKI(a, var b) a = 99 b = 99 // var指定により呼び出し元の値は変更される Fend
// 開いているウインドウを全て閉じる #N5
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
// メモ帳を起動し使用できるフォント名の取得 #N6
id = EXEC("notepad.exe") ClkItem(id, "フォント") idfnt = GETID("フォント") kz = GETITEM(idfnt, ITM_LIST, 1) print "フォント数" + kz for i = 0 to kz-1 print ALL_ITEM_LIST[i] next
// ボリュームを変える #N7
ifb KINDOFOS() >= 12 KBD(VK_VOLUME_UP) // Win2000以上ならばこれだけ else volid = Exec("SNDVOL32.exe /t") // メインボリュームのみ表示 値 = GETSLIDER(volid, 1) // 現在値 SETSLIDER(volid, 値-10) // 音量を少し上げる(レンジ0~255) endif
// 常にIMEをオンにする #N8
while True if ! GETKEYSTATE(TGL_IME) then KBD(VK_KANJI) Sleep(0.2) wend
// CTRLキーにてアクティブウィンドウの画像保存 #N9
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
// SHIFTキーにてマウス下のオブジェクト画像をJPEGにて保存 #N10
GETKEYSTATE(VK_SHIFT) num = 1 while True ifb GetKeyState(VK_SHIFT) id = GETID(GET_FROMPOINT_OBJ) // マウスカーソル下のオブジェクト SAVEIMG("Image"+num, id, , , , , , 50) // "Image?.jpg" (圧縮率50%)にて保存 num = num + 1 endif Sleep(0.2) wend
// csvファイルのデータを xxxx.exe アプリに 10秒毎に設定する #N11
app = Exec("xxxx.exe") // xxxxアプリ起動 fid = FOpen("testdata.csv", F_READ) // csvファイル(3列構成) for i = 1 to FGET(fid, F_LINECOUNT) // F_LINECOUNT指定で行数が得られる SendStr(app, FGet(fid, i, 1), 1, True) SendStr(app, FGet(fid, i, 2), 2, True) ss = Replace(Format(FGet(fid, i, 3), 5), " ", "0") // 00000(5桁)の形にする SendStr(app, ss, 3, True) Sleep(10) next FClose(fid)
// OKボタンにマウスを移動する #N12
while True wid = -1 while True ifb wid <> GETID(GET_ACTIVE_WIN) // アクティブウィンドウが変わった wid = GETID(GET_ACTIVE_WIN) CLKITEM(wid, "OK", CLK_BTN or CLK_MUSMOVE, False) // クリックはしない // CLKITEM(wid, "OK", CLK_ACC or CLK_MUSMOVE, False) // CLK_BTNではダメな場合に endif sleep(0.5) wend wend
// 指定画像、ピクセルがあればクリック #N13
// エアロがオンだとCHKIMG,PEEKCOLOR関数は遅いので APIでデスクトップコンポジションをオフに DEF_DLL DwmEnableComposition(long): long: dwmapi if KINDOFOS()>=20 then DwmEnableComposition(0) // Vista/Win7 の場合にオフに(Win8.x/10 ではオフにできない) 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 if KINDOFOS()>=20 then DwmEnableComposition(1) // オン
// マウスカーソル下のウィンドウのタイトルとクラス名を表示 #N14
While True id = GETID(GET_FROMPOINT_WIN) // マウスカーソル下のウィンドウ if id = GETID(GET_BALLOON_WIN) then Continue // 吹き出し自体は無視 moji = STATUS(id, ST_TITLE) + " , " + STATUS(id, ST_CLASS) Balloon(moji, G_MOUSE_X+8, G_MOUSE_Y, 3) Sleep(0.2) Wend
// 全ウィンドウのタイトルとクラス名を取得する #N15
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
// アクティブウィンドウを基準にした任意の座標を調べる #N16
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 Balloon(moji, x, y, 3) Sleep(0.5) Wend
// カーソル位置の色を表示する #N17
While True x = G_MOUSE_X; y = G_MOUSE_Y c = PeekColor(x, y) Balloon("赤="+赤色(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
// スクリーンセーバーの設定を変更する #N18
// 注:XPまで 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")
// レジストリより IEのバージョン取得 #N19
ws = CreateOleObj("Wscript.Shell") s = ws.RegRead("HKLM\SOFTWARE\Microsoft\Internet Explorer\svcVersion") if s="" then s = ws.RegRead("HKLM\SOFTWARE\Microsoft\Internet Explorer\Version") MSGBOX(s)
// MSAgent と SpeechEngine の利用 #N20
// 注:Windows7 以上には MSAgentは無い キャラ = "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に保存していく #N21
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)の呼び出し) #N22
// メモ帳の終了ボタン・メニューを使えなくする、キャプションの変更 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)
// アクティブウィンドウの左上に時間を表示(デスクトップに文字を直書き) #N23
DEF_DLL GetDC(hwnd): hwnd: USER32 DEF_DLL ReleaseDC(hwnd, hwnd): int: USER32 DEF_DLL TextOutW(hwnd, int, int, wstring, int): Bool: GDI32 while ! GETKEYSTATE(VK_ESC) // ESCキーにて終了 w = GETID(GET_ACTIVE_WIN) GetTime() s = G_TIME_HH2+":"+G_TIME_NN2+":"+G_TIME_SS2 dc = GetDC(0) // デスクトップのDC TextOutW(dc, Status(w,ST_X)+2, Status(w,ST_Y)+2, s, Length(s)) ReleaseDC(0, DC) Sleep(1) wend
// WindowsXP/Windows2000 のデフラグの実行&シャットダウン #N24
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、マザーボード情報の表示 #N25
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警告のダイアログを自動で閉じる #N26
// このスクリプトをスケジュールの '指定Windowが現れた時' に登録する // Title=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)
// 掲示板のスレをテキストファイルとして保存する #N27
DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32 CONST WM_ACTIVATE = $06 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) // 接続表示待ち SendMessageA(ie.Hwnd, WM_ACTIVATE, 0, 0) 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>本 文", "") FPUT(fp, wks) // 要らない部分を削除して保存 if p < 0 then break // 終了 Wend FCLOSE(fp) IE.Quit
// デスクトップ、タスクバー、トレイの情報を取得 #N28
// デスクトップの情報を取得 for i = 0 to GETITEM(GETID("Program Manager","Progman"), ITM_ACCCLK)-1 print ALL_ITEM_LIST[i] next for i = 0 to GETITEM(GETID("","WorkerW"), ITM_ACCCLK)-1 print ALL_ITEM_LIST[i] next // タスクバー、トレイの情報を取得 for i = 0 to GETITEM(GETID("","Shell_TrayWnd"), ITM_ACCCLK)-1 print ALL_ITEM_LIST[i] next
// タスクトレイの ‘音量’ をクリック #N29
// 環境により 音量, Volume, スピーカー 等表示が違う ifb ! CLKITEM(GETID("","Shell_TrayWnd"), "音量", CLK_TOOLBAR) ifb ! CLKITEM(GETID("","Shell_TrayWnd"), "Volume", CLK_TOOLBAR) ifb ! CLKITEM(GETID("","Shell_TrayWnd"), "スピーカー", CLK_ACC or CLK_SHORT) CLKITEM(GETID("","Shell_TrayWnd"), "output:", CLK_ACC or CLK_SHORT) endif endif endif
// マウスカーソル下の文字と位置を取得、Shiftキーによりクリップボードへコピー #N30
While True x = G_MOUSE_X; y = G_MOUSE_Y // マウス位置 id = GETID(GET_FROMPOINT_WIN) // アクティブウィンドウ if id = GETID(GET_BALLOON_WIN) then Continue // 吹き出し自体は無視 ofx = x - STATUS(id, ST_CLX) // 相対位置 ofy = y - STATUS(id, ST_CLY) wks = PosACC(id, ofx, ofy, ACC_BACK) wks = wks + "<#cr>" + "x="+ofx+", y="+ofy Balloon(wks, x+10, y+10, 3) if GetKeyState(VK_SHIFT) then SendStr(0, wks) // クリップボードへ Sleep(0.5) Wend
// マウスカーソル下の文章を読み上げる #N31
sv_s = "" While True wks = PosACC(0, G_MOUSE_X, G_MOUSE_Y) // マウスカーソル下の文章拾得 ifb sv_s<>wks sv_s = wks Speak(wks, True, True) // 読み上げ endif Sleep(0.5) Wend
// 音声認識によるアプリの操作 #N32
// アクティブウィンドウのクリック可能なものを拾得、それを単語登録し使用 // 認識可能な単語は吹き出しにて表示 // コマンド発声前に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, 単語登録) // 単語登録、実行 Balloon(表示, 0, 0, , , , , ,100) endif 拾得音声 = DICTATE(False) // 拾得 ifb 拾得音声 <> "" // 音声入力あった Balloon() 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 上での文字設定、ボタンのクリック #N33
// エディトボックス、ボタンはHTMLソースの'NAME='や'VALUE=' から確認 ie = CreateOLEObj("InternetExplorer.Application") ie.Visible = True ie.Navigate("http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi") // 掲示板 while True // 接続表示待ち if (! ie.busy) and (ie.readyState=4) then Break sleep(0.1) wend IESETDATA(ie, "題名カキカキ", "subject", "", 2) // タイトル書込み IESETDATA(ie, True, "color", "#0000FF") // 文字色=青
// IE にてGoogleを表示、日本語ページより検索 (RecIEにより生成されたもの) #N34
Public IE IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True setOleEvent() IE.Navigate("http://www.google.co.jp/") BusyWait() IESetData(IE,"検索文字","q") // TEXT IESetData(IE,True,"btnG") // SUBMIT BusyWait() IELink(IE,"日本語のページを検索") BusyWait() // OleEvent(IE); IE.Quit() // OleEventクリア & IE終了 //------ DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32 CONST WM_ACTIVATE = $06 Public Pub_url, Pub_docc, Pub_BeforNav_cnt, Pub_DocComp_cnt, Pub_inp_flg Procedure BusyWait() Sleep(0.3) tm = GetTime() repeat ifb GetTime() - tm > 90 // TimeOut Pub_docc = ""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0 IE.Navigate(Pub_url) tm = GetTime() endif Sleep(0.2) ifb Pub_inp_flg Pub_inp_flg = False continue endif if IE.busy then continue if Pub_url = "" then break // No read if (Pos("*"+Pub_url+"*",Pub_docc)) or (Pos("*"+IE.LocationURL+"*",Pub_docc)) or (Pub_BeforNav_cnt<=Pub_DocComp_cnt) then else continue errflg = False if IE.document.title = "503 Unavailable" then errflg = True if IE.document.title = "Service Unavailable" then errflg = True if IE.document.title = "503 Service Temporarily Unavailable" then errflg = True ifb errflg Sleep(90) // 503: Wait&Retry tm = 0 continue endif Sleep(0.3) until ! Pub_inp_flg Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0 SendMessageA(IE.Hwnd, WM_ACTIVATE, 0, 0) Fend Procedure setOleEvent() OleEvent(IE, "DWebBrowserEvents2", "BeforeNavigate2", "fucBeforNav") OleEvent(IE, "DWebBrowserEvents2", "DocumentComplete", "fucDocComp") OleEvent(IE, "DWebBrowserEvents2", "OnQuit", "fucQuit") Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0; Pub_inp_flg=False Fend Procedure fucBeforNav() ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1]) if Pub_url="" then Pub_url = ""+EVENT_PRM[1] Pub_BeforNav_cnt = Pub_BeforNav_cnt + 1 endif Pub_inp_flg = True Fend Procedure fucDocComp() ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1]) Pub_docc = Pub_docc + "*"+EVENT_PRM[1]+"*" Pub_DocComp_cnt = Pub_DocComp_cnt + 1 endif Pub_inp_flg = True Fend Procedure fucQuit() ExitExit Fend
// Yahoo!ファイナンスを開き、データをExcelに送りグラフを作成 #N35
IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = True kcode = "4689.t" // 銘柄コード yys=2012; mms=1; dds=1 // 開始年月日 yye=2012; mme=3; dde=1 // 終了年月日 url = "http://info.finance.yahoo.co.jp/history/?code="+kcode+"&sy="+yys+"&sm="+mms+"&sd="+dds+"&ey="+yye+"&em="+mme+"&ed="+dde+"&tm=d=" IE.Navigate(url) BusyWait(IE) Excel = XLOPEN(True) // Excel起動 Pro版の関数 Excel.Range("A1").ColumnWidth = 16 // A列の幅 dim head[] = "日付","始値","高値","安値","終値","出来高","調整後終値" XLSETDATA(Excel, head, "A1") // データ取得 body = IEGetSrc(IE, "BODY") body = Copy(body, Pos("調整後終値*",body)) // 取得開始位置 body = Copy(body, 1, Pos("</TBODY>",body)) // 取得終了位置 num = Length(SPLIT(body, "</tr>"))-2 // 行数 dim sdat[num][7] cnt = 1 for y = num to 1 step -1 for x = 1 to 7 // 列 sdat[y][x] = BetweenStr(body, "<td>", "</td>", cnt) cnt = cnt + 1 next next XLSETDATA(Excel, sdat, "A2") // 一括で設定 Pro版の関数 Excel.ActiveSheet.Name = IEGetData(IE,"TAG=H1") // シート名に企業名 // グラフ作成 CONST xlColumns = 2 CONST xlLine = 4 RunGraph = Excel.ActiveSheet.ChartObjects.Add(440,10,400,400).Chart RunGraph.ChartType = xlLine rng = Excel.Range("A1","E"+num) RunGraph.SetSourceData(Source:=rng, PlotBy:=xlColumns) // 画面更新待ち CONST WM_ACTIVATE = 06 DEF_DLL SendMessageA(Hwnd,Long,Long,Dword):Bool:user32.DLL Procedure BusyWait(ie) Sleep(0.5) // Wait Const TIME_OUT = 90 tm = Gettime() repeat Sleep(0.2) ifb Gettime() - tm > TIME_OUT MsgBox("Time Out:BusyWait") ExitExit endif until (! ie.busy) and (ie.readyState=4) Sleep(0.5) SendMessageA(ie.Hwnd, WM_ACTIVATE, 0, 0) Fend
// Firefox にてGoogleを表示、検索 & ニュース表示 #N36
id = GETID("Mozilla Firefox", "MozillaWindowClass") // Firefoxは起動済みの事 CTRLWIN(id, ACTIVATE) SENDSTR(id, "http://www.google.co.jp/", 1, True) // URL SCKEY(id, VK_RETURN) 表示完了待ち(id, ITM_BTN, "Google 検索") SENDSTR(id, "検索文字", 3, True) // 検索文字 ifb GETSTR(id, 3, STR_EDIT) = "" SENDSTR(id, "検索文字", 4, True) // 3ではなく4の時 endif CLKITEM(id, "Google 検索", CLK_BTN) // 検索ボタン 表示完了待ち(id, ITM_LINK, "ニュース") CLKITEM(id, "ニュース", CLK_LINK) // ニュース // 指定アイテムの文字が確認できるまで待つ Procedure 表示完了待ち(id, kind, item) While True Sleep(0.4) for n in GETITEM(id, kind) if n = item then Exit next wend Fend
// Google Chrome にてGoogleを表示、検索 & ニュース表示 #N37
// 必:起動オプション(accessibilityをOnにする) "--force-renderer-accessibility" path = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" id = Exec(path + " --force-renderer-accessibility --process-per-tab --new-window http://www.google.co.jp/") 表示完了待ち(id, ITM_ACCCLK, "Google 検索") SENDSTR(id, "検索文字", 2, True) // 検索文字 CLKITEM(id, "Google 検索", CLK_BTN) // 検索ボタン 表示完了待ち(id, ITM_LINK, "ニュース") CLKITEM(id, "ニュース", CLK_LINK) // ニュース // 指定アイテムの文字が確認できるまで待つ Procedure 表示完了待ち(id, kind, item) While True Sleep(0.4) for n in GETITEM(id, kind) if n = item then Exit next wend Fend
// MS Edge にてGoogleを表示、検索 & ニュース表示 #N38
DOSCMD("start microsoft-edge:http://www.google.co.jp/") id = GETID("Microsoft Edge", "", -1) 表示完了待ち(id, ITM_BTN, "Google 検索") SENDSTR(id, "検索文字", 1, True) // 検索文字 SCKEY(id, VK_RETURN) 表示完了待ち(id, ITM_LINK, "ニュース") CLKITEM(id, "ニュース", CLK_LINK) // ニュース // 指定アイテムの文字が確認できるまで待つ Procedure 表示完了待ち(id, kind, item) While True Sleep(0.4) for n in GETITEM(id, kind) if n = item then Exit next wend Fend
// Javaのデモアプリ FileChooserDemo を起動、操作 #N39
// Javaアプリは ACC(アクセシビリティインターフェース)指定の必要あり デモ名 = "FileChooserDemo" パス = "C:\Program Files\Java\demo\jfc\" DosCmd("java -jar <#DBL>"+パス+デモ名+"\"+デモ名+".jar<#DBL>", True) id = GETID(デモ名, "SunAwtFrame", -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, "Metal", CLK_ACC, True) // Look and Feel
// メールからスクリプトを指定して実行する(basp21.dll を使用) #N40
// サブジェクトに UWSC xxxx.uws と書かれていればその xxxx.uws を実行 // スケジュールのタイマーにて一定間隔にて起動するよう指定しておく bobj = CreateOLEObj("basp21") output = bobj.RcvMail(サーバ, ユーザID, パスワード, "LIST", GET_CUR_DIR) for i = Length(output)-1 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を呼び出す(足し算をする) #N41
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)"
// スレッドを使い吹出しを複数を出す #N42
PUBLIC clear_fuki = -1 // 消去する識別No.を指定する Balloon("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) Balloon(msg, x, y) while clear_fuki<>pno; sleep(0.1); wend // 消去指定されるまで表示 Fend
// Yahoo!検索Webサービスの利用 #N43
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/7 ガジェット 時計の設定変更 #N44
id = GETID("時計", "BasicWindow") MOUSEORG(id, 2); MMV(0, 0) // メニューを有効にする為の処理 ifb ! CLKITEM(id, "設定", CLK_ACC) // Vista CLKITEM(id, "オプション", CLK_ACC) // Windows7 endif 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)
// キーボードからのキーを一文字づつずらす #N45
for k = VK_A to VK_Y SETHOTKEY(k, ,"fuckey") // AからYまでキー登録 next Sleep(100) for k = VK_A to VK_Y SETHOTKEY(k) // 解除 next // 一文字ずらす Procedure fuckey() KBD(HOTKEY_VK+1) Fend
// CLK_ACC指定時の位置、順番を確認する #N46
// Yahoo!にて "地図"の 位置、順番を確認 id = GETID("Yahoo! JAPAN") for i = 1 to 99 if ! ClkItem(id, "地図", CLK_ACC or CLK_MUSMOVE, False, i) then break Balloon(i, G_MOUSE_X, G_MOUSE_Y+20) Sleep(1) next
// スタートメニュー プログラムを ポップアップメニューにする #N47
PUBLIC pmenu[1000] // メニュー表示用 PUBLIC pexe[1000] // 実行の為のフルパス PUBLIC cnt = 0 s = GET_APPDATA_DIR + "\Microsoft\Windows\Start Menu\Programs" // ユーザーのスタートメニュー reFolder(s, "") s = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs" // パブリックのスタートメニュー reFolder(s, "") n = POPUPMENU(pmenu) if n >= 0 then doscmd(pexe[n], True) // 選択項目の実行 // 再帰処理で項目を取得 Procedure reFolder(path, fldernm) maxnum = GETDIR(path+"\"+fldernm) if (fldernm<>"") and (maxnum>0) pmenu[cnt] = fldernm // サブメニュ項目 cnt = cnt + 1 endif for n = 0 to maxnum-1 if fldernm = "" pmenu[cnt] = GETDIR_FILES[n] // TOP項目 else if n = 0 pmenu[cnt] = "{" + GETDIR_FILES[n] // サブメニュの始まり else pmenu[cnt] = GETDIR_FILES[n] endif endif pmenu[cnt] = Replace(pmenu[cnt], ".lnk", "") // .lnk拡張子は表示しない pexe[cnt] = path+"\"+fldernm+"\"+GETDIR_FILES[n] // フルパス cnt = cnt + 1 next for n = 0 to GETDIR(path+"\"+fldernm, "\")-1 reFolder(path+"\"+fldernm, GETDIR_FILES[n]) // 再帰で下のフォルダーを見る next if (fldernm<>"") and (maxnum>0) pmenu[cnt-1] = pmenu[cnt-1] + "}" // TOPでなければサブメニュを閉じる endif Fend
// iTunesを起動しラジオの選択 #N48
// ラジオ → "80's Flashback" → "ABF ANALOG" itunes = CreateOLEObj("iTunes.Application") id = GETID("iTunes", "iTunes", -1) // ACCによる操作 ClkItem(id, "ラジオ", CLK_ACC) ClkItem(id, "80's Flashback", CLK_ACC or CLK_SHORT) while ! ClkItem(id, "ABF ANALOG", CLK_ACC or CLK_SHORT) Sleep(1) // クリックが確認できるまで wend
// タスクマネージャよりプロセス情報を読み取り、メモリ使用量でソート #N49
if KINDOFOS() >= 23 then Exit // Win7以下用 id = Exec("taskmgr.exe") id = GETID("タスク マネージャ", "#32770", -1) ClkItem(id, "プロセス", CLK_TAB) GETITEM(id, ITM_LSTVEW, 1, 0) // イメージ名 imagenm = Slice(ALL_ITEM_LIST) // 配列コピー GETITEM(id, ITM_LSTVEW, 1, 4) // 消費メモリ memory = Slice(ALL_ITEM_LIST) for n = 0 to Length(imagenm)-1 memory[n] = Val(Token(" ", memory[n])) // 数値部のみ切取り next QSort(memory, 0, imagenm) for n = 0 to Length(imagenm)-1 print imagenm[n] +"<#TAB>"+ memory[n] next
// マインスイーパー自動処理 #N50
if KINDOFOS() < 20 then Exit // Vista/ Win7 Public cell[32,32] // 状態[x,y](地雷個数) Public row, col // 横、縦 Public id id = GETID("マインスイーパ") while True 状態確認() クリック() Sleep(0.5) if GETID("負けました", "#32770", 0.01)>0 then break if GETID("勝ちました", "#32770", 0.01)>0 then break wend // ACCによる全ての状態を取得 Procedure 状態確認() GETITEM(id, ITM_ACCCLK) wks = ALL_ITEM_LIST[Length(ALL_ITEM_LIST)-1] // 最終項目から縦横 col = Val(Trim(BETWEENSTR(wks, "横", "、"))) // マインスイーパ側の表示が縦横で間違っている... row = Val(Trim(BETWEENSTR(wks, "縦", "の"))) res = row +", "+col+"<#CR>" n = 0 for y = 1 to col for x = 1 to row wks = ALL_ITEM_LIST[n] n = n + 1 ifb Pos("開いていない", wks)>0 cell[x,y] = -1 // 開いてない:-1 elseif Pos("地雷はありません", wks)>0 cell[x,y] = 0 // 地雷なし:0 else cell[x,y] = Val(Trim(BETWEENSTR(wks, "周囲に", "個の地雷"))) // 地雷個数 endif res = res + format(cell[x,y], 3) next res = res + "<#CR>" next Balloon(res, 0, 0, 0, 8, "MS ゴシック",,,64) Fend // 解法は乱数による神託方式 Procedure クリック() while True x = RANDOM(row)+1 y = RANDOM(col)+1 ifb cell[x,y]<0 flg = CLK_ACC or CLK_SHORT or CLK_MUSMOVE if y > col/2 then flg = flg or CLK_FROMLAST // 位置が後半であれば後ろからサーチ ClkItem(id, "横 "+y +"、縦 "+x, flg) // 表示がX, Yで逆 break endif wend Fend
// PowerShellより C#を呼び出す(足し算をする) #N51
pls1 = 5 pls2 = 9 wks = "(" + pls1 + "," + pls2 + ")" print PowerShell(CShp + "[Samplecls]::PlusFuc" + wks) PowerShell(CShp + "[Samplecls]::PlusFuc2" + wks) TextBlock CShp $source=@" using System.Windows.Forms; public class Samplecls{ public static string PlusFuc(string a, int b) { return "数値足算:" + (int.Parse(a) + b); } public static void PlusFuc2(string a, int b) { MessageBox.Show("文字足算:" + a + b.ToString()); } } "@ Add-Type -Language CSharp -TypeDefinition $Source -ReferencedAssemblies System.Windows.Forms EndTextBlock
// PowerShellより .Net Frameworkを利用しフォームを作る #N52
PowerShell(netForm, True, 2) id = GETID("test !!!", "WindowsForms", -1) ACW(id, 100, 100) TextBlock netForm [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $form = New-Object System.Windows.Forms.Form $form.width = 300 $form.height = 200 $form.Text = "test !!!" $label = New-Object System.Windows.Forms.Label $label.Location = New-Object System.Drawing.Point(100, 50) $label.Text = "ラベル" $form.Controls.Add($label) $button = New-Object System.Windows.Forms.Button $button.Location = New-Object System.Drawing.Point(100, 100) $button.Text = "ボタン" $button.add_Click({$label.Text = "Hello world !"}) $form.Controls.Add($button) $Form.ShowDialog() EndTextBlock
// デフォルトプリンタの設定を変更する #N53
// デフォルトプリンタの設定 obj = CreateOLEObj("WScript.Network") obj.SetDefaultPrinter("プリンタ名") // プロパティの表示 DOSCMD("rundll32 printui.dll,PrintUIEntry /p /n<#DBL>プリンタ名<#DBL>", True)
// 1分間操作がなかったら場合にモニターをOFF状態にする #N54
DEF_DLL GetTickCount(): Dword: Kernel32 DEF_DLL GetLastInputInfo({Long, Dword}): Bool: User32 CONST DF_SIZE = 8 DIM wktm while True GetLastInputInfo(DF_SIZE, wktm) if GetTickCount() - wktm > 60000 // 60秒以上変化なし POFF(P_MONIPOWER2) break endif sleep(1) wend
// 指定フォルダにあるjpgファイルをペイントにドロップする #N55
folder = "C:\Users\xxxx\Pictures" paintID = exec("mspaint.exe") // ペイントの起動 n = GETDIR(folder, "*.jpg") // jpgファイル名の取得 for i = 0 to n-1 file = GETDIR_FILES[i] DROPFILE(paintID, folder, file) // 1つずつドロップ Balloon((i+1)+"/"+n+": " +file) sleep(5) // 5秒単位で次へ next
// 指定ウィンドウの全オブジェクトの文字を種類別に取得する #N56
id = GETID("xxxx") // ウィンドウ指定 dim name[] = "ボタン", "リスト/コンボ", "タブ", "メニュー", "ツリービュ", "リストビュ", "エディト", "スタテック文字", "ステータスバー", "ツールバー", "ACCクリック可", "ACCテキスト", "ACCエディト" dim kid[] = ITM_BTN, ITM_LIST, ITM_TAB, ITM_MENU, ITM_TREEVEW, ITM_LSTVEW, ITM_EDIT, ITM_STATIC, ITM_STATUSBAR, ITM_TOOLBAR, ITM_ACCCLK, ITM_ACCTXT, ITM_ACCEDIT for x = 0 to Length(name)-1 print name[x] for n in GETITEM(id, kid[x], -1) // GETITEM関数により種別指定で文字取得 print " " + n next print next
// OCRの利用(Office付属) #N57
CONST miLANG_ENGLISH = 9 // English CONST miLANG_JAPANESE = 17 // 日本語 // メモ帳に文字を書き BMP保存 id = Exec("notepad.exe") SendStr(id, "2011/01/01 I am hungry", 1, True) SCKey(id, VK_END, VK_RETURN, VK_RETURN) // キャレットを移動 SaveImg("test.bmp", id, 0, 0, 200, 32, True) // BMPをOCRに読み込む doc = CreateOLEObj("MODI.Document") try doc.Create("test.bmp") except doc.Create("test.bmp") endtry doc.OCR(miLANG_ENGLISH, False, False) for i = 0 to doc.Images.Count-1 print doc.Images[i].Layout.Text next
// IE にてファイルのダウンロード処理 #N58
// IE(IE9以上) にてダウンロードのページが開いている事(http://www.uwsc.info/download.html) ieid = GETID("Internet Explorer", "IEFrame") ClkItem(ieid, "UWSC Free版", CLK_LINK or CLK_SHORT) // Free版のUWSCをクリック sleep(1) // 間が必要 ClkItem(ieid, "\保存\名前を付けて保存", CLK_BTN) // '保存'スプリットボタンの '名前を付けて保存'をクリック setNameFileDlg("abc", ".zip") // ファイル名 abc.zip にてダウンロード closeDlg(ieid) // ダウンロード終了確認 // '名前を付けて保存'ダイアログに名前を設定し保存(fname:保存ファイル名、extens:拡張子) Function setNameFileDlg(fname, extens) Result = False id = GETID("名前を付けて保存", "#32770", 5) if id < 0 then Exit Sleep(1) pp = -1 for n = 1 to 3 // 検索項目が付加される事がある為Edit順番を確認 ifb Pos(extens, GetStr(id, n))>0 pp = n break endif next if pp < 0 then Exit SendStr(id, fname + extens, pp, True) Result = ClkItem(id, "保存", CLK_BTN or CLK_MUSMOVE) Fend // ダウンロード終了確認、フォルダーを開く Procedure closeDlg(ieid) while True Sleep(1) n = GETITEM(ieid, ITM_ACCTXT) if Pos("ダウンロードが完了", ALL_ITEM_LIST[n-1])>0 CLKITEM(ieid, "フォルダーを開く", CLK_BTN) Exit endif Wend Fend
// OpenOffice.org/LibreOffice 表計算(Calc)の操作、存在しない場合にはExcelにて #N59
// Pro版のみ try ex = XLOPEN(, XL_OOOC) // OpenOffice.org もしくは LibreOffice の Calcの起動 except try ex = XLOPEN(, XL_NEW) // Excelはあるか except msgbox("OOo Calcも Excelもありません") Exit endTry endTry anm = SPLIT("A B C D E F G H I") XLSETDATA(ex, anm, "A1") dim dd[9, 9] // 9x9の値作成 for y = 1 to 9 for x = 1 to 9 dd[y, x] = y*10+x next next XLSETDATA(ex, dd, "A2") // 一つずつ設定するよりも配列に入れて一度で渡す、その方が早いので for x = 0 to 8 fum = "=SUM("+anm[x]+"1:"+anm[x]+"9)" // 式 =SUM("A1:A9") XLSETDATA(ex, fum, 12, x+1) next ret = XLGETDATA(ex, "A12:I12") // 値の取得(一列指定でも二次元で返される) for x = 1 to 9 print ret[1][x] next
// IE上のFlashからデータ取得(FXのレート取得) #N60
DEF_DLL SetParent(HWND, HWND): HWND: User32 IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("http://aaa.bbb.ccc/") while True // 接続表示待ち if (! ie.busy) and (ie.readyState=4) then Break sleep(0.1) wend hnd = GetCtlHnd(IE.HWnd,"MacromediaFlashPlayerActiveX", 2) // Flash(リアルタイムレート) if hnd = 0 // IE10以上では Flashは内臓の為ハンドルの取得はできないので、クライアント全体"Internet Explorer_Server"を指定 flash_id = HndToID(GETCTLHND(IE.HWnd,"Internet Explorer_Server")) else flash_id = HndToID(hnd) CtrlWin(HndToID(IE.HWnd), MIN) sleep(2) SetParent(hnd, NULL) // FlashをIEからデスクトップに移動 ACW(flash_id, G_SCREEN_W-STATUS(flash_id, ST_WIDTH), 0) sleep(1) endif DIM dd[9] // 傾き計算 10*30秒 slp = 0 while True for n = 0 to GETITEM(flash_id, ITM_ACCTXT or ITM_BACK)-1 if ALL_ITEM_LIST[n] = "米ドル円" bid = VAL(ALL_ITEM_LIST[n+3]) ask = VAL(ALL_ITEM_LIST[n+6]) endif next SHIFTARRAY(dd, 1) dd[0] = bid // 最直近 if dd[9]>0 then slp = slope(dd)*-100 // データがそろえば傾き計算 Balloon("米ドル円 bid="+ bid +", ask="+ ask +", 傾き="+FORMAT(slp,7,5)) sleep(30) wend // 回帰:傾き Function slope(wk[]) x=0; y=0; x2=0; xy=0 n = Length(wk) for i = 0 to n-1 x = x + i y = y + wk[i] x2 = x2 + i * i xy = xy + i * wk[i] next Result = (xy * n - (x*y)) / (x2 * n - (x*x)) Fend
// マウスがクリック可能領域に入った時に そのオブジェクトの中心にマウスを移動する #N61
sv_loc = "" while True role = POSACC(0, G_MOUSE_X, G_MOUSE_Y, ACC_ROLE or ACC_BACK) // オブジェクト種別の取得 if (role="ボタン")or(role="メニュー項目")or(role="一覧項目")or(role="チェック ボックス")or(role="オプション ボタン") s = POSACC(0, G_MOUSE_X, G_MOUSE_Y, ACC_LOCATION or ACC_BACK) // 位置、サイズの取得 if sv_loc <> s sv_loc = s loc = SPLIT(s, ",", True, True) MMV(loc[0]+(loc[2]/2), loc[1]+(loc[3]/2)) // オブジェクトの中心にマウス移動 endif else sv_loc = "" endif sleep(0.1) wend
// IE上に表示されている文字 「です」を 「だす」に書き換える、カラーも変更 #N62
IE = GETACTIVEOLEOBJ("InternetExplorer.Application") s = IEGETSRC(IE, "body") s = Replace(s, "です", "<font color='#FFFFFF' style='background-color:#996633'>だす</font>") IESETSRC(IE, s, "body")
// CDOを利用したメール送信 #N63
Const SMTP_SERVER = "mail.xxx.yyy.zzz" // SMTPメールサーバー名 Const SMTP_PORT = 587 // ポートNo. Const SMTP_AUTHEN = 1 // SMTP認証: 0:なし、1:basic、2:NTLM Const SMTP_SSL = True // SSL利用 Const SMTP_ID = "xxxxx" // ID Const SMTP_PASWD = "yyyyy" // Password Const SMTP_TIMEOUT = 60 // タイムアウト秒 Const MAILFROM = "from@xxx.yyy.zzz" // 送信者メールアドレス // MailTo = "to@xxx.yyy.zzz" // あて先メールアドレス mailSubj = "題名" // 題名 MailBody = "内容" // 内容 // Const cdoSendUsingPort = 2 // 外部SMTP Const cdoPath = "http://schemas.microsoft.com/cdo/configuration/" objCDO = CreateOLEObj("CDO.Message") With objCDO With .Configuration.Fields .Item(cdoPath+"sendusing") = cdoSendUsingPort .Item(cdoPath+"smtpserver") = SMTP_SERVER .Item(cdoPath+"smtpauthenticate") = SMTP_AUTHEN .Item(cdoPath+"smtpserverport") = SMTP_PORT .Item(cdoPath+"smtpusessl") = SMTP_SSL .Item(cdoPath+"sendusername") = SMTP_ID .Item(cdoPath+"sendpassword") = SMTP_PASWD .Item(cdoPath+"smtpconnectiontimeout") = SMTP_TIMEOUT .Update EndWith .MimeFormatted = True .Fields.Update .From = MAILFROM .To = MailTo .Subject = mailSubj .TextBody = MailBody .Send EndWith
// インプットボックスを利用した計算 #N64
// OKボタンで入力されて計算式を計算する、CANCELボタンで終了 PUBLIC x, y // インプットボックスの位置 s = "" thread locate while True if x = "" s = INPUT("計算") else s = INPUT("計算", s, False, x, y) endif if s = EMPTY then Exit if s = "" then Continue n = Pos("=", s) if n > 0 then s = Copy(s, 1, n-1) try n = Eval(s) except Continue endtry s = s + "= " + n wend // インプットボックスの位置を保存 Procedure locate() while True id = GETID("","TUinpBox_uwsc",-1) x = Status(id, ST_X) y = Status(id, ST_Y) sleep(1) wend Fend
// CSVファイル情報をUWSファイルに取り込んだ形で使う #N65
fp = Fopen("", F_READ or F_WRITE) // テンポラリーファイル作成(ファイル名なし) Fput(fp, csvtxt, F_ALLTEXT) // ファイル形式で利用 for y = 1 to Fget(fp, F_LINECOUNT) for x = 1 to 8 print Fget(fp, y, x) next next Fclose(fp) TEXTBLOCK csvtxt 11, 12, 13, 14, 15, 16, 17, 18 12, 22, 23, 24, 25, 26, 27, 28 31, 32, 33, 34, 35, 36, 37, 38 ENDTEXTBLOCK
// 現在位置を Google マップ で表示する #N66
// Windows8以上、「コントロールパネル」→「位置情報の設定」→「位置情報プラットフォームを有効にする」を Onにする Latitude = SENSOR(SNSR_Location_Latitude) Longitude = SENSOR(SNSR_Location_Longitude) if (Latitude="") or (Longitude="") Msgbox("位置情報の取得ができません。") Exit endif try IE = CREATEOLEOBJ("InternetExplorer.Application") except exec("C:\Program Files\Internet Explorer\iexplore.exe") IE = GETACTIVEOLEOBJ("InternetExplorer.Application") endTry IE.Visible = True IE.Navigate("http://maps.google.com/maps?q=" +Latitude+","+Longitude)
// オーディオ出力が2系統あり、指定WAVファイルのみ別系統で出力する #N67
// 前面にヘッドホン、後方にスピーカが接続された状態にて outn = 0 if SLCTBOX(SLCT_BTN, 0, "ヘッドホン・スピーカーのどちらで鳴らしますか?", "ヘッドホン", "スピーカー") = SLCT_2 then outn = 1 SOUND("C:\Windows\Media\Ring01.wav", True, outn)
// 低レベルで記録したスクリプトのスピードを変える #N68
Repeat fnm = INPUT("スピード変更したいスクリプトを ドラッグ&ドロップしてください。") if fnm = EMPTY then ExitExit Until FOPEN(fnm, F_EXISTS) and (Pos(".uws", fnm)>0) Repeat sp = INPUT("スピードアップ率を入力してください。(0.5~10)<#CR> 0.5=半分速、1=等倍速、10=10倍速") if sp = EMPTY then ExitExit sp = VAL(sp) Until (0.5<=sp) and (sp<=10) fp = FOPEN(fnm, F_READ or F_WRITE) for n = 1 to FGET(fp, F_LINECOUNT) ss = FGET(fp, n) if (Copy(ss,1,4)="MMV(") or (Copy(ss,1,4)="BTN(") or (Copy(ss,1,4)="KBD(") or (Copy(ss,1,4)="ACW(") or (Copy(ss,1,6)="SLEEP(") lsts = Token("/)", Copy(ss,Pos(",",ss,-1)+1,999)) // 最後のカンマ以降を切り出し ss = Copy(ss, 1, Pos(",",ss,-1)) + lsts + "/" + sp + ")" // スピード率を付け替える FPUT(fp, ss, n) endif next FCLOSE(fp) http://www.uwsc.info/sample.html
関連記事.
スポンサーリンク
Comment
助かった。UWSCサイト消えてた。