SendMessage to child windows (计算器试试)

SendMessage to child windows (Calculator try)

到目前为止我已经编写了我的代码...

[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 发送到计算器按钮.. 我不明白,我如何选择 windows 和具有相同 class

的按钮

也许有人会很好,会向我解释如何做到这一点,也许会写一些简单的例子。 非常感谢,抱歉我的英语不好:/

如果有两个(或更多)windows具有相同的class名称和文本,最好使用EnumChildWindows API function. Since you are using C#, here是这个API函数的一个例子.

您可以列出所有 child windows 并随心所欲地使用它们。