DOBON.NET DOBON.NETプログラミング掲示板過去ログ

他のアプリケーションに文字送信

分類:[全般]

知っている方がいましたら教えて下さい。
今VB.NETにて他のアプリケーションに文字列を送信したいのですが、
(簡単に言えば自作アプリからメモ帳に文字を送る感じです。)
SendMessage APIを使用し送ればいいことまではわかったのですが、
どうもうまくいきません。

わかる方いらっしゃいましたらどうか教えて下さい。
■No339に返信(観ちゃんさんの記事)
> 知っている方がいましたら教えて下さい。
> 今VB.NETにて他のアプリケーションに文字列を送信したいのですが、
> (簡単に言えば自作アプリからメモ帳に文字を送る感じです。)
> SendMessage APIを使用し送ればいいことまではわかったのですが、
> どうもうまくいきません。

代わりにSendKeys.Sendメソッドを使うのはどうでしょうか?

SendMessage関数をどのように使ってうまく行かなかったのかをお書きいただかないと、回答する側はどうしようもないと思うのですが。
どうも説明不足だったようでごめんなさい。

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Private Const WM_SETTEXT As Integer = &HC

Public pintHandle As Integer

Public Function OutputText(ByVal strMessage As String) As Long
OutputText = SendMessage(pintHandle, WM_SETTEXT, 0&, strMessage)
End Function

------------------------

Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start("Notepad.exe")

objAcadCommand.pintHandle = p.Handle.ToInt32
lngRtn = objAcadCommand.OutputText("123")

このような感じでclassを作成し、メモ帳を起動しやってみたのですがだめでした。
調べた限りでは、メモ帳のテキストボックスのハンドルを取得しなければいけなんですよね?
このハンドルの取得もAPIでやらなくてはいけないのでしょうか?
とりあえず、管理人さんの紹介のSendkeyを使用してやってみます。
メモ帳のハンドルの取得方法なども知っている方いらっしゃいましたら教えていただけたらなと思います。

よろしくお願いします
■No390に返信(観ちゃんさんの記事)
> このような感じでclassを作成し、メモ帳を起動しやってみたのですがだめでした。
> 調べた限りでは、メモ帳のテキストボックスのハンドルを取得しなければいけなんですよね?
> このハンドルの取得もAPIでやらなくてはいけないのでしょうか?

きっとFindWindowEx関数を使うことになると思います。

また、p.Handleではなく、p.MainWindowHandleです。
管理人様レスありがとうございます。
とりあえず、教えていただいた情報で試行錯誤してみます。
いろいろとありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板