[p / invoke打开的对话框中的单击按钮

问题描述 投票:0回答:1

此代码通过单击表单上的按钮来打开对话框

IntPtr m = FindWindow("TForm1", "Smart Design");

IntPtr b = FindWindowEx(m, IntPtr.Zero, "TButton", "Update List");
SendMessage(b, BM_CLICK, 0, 0);

如何在打开的对话框中单击确定按钮?

我尝试了此代码,但失败了:

IntPtr d = FindWindow("TDialog4", "Information");

IntPtr k = FindWindowEx(d, IntPtr.Zero, "TButton7", "OK");
SendMessage(k, BM_CLICK, 0, 0);
c# pinvoke ui-automation
1个回答
0
投票

我尝试改为向对话框发送WM_COMMAND。

    private const uint WM_COMMAND = 0x0111;
    private const int BM_CLICKED = 245;

    [DllImport("user32.dll", CharSet=CharSet.Auto)]
    public static extern int SendMessage(IntPtr hWnd, uint msg, 
    int wParam, IntPtr lParam);

    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr FindWindowEx(IntPtr parentHandle,
    IntPtr childAfter, string className,  string  windowTitle);

    SendMessage(k, WM_COMMAND, (BM_CLICKED << 16) | 1, k);
© www.soinside.com 2019 - 2024. All rights reserved.