到目前为止,我已经编写了我的代码......
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr IParam);
private const int BM_CLICK = 0x00F5;
...
IntPtr win = FindWindow("CalcFrame", "Calculator");
if (!win.Equals(IntPtr.Zero))
{
IntPtr win2 = FindWindowEx(win, IntPtr.Zero, "CalcFrame", null);
if (!win2.Equals(IntPtr.Zero))
{
MessageBox.Show("ok");
}
}
我的问题是,如何将BM_CLICK发送到计算器按钮.. 我不明白,我怎么能选择同一类的窗口和按钮
也许有人会这么好,并会解释我如何做到这一点,也许会写一些简单的例子。 非常感谢,抱歉我的英文不好:/
答案 0 :(得分:0)
如果有两个(或更多)窗口具有相同的类名和文本,则最好使用EnumChildWindows API函数。由于您使用的是C#,因此here是此API函数的示例。
您可以列出所有子窗口并随意执行任何操作。