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

あたかも手操作したように、フォームをもつ他のプログラムを操作するプログラム?

環境/言語:[できればC#]
分類:[.NET]

Windowsでひとつのプログラムを作成したいのです。
そのプログラムの機能は・・・

「他のプログラム(Formを持っていて、テキストボックスとボタンを持っているもの)を起動して、そのテキストボックスに文字を入れて、ボタンをクリックする」

です。
つまり、あたかもマニュアル操作で、他のプログラムを起動して、テキストボックスに入力して、ボタンをクリックしたように、他のプログラムで操作したいのですが。

こういう場合にはどうすればいいのでしょうか?
> こういう場合にはどうすればいいのでしょうか?

  まず、C#のみではできません。
  C++ですネ!・・・

  Win32 APIを多用しますが、基本的にWindows Message のやりとり
  を記録して、それを再生することで、あたかも操作しているかの
  ように動作させれます。

  SendMessage とか、PostMessage 使いますが、送信先のウィンドウ
  ハンドルが必要なので、FindWindow/FindChildWindow/EnumWindow/
  EnumChildWindow とか使います。

  シェアウェアでは・・・
  http://www.uwsc.info/

  ちゃんとありますので、実現可能なプログラムです。

※ まれに操作できないものもありますが、自作すれば、何でできない
  か解る場合もあるかと思います

以上。参考まで
追伸

  SPY++ 使って、WindowMessageを取得すれば、どういうメッセージが
  やりとりされて動作しているのか、わかるかと思います。

以上。
2011/06/28(Tue) 23:09:01 編集(投稿者)

■No28708に返信(オショウさんの記事)
>まず、C#のみではできません。

この部分は「.NET Framework のみではできません」という意味で、「Win32API を使えば C# でもできる」という意図でしょうか?

「C# のみではできません。C++ ですね!」という流れだと、C# での実現性を完全否定しているように見えたので念のためです。
もっとも、P/Invoke の定義を書かないといけないことを考えると C# だと面倒なのは否定しません。

# 「SendInput C#」あたりで検索すればいくつか見つかる感。
この掲示板の過去ログを検索して、参考になりそうなページを探してみました。ただしすべてVB.NETでした。

メモ帳を起動して、PostMessageで文字列を表示
http://dobon.net/vb/bbs/log3-34/21332.html

他ウィンドウのボタンをSendMessageで押したいのですが・・・
http://dobon.net/vb/bbs/log3-20/12272.html

少しでも参考になれば幸いです。

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