例えばabc.exeというアプリがあったとします。
このアプリには文字列を入力するフォームがいくつかあり、
このアプリのフォームに文字を入れるプログラムを作成したいと思います。
まずはabc.exeをアクティブにし、
アプリのフォームの上から順に配列に代入された文字列の入力をしたいと思います。
つまり、
abc.exeの一番上のフォームにはmoji[0]にある文字列
二番目のフォームにはmoji[1]にある文字列
三番目のフォームにはmoji[2]にある文字列
という形です、こういったことは可能でしょうか?
SendKeys.SendWaitというのはこういうケースでも使えるのでしょうか?
もし可能であれば解説ページ、コードの例をご教示頂ければ幸いです。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
補足説明の方ありがとうございます。
かなり力技になってしまいますが・・・よければご参考までに
まず市販ソフトということなのでTabIndexが設定されてると思います。
そこで、Button押下後Tabキーと入力文字キーを送ってやります。
下記にサンプルを記述します。
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
extern static IntPtr GetWindow(IntPtr hWnd, uint uCmd);
[DllImport("user32.dll")]
extern static IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
extern static int GetWindowText(IntPtr hWnd, StringBuilder lpStr, int nMaxCount);
[DllImport("user32.dll")]
extern static bool IsWindowVisible(IntPtr hWnd);
[DllImport("user32.dll")]
extern static bool SetForegroundWindow(IntPtr hWnd);
//ButtonClickイベント
const int GW_HWNDNEXT = 2;
StringBuilder sb = new StringBuilder(100);
IntPtr hwnd = GetForegroundWindow();
while (hwnd != IntPtr.Zero)
{
if (IsWindowVisible(hwnd))
{
GetWindowText(hwnd, sb, sb.Capacity); // タイトルバー文字列を取得
if (sb.ToString().IndexOf(textBox1.Text) != -1)
{
SetForegroundWindow(hwnd); // アクティブ
/***
*ここにSendKeys.SendWaitでキーを送ります。
*ラジオボタンがある場合Tabキーでラジオボタンをアクティブにし「↑」「↓」ボタンで変更
*チェックボックスの場合スペースキーでOnOff切り替え可能
*下記にキーコードが記述されています。
*MSDN SendKeys:http://msdn.microsoft.com/ja-jp/library/system.w …
*
*
***/
break;
}
}
hwnd = GetWindow(hwnd, GW_HWNDNEXT);
}
この例ではTextBox1に別アプリケーションの名前の一部を入れることでアクティブにしています。
Ex)GoogleChrome → Google を入力し、Button1をクリックでGoogleChromeがアクティブになります。
力技すぎて汎用性も何もありませんが・・・ご参考までに
ご丁寧な解説に感謝します。
さっそく実行しまして、自分の好み通りに設定したところ
面白いようにうまくいきました。
助かりました、本当にありがとうございます。
また機会がありましたらよろしくお願いします。
No.2
- 回答日時:
申し訳ありません。
説明を履き違えていましたね。ちなみに補足ですが
>早速本題ですが、キーロガーの様なソフトでいいんですよね・・・?
これは別にキーロガー自体を指しているわけではありません。キーロガーの様な入力されたものを監視するということを指して記述しました。
監視するということは入力されたものが取得できるということです。
>アプリのフォームの上から順に配列に代入された文字列の入力をした
いと思います。
このことからTextBoxか何かに文字を入れ配列に代入していると判断しました。そのことから「キーで入力した値を[文字を入れるプログラム(a)]のオブジェクトに格納する」と推測していました。
>シンプルに言うとaとbのアプリがありまして、bのアプリ内の変数に宣言されている文字列をaのアプリの文字入力フォームにボタン一つで入力するというものです。
正しい表現ではないですね。この書き方だとなんとなくは伝わりますが不明確な部分が多いです。
「b内で宣言した変数に代入されている文字列を、aの文字入力フォームに、aについているボタンで格納する。」
又は、
「b内で宣言した変数に代入されている文字列を、aの文字入力フォームに、bについているボタンで格納する。」
かどちらかですか?それとも違いますでしょうか?
ちなみにaは自作ソフトというのは分かりますがbはどうなのでしょうか?
補足宜しくお願いします。
この回答への補足
rk_les様
度々のご回答に感謝します。
説明不足で申し訳ありません。
「b内で宣言した変数に代入されている文字列を、aの文字入力フォームに、bについているボタンで格納する。」というのが正しいです。
ちなみにbが自作ソフトでaが市販のソフトです、
市販のソフトの構成が複雑なため、入力の手間を省くために考えたのがbのソフトです。
お時間のある時にでもアドバイス頂ければ幸いです
よろしくお願いします。
No.1
- 回答日時:
こんにちは。
早速本題ですが、キーロガーの様なソフトでいいんですよね・・・?
このようなソフトではグローバルフックをするのが一般的です。
試してはいませんがSendKeyでも出来るとは思います・・・がかなり面倒だとおもいます。
http://homepage1.nifty.com/MADIA/vc/vc_bbs/20050 …
上記のサイトが非常に参考になると思います。
ご参考までに
この回答への補足
お返事ありがとうございます。
キーロガーとは違って、キーボード入力内容やマウスの動き等を記録する必要はございません。
私の説明が分かりにくいので申し訳ありませんが
シンプルに言うとaとbのアプリがありまして、bのアプリ内の変数に宣言されている文字列をaのアプリの文字入力フォームにボタン一つで入力するというものです。
他のアプリを動かすアプリということです
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
別のアプリケーションのテキストフィールドに入力する方法
Visual Basic(VBA)
-
C#で自分のウインド・ハンドルを取得するにはどうすればよいのでしょうか
C言語・C++・C#
-
VBAでエクセル内の情報を他のアプリケーションへ自動入力したいです
Visual Basic(VBA)
-
-
4
【sendkeysメソッドが動かずに苦慮しております】
Visual Basic(VBA)
-
5
自作アプリからAPIで他のアプリとデータやり取り
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c#で他のアプリの文字入力フォ...
-
PIC18F26K22でsscanf関数を使い...
-
プログラムによく出てくるst...
-
引用符と二重引用符
-
%dなどの違い
-
【c++】文字列の操作
-
nullと""、\\0とEOFの違いにつ...
-
C++のnewで確保したメモリーの...
-
VB.NETでファイル名順にファイ...
-
C言語 構造体の中に共用体を定...
-
関数から配列を返すには?
-
C言語のポインタに直接アドレス...
-
malloc呼び出し時のセグメンテ...
-
C言語 配列の長さの上限
-
構造体配列のソート
-
C言語の文字列?処理 strcpyやl...
-
C#で構造体の配列を持った構造...
-
2次元配列を戻り値とする関数?
-
init関数の意味
-
LoadLibraryでAccess Violation...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムによく出てくるst...
-
C#でstringをポインタとして渡す
-
nullと""、\\0とEOFの違いにつ...
-
WSH(VBS)でJSONの文字列を読み...
-
VB6.0でのバイナリデータの扱い...
-
TCL言語で文字列検索方法を教え...
-
C++で入力した文字列から数字を...
-
シリアル通信で0x00を送信した...
-
16進数を2文字ずつ配列に格納し...
-
char型配列の最大要素数
-
[C++]WCHARの1文字目しか表示で...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
構造体→文字列→構造体 をする方法
-
%dなどの違い
-
数字の入った配列をファイルへ...
-
c#で他のアプリの文字入力フォ...
-
引用符と二重引用符
-
Shift_JIS(16進)を文字に変換す...
-
CSVファイルの「”」について
-
AnsiStringについて
おすすめ情報