【VBA】SendMessageで文字列を取得

ハンドルの取得

おはろー。早起きは三文の徳と言うけど、長時間寝る体力がなくて朝が早いだけのjimです✋

今回は、『SendMessage』の文字列取得について、記事を書いていきます。

『SendMessage』は、ハンドルに文字列を送ったり受け取ったりできるやーつです。

何で『SendMessage』か?ってーと、派遣先の端末が死んで『サルベージュできなかったソースコード』の中に、ソレを沢山使ったツールがあるっぽいんだよね。

文字列を送るコードは残ってるんだけど、受け取るコード使ってるツールが見つからなくてさ。これはもう、死んだ端末にあるよね😥

だから、次に使う前にブログに載せておけば、楽かなって。。

というか、それ以外にもAPI使ってた気がするんだよねぇ。面倒だわぁ。。。

ってことで、以前にも紹介したハンドルの取得から(ここでもSendMessage使ってるけど文字列送るだけ)。

例えば、以下のメモ帳(親)のEdit(子)を取得するよ。

『*無題 – メモ帳』って名前の親ハンドルを取得して、Editってクラスの子ハンドルを取得します。

あれ?メモ帳の名前にアスタリスクなんて付いたっけ?まあ、いいか。。

コードを記述すると以下のような感じ。

 

文字列を取得

次は、メモ帳内の文字列を『SendMessage』で取得していく。

文字列を受け取るバッファ用と、バッファの長さ格納用にLong型の変数を宣言。それから、文字列を受け取る為にString型の変数を宣言します。

んで、文字列の長さを取得し、その長さ+1の空白文字列を用意。

最後に『SendMessage』で文字列を受け取ります。

そうすっと、以下の感じのコードになる。

 

まとめ

うーん!ってすると以下のようになります。

これで、文字列の取得ができます。

でも、実際に自動化する時は、ハンドルの取得が面倒で面倒で。。。

派遣先の『.NETツール』の自動化依頼なんて、「そのツールを改修しろよ!」って感じだし、『もう、DB触らせてくれないかなぁ。』って思ってます😓

したら、またねぇ✋