在我的 C# 应用程序中,我试图使用该TDM_CLICK_BUTTON
消息单击 TaskDialog 中的按钮。这基本上工作得很好。我期望发生的事情,发生了。我什至收到TDN_BUTTON_CLICKED
通知。
但是文档说,SendMessage
如果调用成功,返回值将是非零的。但它总是对我返回零。
这是我的代码:
public void ClickButton( int buttonId ) {
bool success = UnsafeNativeMethods.SendMessage(
WindowHandle,
(uint)UnsafeNativeMethods.TASKDIALOG_MESSAGES.TDM_CLICK_BUTTON,
(IntPtr)buttonId,
IntPtr.Zero ) != IntPtr.Zero;
if( !success ) {
int lastWin32Error = Marshal.GetLastWin32Error();
throw new Win32Exception( lastWin32Error, "SendMessage for TDM_CLICK_BUTTON failed." );
}
}
lastWin32Error
抛出异常时始终为零。这将是一切都很好的另一个指标。
SendMessage
在我的代码中声明如下:
[DllImport( "user32.dll", SetLastError = true )]
internal static extern IntPtr SendMessage( IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam );
是文档不正确还是我错误地使用了消息?