以下のコードは、MSDNから少し変更を加えてコピーしました。
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
DllImport("User32")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
int cnt = 0;
private void button1_Click(object sender, EventArgs e)
{
IntPtr calculatorHandle = FindWindow("Notepad", "Untitled - Notepad");
if (calculatorHandle == IntPtr.Zero)
{
MessageBox.Show("Calculator is not running.");
return;
}
SetForegroundWindow(calculatorHandle);
SendKeys.SendWait(cnt.ToString());
SendKeys.SendWait("{ENTER}");
cnt++;
SendKeys.Flush();
System.Threading.Thread.Sleep(1000);
}
問題は、メモ帳の数列が連続していないことです。最初のクリックは常に0になります(予想どおり)。ただし、2回目のクリックからは、結果は予測できません(ただし、シーケンスはまだ順番になっています。たとえば、3、4、5、10、14、15、...)。
ボタンを十分速くクリックすると、連続した順序(0,1,2,3,4、....)で結果を取得できましたが、2つ以上の同じ番号(0,1,2など)が生成される場合があります。 、3、3、3、4、5、6、6、6、7、8、9、...)