В моем приложении 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 );
Документация неверна, или я неправильно использую сообщение?
SetLastError=true
в ваш DllImport, чтобыMarshal.GetLastWin32Error()
работал правильно. msdn.microsoft.com/en-us/ библиотека / - person shf301   schedule 20.06.2010