■16078 / ) |
Re[2]: アプリケーションを起動してキーストロークを送りかた |
□投稿者/ RJ (30回)-(2008/03/27(Thu) 19:43:42)
|
■No16071 (シャノン さん) に返信 > ■No16066 (RJ さん) に返信 >>アプリケーションを起動してキーストロークを送りかたがわかりません・・・ >>Visual Basic にはあるのですがc#にはないのですか? > > Form の SendKeys が代わりに使えるでしょうか。
同じアプリケーション上でボタンにキーを登録してデバッグなし開始では動作確認できました ぼくが作ったコード(ボタンが2つあり1のボタンを押すと2のボタンにタブ移動し2のボタンが押されメモ帳が起動するようにしました) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("notepad"); } private void button1_Click(object sender, EventArgs e) { // Send the enter key to the button, which raises the click // event for the button. This works because the tab stop of // the button is 0. SendKeys.Send("{Tab}"); SendKeys.Send("{Enter}"); } } }
しかし 別のアプリケーション上では動作するまえにエラーでます・・・ サンプルコード(電卓を別アプリケーションとしてる) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } [DllImport("USER32.DLL")] public static extern IntPtr FindWindow(string lpClassName,string lpWindowName); [DllImport("USER32.DLL")] public static extern bool SetForegroundWindow(IntPtr hWnd); private void button1_Click(object sender, EventArgs e) { IntPtr Handle = FindWindow("SciCalc", "Calculator"); if (Handle == IntPtr.Zero) { MessageBox.Show("Calculator is not running."); return; } SetForegroundWindow(Handle); SendKeys.SendWait("111"); SendKeys.SendWait("*"); SendKeys.SendWait("11"); SendKeys.SendWait("=");
どこかまちがっていますか?おしえてください。
|
|