Dans mon application C# j'essaie d'utiliser le message TDM_CLICK_BUTTON
pour cliquer sur un bouton dans un TaskDialog. Cela fonctionne essentiellement bien. Ce que je prévois arriver, arrive. Je reçois même la notification TDN_BUTTON_CLICKED
.SendMessage avec la valeur de retour TDM_CLICK_BUTTON est toujours zéro
Mais le documentation indique que la valeur de retour de SendMessage
serait non nulle si l'appel aboutit. Mais ça revient toujours à zéro pour moi.
Ceci est mon code:
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
est toujours égale à zéro lorsque l'exception est levée. Ce qui serait un autre indicateur que tout va bien.
SendMessage
est déclaré dans mon code comme ceci:
[DllImport("user32.dll", SetLastError = true)]
internal static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
La documentation est incorrecte ou ce que j'utilise le message de façon incorrecte?
Pas une réponse, mais vous devez ajouter 'SetLastError = true' à votre DllImport pour' Marshal.GetLastWin32Error() 'pour fonctionner correctement. http://msdn.microsoft.com/fr-fr/library/system.runtime.interopservices.marshal.getlastwin32error.aspx – shf301
Merci. J'ai ajouté cela, mais lastWin32Error reste toujours 0. –
l'appel réussit-il? –