SENDSTR

タグ:

指定したIDのウィンドウに文字列を送信します。キー入力をする場合はKBD関数を使います。

構文
  1. 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. CREATEOLEOBJ
  2. Shell.FileRun
  3. GETID
  4. SENDSTR
  5. CLKITEM
解説
  1. 1行目
    DIM Shell = CREATEOLEOBJ("Shell.Application")
    Shellオブジェクトを生成する。
  2. 2行目
    Shell.FileRun
    「ファイル名を指定して実行」ウィンドウを開く。
  3. 4行目
    DIM ID = GETID("ファイル名を指定して実行", "#32770")
    「ファイル名を指定して実行」のIDを取得。「#32770」はダイアログのクラス名を示しています。
  4. 5行目
    SENDSTR(ID, "shell:RecycleBinFolder")
    「shell:RecycleBinFolder」と入力する。
  5. 6行目
    CLKITEM(ID, "OK", ITM_BTN)
    「OK」ボタンをクリックする。

メモ帳に本文を入力し[名前を付けて保存]ダイアログボックスを開いて保存する

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
  1. CREATEOLEOBJ
  2. FSO.GetParentFolderName
  3. FSO.GetFileName
  4. EXEC
  5. GETID
  6. SENDSTR
  7. CLKITEM
  8. FSO.FolderExists
  9. CTRLWIN
  10. SLEEP
  11. SCKEY
解説
  1. 1行目
    DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
    FileSystemObjectオブジェクトを生成。
  2. 2行目
    DIM path = "D:\Desktop\sample.txt"
    保存先のパスを指定。
  3. 3行目
    DIM folderspec = FSO.GetParentFolderName(path)
    パスからフォルダ部分を取得。
  4. 4行目
    DIM filename = FSO.GetFileName(path)
    パスからファイル名を取得。
  5. 6行目
    EXEC("notepad")
    メモ帳を起動。
  6. 7行目
    DIM ID = GETID("メモ帳", "Notepad")
    メモ帳のIDを取得。
  7. 8行目
    SENDSTR(ID, "内容", 0)
    メモ帳に文章を入力。
  8. 9行目
    CLKITEM(ID, "ファイル\名前を付けて保存", CLK_MENU)
    [名前を付けて保存]を実行。
  9. 11,27,29行目
    IFB FSO.FolderExists(folderspec) THEN
    	…
    ELSE
    	…
    ENDIF
    変数pathに指定したフォルダが存在したら12行目>>>、存在しなければ28行目>>>
  10. 12行目
    	DIM ID2 = GETID("名前を付けて保存", "#32770")
    [名前を付けて保存]ダイアログボックスのIDを取得。
  11. 14行目
    	CTRLWIN(ID2, ACTIVATE)
    [名前を付けて保存]ウインドウをアクティブ化する。
  12. 15行目
    	SLEEP(0.500)
    0.500秒待機する。
  13. 17行目
    	SCKEY(ID2, VK_F4)
    F4キーでアドレスバーを選択。
  14. 18行目
    	SENDSTR(ID2, folderspec, 1, TRUE)
    フォルダ名を入力。
  15. 19行目
    	SCKEY(ID2, VK_RETURN)
    Enterキーで確定・移動。
  16. 20行目
    	SLEEP(0.500)
    0.500秒待機する。
  17. 22行目
    	SCKEY(ID2, VK_ALT, VK_N)
    Alt+Nでファイル名を選択。
  18. 23行目
    	SENDSTR(ID2, filename, 1, TRUE)
    ファイル名を入力。
  19. 24行目
    	SLEEP(0.500)
    0.500秒待機する。
  20. 26行目
    	CLKITEM(ID, "保存", ITM_BTN)
    [保存]ボタンをクリックする。

クリップボードの文字列を小文字にして返す

DIM str = STRCONV(GETSTR(0), SC_LOWERCASE)
SENDSTR(0, str)
PRINT str
  1. STRCONV
  2. GETSTR
  3. SENDSTR
解説
  1. 1行目
    DIM str = STRCONV(GETSTR(0), SC_LOWERCASE)
    クリップボードの文字列を取得し、小文字に変換した文字列をstrに代入。
  2. 2行目
    SENDSTR(0, str)
    strをクリップボードに送る。
  3. 3行目
    PRINT str
    strを出力する。

クリップボードの文字列を大文字にして返す

DIM str = STRCONV(GETSTR(0), SC_UPPERCASE)
SENDSTR(0, str)
PRINT str
  1. STRCONV
  2. GETSTR
  3. SENDSTR
解説
  1. 1行目
    DIM str = STRCONV(GETSTR(0), SC_UPPERCASE)
    クリップボードの文字列を取得し、大文字に変換した文字列をstrに代入。
  2. 2行目
    SENDSTR(0, str)
    strをクリップボードに送る。
  3. 3行目
    PRINT str
    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)
  1. CREATEOLEOBJ
  2. FSO.GetSpecialFolder
  3. FSO.Folder.Path
  4. FSO.GetTempName
  5. FSO.BuildPath
  6. GETSTR
  7. FOPEN
  8. FPUT
  9. FGET
  10. FCLOSE
  11. 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座標・幅・高さなどを取得することができます。