내 C# 응용 프로그램에서 TDM_CLICK_BUTTON
메시지를 사용하여 TaskDialog의 단추를 클릭하려고합니다. 이것은 기본적으로 잘 작동합니다. 내가 기대하는 것은 일어난다. 심지어 TDN_BUTTON_CLICKED
알림을받습니다.TDM_CLICK_BUTTON 반환 값이있는 SendMessage는 항상 0입니다.
그러나 documentation에 따르면 호출이 성공하면 SendMessage
의 반환 값은 0이 아닙니다. 그러나 그것은 항상 제로를 돌려줍니다. 예외가 슬로우되면
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
는 항상 0입니다 :
이
내 코드입니다. 어떤 것이 든 괜찮다는 또 다른 지표가 될 것입니다.SendMessage
이 같은 내 코드에 선언 :
[DllImport("user32.dll", SetLastError = true)]
internal static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
이 문서가 잘못인가, 아니면 내가 잘못 메시지를 사용하고?
대답이 아니지만 Marshal.GetLastWin32Error()가 제대로 작동하려면 DllImport에'SetLastError = true'를 추가해야합니다. http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.getlastwin32error.aspx – shf301
감사. 나는 그것을 추가했지만 lastWin32Error는 여전히 0으로 남아 있습니다. –
호출이 성공합니까? –