Csharp/C#教程:在c#中使用WINAPI单击消息框的“确定”按钮分享


在c#中使用WINAPI单击消息框的“确定”按钮

我试图使用winapi点击C#窗体的消息框上的“确定”按钮。 以下是我正在处理的代码。

private const int WM_CLOSE = 16; private const int BN_CLICKED = 245; [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int SendMessage(int hWnd, int msg, int wParam, IntPtr lParam); [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle); //this works hwnd = FindWindow(null, "Message"); if(hwnd!=0) SendMessage(hwnd, WM_CLOSE, 0, IntPtr.Zero); //this doesn't work. hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "ok"); SendMessage((int)hwndChild, BN_CLICKED, 0, IntPtr.Zero); 

虽然我在hwndChild获得了一个值,但它没有识别出BN_CLICKED 。 我不确定我错过了什么。 任何帮助?

我试图关闭另一个应用程序的消息框按钮,这就是我正在做的事情。 但是,我仍然遗漏了一些东西。

 IntPtr hwndChild = IntPtr.Zero; hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero,' '"Button", "OK"); SendMessage((int)hwndChild, WM_COMMAND, (BN_CLICKED '<<16) | IDOK, hwndChild); 

BN_CLICKED不是消息。 您需要发送一条WM_COMMAND消息,其中包含WParam中的BN_CLICKED通知和按钮ID以及lParam的按钮句柄。

按钮的父窗口通过WM_COMMAND消息接收此通知代码。

 private const uint WM_COMMAND = 0x0111; private const int BN_CLICKED = 245; private const int IDOK = 1; [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(hwndChild, WM_COMMAND, (BN_CLICKED << 16) | IDOK, hwndChild); 

Finallu,这适合我。 首先单击可能会激活窗口,然后单击第二次单击按钮。

上述就是C#学习教程:在c#中使用WINAPI单击消息框的“确定”按钮分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

 SendMessage(btnHandle, WM_LBUTTONDOWN, 0, 0); SendMessage(btnHandle, WM_LBUTTONUP, 0, 0); SendMessage(btnHandle, WM_LBUTTONDOWN, 0, 0); SendMessage(btnHandle, WM_LBUTTONUP, 0, 0); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1042226.html

(0)
上一篇 2022年1月29日
下一篇 2022年1月29日

精彩推荐