contextmenustrip からアプリケーションに文字列を送信したいと思います。たとえば、メモ帳を開き、アプリケーションを開き、タスクバーから通知アイコンをクリックして項目を選択し、現在開いているアプリケーションにテキスト (sendkeys.send) を送信したいとします。
これを行う最良の方法は何ですか?
ありがとう。
編集: %{TAB} を送信するだけで、Windows 8 を除くすべての Windows バージョンで機能し、互換性がなければなりません。
W8 は、Microsoft または自己署名によって認定されていない場合、他のアプリケーションへのキーストロークを許可しません。
以下は、アプリケーション (プロセス) をその名前で検索します。アプリケーションが実行中の場合、テキストを受け取ります。ContextMenuStrip のコードを利用するだけです。不足している可能性のあるものがある場合は、お知らせください。
public partial class Form1 : Form
{
[DllImport("User32")]
private static extern int SetForegroundWindow(IntPtr hwnd);
public Form1()
{
InitializeComponent();
Process notepad = Process.GetProcessesByName("notepad").FirstOrDefault();
if (notepad != null)
{
SetForegroundWindow(notepad.MainWindowHandle);
SendKeys.SendWait("test");
}
}
}