Contents
指定したIDのウィンドウに文字列を送信します。キー入力をする場合はKBD関数を使います。
- 構文
- void = SENDSTR( ID, 文字列, [番号, 送信モード, ACC指定] )
- 引数
- ID
- Windowを識別するID
- 文字列
- 送りたい文字列
- 番号
- 左上から数えたエディトコントロールの順番 (1から指定、マイナスを付けた場合にはDisable状態のものもカウント) (0:デフォルトはフォーカスを持ったエディトコントロール)
- 送信モード
- FALSE
- 追加(デフォルト)
- TRUE
- 置き換え
- 2
- 一文字ずつ送信(PostMessage,WM_CHAR)
- ACC指定
- FALSE
- API もしくは UIA インターフェースを使用(デフォルト)
- TRUE
- アクセシビリティ用インターフェースを利用
- 2
- アクセシビリティ用インターフェースを利用(ウィンドウをアクティブ化しない)
- STR_ACC_CELL(5)
- DataGridView内のCell値の変更
- 戻り値
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)
解説
- 1行目
- Shellオブジェクトを生成する。
DIM Shell = CREATEOLEOBJ("Shell.Application")
- 2行目
- 「ファイル名を指定して実行」ウィンドウを開く。
Shell.FileRun
- 4行目
- 「ファイル名を指定して実行」のIDを取得。「#32770」はダイアログのクラス名を示しています。
DIM ID = GETID("ファイル名を指定して実行", "#32770")
- 5行目
- 「shell:RecycleBinFolder」と入力する。
SENDSTR(ID, "shell:RecycleBinFolder")
- 6行目
- 「OK」ボタンをクリックする。
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
- CREATEOLEOBJ
- FSO.GetParentFolderName
- FSO.GetFileName
- EXEC
- GETID
- SENDSTR
- CLKITEM
- FSO.FolderExists
- CTRLWIN
- SLEEP
- SCKEY
解説
- 1行目
- FileSystemObjectオブジェクトを生成。
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
- 2行目
- 保存先のパスを指定。
DIM path = "D:\Desktop\sample.txt"
- 3行目
- パスからフォルダ部分を取得。
DIM folderspec = FSO.GetParentFolderName(path)
- 4行目
- パスからファイル名を取得。
DIM filename = FSO.GetFileName(path)
- 6行目
- メモ帳を起動。
EXEC("notepad")
- 7行目
- メモ帳のIDを取得。
DIM ID = GETID("メモ帳", "Notepad")
- 8行目
- メモ帳に文章を入力。
SENDSTR(ID, "内容", 0)
- 9行目
- [名前を付けて保存]を実行。
CLKITEM(ID, "ファイル\名前を付けて保存", CLK_MENU)
- 12行目
- [名前を付けて保存]ダイアログボックスのIDを取得。
DIM ID2 = GETID("名前を付けて保存", "#32770")
- 14行目
- [名前を付けて保存]ウインドウをアクティブ化する。
CTRLWIN(ID2, ACTIVATE)
- 15行目
- 0.500秒待機する。
SLEEP(0.500)
- 17行目
- F4キーでアドレスバーを選択。
SCKEY(ID2, VK_F4)
- 18行目
- フォルダ名を入力。
SENDSTR(ID2, folderspec, 1, TRUE)
- 19行目
- Enterキーで確定・移動。
SCKEY(ID2, VK_RETURN)
- 20行目
- 0.500秒待機する。
SLEEP(0.500)
- 22行目
- Alt+Nでファイル名を選択。
SCKEY(ID2, VK_ALT, VK_N)
- 23行目
- ファイル名を入力。
SENDSTR(ID2, filename, 1, TRUE)
- 24行目
- 0.500秒待機する。
SLEEP(0.500)
- 26行目
- [保存]ボタンをクリックする。
CLKITEM(ID, "保存", ITM_BTN)
クリップボードの文字列を小文字にして返す
DIM str = STRCONV(GETSTR(0), SC_LOWERCASE)
SENDSTR(0, str)
PRINT str
解説
- 1行目
- クリップボードの文字列を取得し、小文字に変換した文字列をstrに代入。
DIM str = STRCONV(GETSTR(0), SC_LOWERCASE)
- 2行目
- strをクリップボードに送る。
SENDSTR(0, str)
- 3行目
- strを出力する。
PRINT str
クリップボードの文字列を大文字にして返す
DIM str = STRCONV(GETSTR(0), SC_UPPERCASE)
SENDSTR(0, str)
PRINT str
解説
- 1行目
- クリップボードの文字列を取得し、大文字に変換した文字列をstrに代入。
DIM str = STRCONV(GETSTR(0), SC_UPPERCASE)
- 2行目
- strをクリップボードに送る。
SENDSTR(0, str)
- 3行目
- 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)
- CREATEOLEOBJ
- FSO.GetSpecialFolder
- FSO.Folder.Path
- FSO.GetTempName
- FSO.BuildPath
- GETSTR
- FOPEN
- FPUT
- FGET
- FCLOSE
- SENDSTR
関連記事
- ACW (スクリプト関数)
- 指定したIDのウィンドウの位置・サイズを変更します。IDのみを指定した場合、そのウィンドウをアクティブにします。
- CHKBTN (スクリプト関数)
- 指定したIDのウィンドウにあるチェックボックス・ラジオボタンがチェックされているかを返します。
- CLKITEM (スクリプト関数)
- 指定したIDのウィンドウのアイテムをクリックします。アイテムに指定できるものにはボタン・チェックボックス・ラジオボタン・リストボックス・コンボボックス・タブコントロール・メニュー・ツリービュー・リストビュー・ツールバー・リンクがあります。
- CTRLWIN (スクリプト関数)
- ウィンドウの状態を操作します。ウィンドウを終了、アクティブ化、表示・非表示、最大化・最小化などができます。
- GETALLWIN (スクリプト関数)
- 全ウィンドウのIDを取得します。
- GETCTLHND (スクリプト関数)
- ボタン等、オブジェクトのハンドルを取得します。
- GETID (スクリプト関数)
- 指定したウィンドウのIDを取得します。第一引数に取得したいウィンドウのタイトル(一部でも可)を指定します。UWSCでウィンドウを操作するのによく使う関数です。
- GETITEM (スクリプト関数)
- 指定したIDのウィンドウのキャプション文字やリストなどを取得すします。取得した情報は配列変数のALL_ITEM_LIST[ ]に格納されます。戻値は取得した数でInteger型です。
- GETSLIDER (スクリプト関数)
- スライダー(トラックバー、スクロールバー)の値を取得します。
- GETSTR (スクリプト関数)
- 引数に指定したIDのウィンドウの文字列を取得します。取得した文字列を返します。
- HNDTOID (スクリプト関数)
- 引数に指定したハンドル値をIDに変換して返します。IDをハンドル値に変換するにはIDTOHND関数を使います。
- IDTOHND (スクリプト関数)
- 引数に指定したIDをハンドル値に変換して返します。ハンドル値をIDに変換するにはHNDTOID関数を使います。
- MOUSEORG (スクリプト関数)
- マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送ります。
- SCKEY (スクリプト関数)
- ショートカットキーを実行します。
- SETSLIDER (スクリプト関数)
- スライダー(トラックバー、スクロールバー)の値を設定します。
- STATUS (スクリプト関数)
- ウィンドウの各種状態を取得します。タイトル・クラス名・X座標・Y座標・幅・高さなどを取得することができます。