- - PR -
アクティブ・アプリケーションに文字列を書き込む
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-18 10:40
C#で作るアプリケーションから任意のアクティブ・アプリケーションに文字列を書き込みたいのですが、.NETではどのように行えばよいのでしょうか。
Excelがアクティブならそのアクティブセルへ、ユーザー作成のアプリケーションがアクティブならそのカーソルのあるテキストボックスへ、といった具合です。 GetActiveWindowやSendMessegeの代わりに使える機能があるでしょうか。 | ||||||||
|
投稿日時: 2006-04-18 10:57
.net の管理下にいないウインドウを操作するなら 今までどおり WindowsAPI に頼らないと実現できません。 ということで、
を DllImport して呼んであげてください。 | ||||||||
|
投稿日時: 2006-04-18 11:02
>.net の管理下にいないウインドウを操作するなら
>今までどおり WindowsAPI に頼らないと実現できません。 そうですか。ありがとございました。 ...終わってしまった。 | ||||||||
|
投稿日時: 2006-04-18 11:10
Excel に関してならば、Windows API でなくても可能ですが... その他のアプリケーションも入り口さえ用意してくれれば、というところですね。 特化しても仕方がないですけどね。(;^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-18 11:15
ん?APIが使えない環境なんですか? 何かでラップして・・・って意味無いな・・・ | ||||||||
|
投稿日時: 2006-04-18 11:28
>ん?APIが使えない環境なんですか?
いえ、使えます。 "終わった"は、かるあさんの回答で .NETネイティブには代替品なし でファイナルアンサーのようでしたので、このスレも1発目の回答で"終了〜"かと。 GetForgroundWindowからシコシコやります。 | ||||||||
|
投稿日時: 2006-04-18 12:21
とっちゃんです。
文字列が英数字&記号(平たく言えば、1キーとして送りつけることが可能なもの)なら、SendKeys クラスを使えばいいのでは? 日本語を含む「文字列」という場合は、ダメですけどね(^^; 元々「文字列」を送る標準的な手法は存在していないので、やり方としては
というあたりが、誰でも受け付けてくれそうな方法のように思います。 ただ、WM_CHAR 以降は、しゃれにならないような気がしなくもない(^^; _________________ // とっちゃん(高萩 俊行)@わんくま同盟 // とっちゃん’Blog // MS-MVP for Developer Tools - Visual C++ // WindowsInstallerの話題はhttp://www.freeml.com/msiまで | ||||||||
|
投稿日時: 2006-04-18 15:23
ACCESS VBAで痛い目にあった経験からSendKeyは除外していましたが、一番手軽なので少し試してみました。
コードはForm1にTimerを配置して、5秒ごとに SendKeys.Send("0.1"); を発行するだけのもの。 Excel,Word,電卓,VBアプリケーションとキー送信を受けるアプリケーションを起動していおて、デバッグ開始。 適当にExcel,Word,電卓,VBアプリケーションを前面に切り替えながら、約5秒間隔で0.1を受け続けたところ、まあなんとか0.1として受けている様子です。 SendKeysなので当然といえば当然ですが、受け側アプリケーションでユーザーがしている動作(WORDの場合、ENTERキーで仮名漢字変換を確定)によっては0.だけで切れたりしますので、エンドユーザーが使い方を制限できるか確認してみます。 |
1