2016-06-22 3 views
0

現在、X秒ごとに別のプログラム(メモ帳)に「キープレス」(仮想キーコードの文字Aまたは0x41)を送信するプログラムを開発しています。 NON Foreground Windowで "Key Press"をシミュレートします

Process[] processes = Process.GetProcessesByName("notepad"); 

foreach (Process proc in processes) { 
    SetForegroundWindow(proc.MainWindowHandle); 
    // Do Whatever 
} 

Thread.Sleep(1000); 

はメモ帳をフォアグラウンドにしなくても、その実行する方法があります:

問題は、それが動作するために、私は他のプログラム(メモ帳)FOREGROUND、例にあるようにする必要があるということです?

バックグラウンドで実行できるようなものはありますか?

答えて

0

あなたはwinApi経由でそれを行うことができます。

[DllImport("user32.dll")] 
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 
[DllImport("user32.dll")] 
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); 
[DllImport("user32.dll")] 
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); 

public static void sendKeystroke(ushort k) 
{ 
    const uint WM_KEYDOWN = 0x100; 
    const uint WM_SYSCOMMAND = 0x018; 
    const uint SC_CLOSE = 0x053; 

    IntPtr WindowToFind = FindWindow(null, "Untitled1 - Notepad++"); 

    IntPtr result3 = SendMessage(WindowToFind, WM_KEYDOWN, ((IntPtr)k), (IntPtr)0); 
    //IntPtr result3 = SendMessage(WindowToFind, WM_KEYUP, ((IntPtr)c), (IntPtr)0); 
} 
:あなたは次の操作を行うことができ、この linkによる

のSendMessageを使用してみてください

関連する問題