私の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
例外がスローされると、常にゼロになります。これは、すべてが正常であることを示すもう1つの指標になります。
SendMessage
私のコードでは次のように宣言されています:
[DllImport( "user32.dll", SetLastError = true )]
internal static extern IntPtr SendMessage( IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam );
ドキュメントが間違っていますか、それともメッセージを間違って使用していますか?