本ページには広告が含まれています。
目次
指定したIDのウィンドウに文字列を送信します。キー入力をする場合はKBD関数を使います。
- 構文
- void = SENDSTR( ID, 文字列, 番号, 送信モード, ACC指定 )
- 引数
- ID (Integer)必須
- Windowを識別するID
- 文字列 (String)必須
- 送りたい文字列
- 番号 (Integer = 0)省略可
- 左上から数えたエディトコントロールの順番 (1から指定、マイナスを付けた場合にはDisable状態のものもカウント) (0:デフォルトはフォーカスを持ったエディトコントロール)
- 送信モード (Integer = False)省略可
- FALSE
- 追加(デフォルト)
- TRUE
- 置き換え
- 2
- 一文字ずつ送信(PostMessage,WM_CHAR)
- ACC指定 (Integer = False)省略可
- FALSE
- API もしくは UIA インターフェースを使用(デフォルト)
- TRUE
- アクセシビリティ用インターフェースを利用
- 2
- アクセシビリティ用インターフェースを利用(ウィンドウをアクティブ化しない)
- STR_ACC_CELL(5)
- DataGridView内のCell値の変更
- 戻り値
使い方
メモ帳の置換ウィンドウを開き、各入力ボックスに入力ボックスの番号を入力します。
GETITEM関数の種別(第二引数)にITM_EDIT、番号(第三引数)に-1を指定することで入力ボックスが何個あるかを取得しています。
DIM ID = EXEC("notepad")
CLKITEM(ID, "編集\置換", ITM_MENU)
DIM ID2 = GETID("置換", "#32770")
FOR i = 0 TO GETITEM(ID2, ITM_EDIT, -1)
SENDSTR(ID2, i, i, TRUE)
NEXT
SendMessageAを使ってメモ帳にメッセージを送る方法
DEF_DLL FindWindowA(string, string): long: user32.dll
DEF_DLL FindWindowExA(long, long, string, string): long: user32.dll
DEF_DLL SendMessageA(long, long, long, string): long: user32.dll
EXEC("notepad")
hNotePad = FindWindowA("Notepad", NULL)
hEdit = FindWindowExA(hNotePad, 0, "Edit", NULL)
PRINT SendMessageA(hEdit, 12, 0, "送信するメッセージ")
プログラム実行例
ファイル名を指定して実行で「ごみ箱」を開く
DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.FileRun
DIM ID = GETID("ファイル名を指定して実行", "#32770")
SENDSTR(ID, "shell:RecycleBinFolder")
CLKITEM(ID, "OK", ITM_BTN)
使用関数
解説
メモ帳に本文を入力し[名前を付けて保存]ダイアログボックスを開いて保存する
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM path = "D:\Desktop\sample.txt"
DIM folderspec = FSO.GetParentFolderName(path)
DIM filename = FSO.GetFileName(path)
EXEC("notepad")
DIM ID = GETID("メモ帳", "Notepad")
SENDSTR(ID, "内容", 0)
CLKITEM(ID, "ファイル\名前を付けて保存", CLK_MENU)
IFB FSO.FolderExists(folderspec) THEN
DIM ID2 = GETID("名前を付けて保存", "#32770")
CTRLWIN(ID2, ACTIVATE)
SLEEP(0.500)
SCKEY(ID2, VK_F4)
SENDSTR(ID2, folderspec, 1, TRUE)
SCKEY(ID2, VK_RETURN)
SLEEP(0.500)
SCKEY(ID2, VK_ALT, VK_N)
SENDSTR(ID2, filename, 1, TRUE)
SLEEP(0.500)
CLKITEM(ID, "保存", ITM_BTN)
ELSE
PRINT "フォルダが存在しません。"
ENDIF
使用関数
解説
クリップボードの文字列を小文字にして返す
DIM str = STRCONV(GETSTR(0), SC_LOWERCASE)
SENDSTR(0, str)
PRINT str
使用関数
解説
クリップボードの文字列を大文字にして返す
DIM str = STRCONV(GETSTR(0), SC_UPPERCASE)
SENDSTR(0, str)
PRINT str
使用関数
解説
csvファイルをHTMLのテーブルデータにする(csvToHTML)
CSVのデータをHTML(テーブル)に変換します。
クリップボードにcsvファイルのパスをコピーして実行します。
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM name = FSO.GetTempName
DIM TempPath = FSO.BuildPath(folderspec, name)
DIM path = GETSTR(0)
DIM FID = FOPEN(path, F_READ)
DIM FID2 = FOPEN(TempPath, F_READ OR F_WRITE)
FPUT(FID2, "<table>", F_ALLTEXT)
FOR row = 1 TO FGET(FID, F_LINECOUNT)
DIM col = 1
FPUT(FID2, "<#TAB><tr>", 0)
WHILE FGET(FID, row, col) <> ""
FPUT(FID2, "<#TAB><#TAB><td>" + (FGET(FID, row, col)) + "</td>", 0)
col = col + 1
WEND
FPUT(FID2, "<#TAB></tr>", 0)
NEXT
FPUT(FID2,"</table>", 0)
FCLOSE(FID)
FCLOSE(FID2)
FID = FOPEN(TempPath, F_READ)
SENDSTR(0, FGET(FID, F_ALLTEXT))
PRINT FGET(FID, F_ALLTEXT)
FCLOSE(FID)
使用関数
解説
ファイルを開いているプロセスを調べる
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
WITH FSO
DIM Folder = .GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM filename = .GetTempName
DIM path = .BuildPath(folderspec, filename)
ENDWITH
DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.FileRun()
DIM ID = GETID("ファイル名を指定して実行", "#32770")
SENDSTR(ID, "cmd /c openfiles /query /fo CSV > " + path)
CLKITEM(ID, "OK", CLK_BTN)
SLEEP(0.500)
REPEAT
SLEEP(0.100)
UNTIL GETID("C:\WINDOWS\system32\cmd.exe", "ConsoleWindowClass") = -1
DIM FID = FOPEN(path, F_READ)
TRY
DIM ID2 = GETID("使用中", "OperationStatusWindow")
GETITEM(ID2, ITM_ACCTXT, 1)
DIM str = ALL_ITEM_LIST[1]
DIM sep = IIF(POS("フォルダー", STATUS(ID2, ST_TITLE)) <> 0, "\", "")
DIM msg = "■" + str + "<#CR>"
FOR r = 5 TO FGET(FID, F_LINECOUNT)
IF POS("\" + str + sep, FGET(FID, r, 3)) <> 0 THEN
msg = msg + "ID:" + FGET(FID, r, 1) + ", プロセス名:" + FGET(FID, r, 2) + "<#CR>"
ENDIF
NEXT
FCLOSE(FID)
REPEAT
FUKIDASI(TRIM(msg))
SLEEP(0.100)
UNTIL GETID("使用中", "OperationStatusWindow") = -1
FINALLY
FSO.DeleteFile(path)
ENDTRY
//////////////////////////////////////////////////
// 【引数】
//
// 【戻り値】
//
//////////////////////////////////////////////////
PROCEDURE forceQuit()
EXITEXIT
FEND
//////////////////////////////////////////////////
// 【引数】
// expr : 評価する式
// truepart : 評価した式がTrueのときに返す値
// falsepart : 評価した式がFalseのときに返す値
// 【戻り値】
// truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
IFB EVAL(expr) THEN
RESULT = truepart
ELSE
RESULT = falsepart
ENDIF
FEND
使用関数
解説
関連記事
- ACW関数 (スクリプト関数)
- 指定したIDのウィンドウの位置・サイズを変更します。IDのみを指定した場合、そのウィンドウをアクティブにします。
- CHKBTN関数 (スクリプト関数)
- 指定したIDのウィンドウにあるチェックボックス・ラジオボタンがチェックされているかを返します。
- CLKITEM関数 (スクリプト関数)
- 指定したIDのウィンドウのアイテムをクリックします。アイテムに指定できるものにはボタン・チェックボックス・ラジオボタン・リストボックス・コンボボックス・タブコントロール・メニュー・ツリービュー・リストビュー・ツールバー・リンクがあります。
- GETID関数 (スクリプト関数)
- 指定したウィンドウのIDを取得します。第一引数に取得したいウィンドウのタイトル(一部でも可)を指定します。UWSCでウィンドウを操作するのによく使う関数です。
- GETITEM関数 (スクリプト関数)
- 指定したIDのウィンドウのキャプション文字やリストなどを取得します。取得した情報は配列変数のALL_ITEM_LIST[ ]に格納されます。戻値は取得した数でInteger型です。
- HNDTOID関数 (スクリプト関数)
- 引数に指定したハンドル値をIDに変換して返します。IDをハンドル値に変換するにはIDTOHND関数を使います。
- CTRLWIN関数 (スクリプト関数)
- ウィンドウの状態を操作します。ウィンドウを終了、アクティブ化、表示・非表示、最大化・最小化などができます。
- GETALLWIN関数 (スクリプト関数)
- 全ウィンドウのIDを取得します。
- IDTOHND関数 (スクリプト関数)
- 引数に指定したIDをハンドル値に変換して返します。ハンドル値をIDに変換するにはHNDTOID関数を使います。
- MOUSEORG関数 (スクリプト関数)
- マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送ります。