Код ниже, я скопировал из 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 (как и ожидалось). но со второго щелчка результат непредсказуем (но последовательность все еще в порядке, например, 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, ...)