たびたび質問ですみません。
過去ログに似たような内容があったのですが、.NETの内容はなかったのでお聞きしたいと思います。
.NETでアクティブになっているウインドウのテキストエリアにVBからテキストを貼り付けるにはどうしたらいいのでしょうか?
IEやメモ帳など一般のテキストエリアなのですが、ボタンをクリックするとそのテキストエリアにテキストを貼り付けるというコードを書きたいです。
APIを使うとできるらしいのですが、.NETでのAPIの宣言の仕方などがわからないので使えません。
回答よろしくお願いします。
.NETでも標準モジュールを使って同じようにAPIが利用できると思いますが?
メモ帳に書き込むのは
Shell("notepad.exe", vbNormalFocus) 'メモ帳起動
AppActivate("無題 - メモ帳") 'フォーカスを当てる
SendKeys.Send("aaaaaaa") '書き込む
メモ帳のハンドルを取るのはこれで
'API宣言
Private Declare Function FindWindowEx Lib "user32" Alias _
"FindWindowExA" (ByVal hWnd1 As Integer, ByVal _
hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
'ハンドルをTextBoxに表示
TextBox1.Text = CStr(FindWindowEx(0, 0, vbNullString, "無題 - メモ帳"))
ありがとうございます!
あの追加なのですがほかの同じような記事を見たのですが開いているウインドウのテキストエリアに貼り付けるには、そのウインドウにCtrl+Vを送ればいいということが書いてあったのですが、どうやるのでしょうか?
よろしくおねがいします。
これはコピペの"ぺ"です。
SendKeys.Send("^V")
ただしボタンを押した時フォーカスが移ってしまい
ターゲットのテキストエリアに張り付かないのでは。
VBから起動したメモ帳やIEなら
起動する時
Dim id As Integer
id = Shell("C:\Program Files\Internet Explorer\IEXPLORE.EXE", vbNormalFocus)
等としておいて
書き込みは
AppActivate(id)
SendKeys.Send("^V") '書き込む
これでいいわけですが沢山IEやメモ帳が開いている場合など、キャレットのあったIEを探さなければ
ならないので、面倒かも知れません。
ツイート | ![]() |