public WIN32.Win32API.RemoteMessageBoxResult MessageBox(string text, string caption,
                                                                WIN32.Win32API.RemoteMessageBoxButtons buttons,
                                                                WIN32.Win32API.RemoteMessageBoxIcon icon, WIN32.Win32API.RemoteMessageBoxDefaultButton defaultButton,
                                                                WIN32.Win32API.RemoteMessageBoxOptions options, TimeSpan timeout, bool synchronous)
        {
            var timeoutSeconds = (int)timeout.TotalSeconds;
            var style          = (int)buttons | (int)icon | (int)defaultButton | (int)options;
            // TODO: Win 2003 Server doesn't start timeout counter until user moves mouse in session.
            var result = WIN32.NativeMethodsHelper.SendMessage(_server.Handle, _sessionId, caption, text, style,
                                                               timeoutSeconds, synchronous);

            // TODO: Windows Server 2008 R2 beta returns 0 if the timeout expires.
            // find out why this happens or file a bug report.
            return(result == 0 ? WIN32.Win32API.RemoteMessageBoxResult.Timeout : result);
        }
 public void MessageBox(string text, string caption, WIN32.Win32API.RemoteMessageBoxIcon icon)
 {
     MessageBox(text, caption, default(WIN32.Win32API.RemoteMessageBoxButtons), icon,
                default(WIN32.Win32API.RemoteMessageBoxDefaultButton),
                default(WIN32.Win32API.RemoteMessageBoxOptions), TimeSpan.Zero, false);
 }