private void button1_Click(object sender, EventArgs e)
{
//获取测试程序的窗体句柄
IntPtr mainWnd = FindWindow(null, "FormLogin");
List listWnd = new List();
//获取窗体上OK按钮的句柄
IntPtr hwnd_button = FindWindowEx(mainWnd, new IntPtr(0), null, "OK");
//获取窗体上所有控件的句柄
EnumChildWindows(mainWnd, new CallBack(delegate(IntPtr hwnd, int lParam)
{
listWnd.Add(hwnd);
return true;
}), 0);
foreach (IntPtr item in listWnd)
{
if (item != hwnd_button)
{
char[] UserChar = "luminji".ToCharArray();
foreach (char ch in UserChar)
{
SendChar(item, ch, 100);
}
}
}
SendMessage(hwnd_button, WM_CLICK, mainWnd, "0");
}
public void SendChar(IntPtr hand, char ch, int SleepTime)
{
PostMessage(hand, WM_CHAR, ch, 0);
System.Threading.Thread.Sleep(SleepTime);
}
public static int WM_CHAR = 0x102;
public static int WM_CLICK = 0x00F5;
[DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter,
string lpszClass, string lpszWindow);
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern int AnyPopup();
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
[DllImport("user32.dll")]
public static extern int EnumThreadWindows(IntPtr dwThreadId, CallBack lpfn, int lParam);
[DllImport("user32.dll")]
public static extern int EnumChildWindows(IntPtr hWndParent, CallBack lpfn, int lParam);
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr SendMessageA(IntPtr hwnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetWindowTextLength(IntPtr hWnd);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr GetParent(IntPtr hWnd);
public delegate bool CallBack(IntPtr hwnd, int lParam);