GUI/CrashForm.cs
author sl
Sun, 03 Feb 2013 18:01:50 +0100
changeset 391 ca4c0e7ae75d
parent 206 1fa8eddc24a7
permissions -rw-r--r--
Converted project to VisualStudio 2012.
Adding SoundGraphDisplay and SensorFrontView classes.
They were respectively based on SystemTray and SensorNotifyIcon.
SoundGraphDisplay is now able to load iMONDisplay.dll providing it lives on your PATH.
Adding option to sensor context menu for adding it into FrontView.
moel@150
     1
/*
moel@344
     2
 
moel@344
     3
  This Source Code Form is subject to the terms of the Mozilla Public
moel@344
     4
  License, v. 2.0. If a copy of the MPL was not distributed with this
moel@344
     5
  file, You can obtain one at http://mozilla.org/MPL/2.0/.
moel@344
     6
 
moel@344
     7
  Copyright (C) 2009-2010 Michael Möller <mmoeller@openhardwaremonitor.org>
moel@344
     8
	
moel@344
     9
*/
moel@150
    10
moel@150
    11
moel@150
    12
using System;
moel@150
    13
using System.IO;
moel@150
    14
using System.Net;
moel@150
    15
using System.Text;
moel@150
    16
using System.Windows.Forms;
moel@150
    17
moel@150
    18
namespace OpenHardwareMonitor.GUI {
moel@150
    19
  public partial class CrashForm : Form {
moel@150
    20
moel@150
    21
    private Exception exception;
moel@150
    22
moel@150
    23
    public CrashForm() {
moel@150
    24
      InitializeComponent();
moel@150
    25
    }
moel@150
    26
moel@150
    27
    public Exception Exception {
moel@150
    28
      get { return exception; }
moel@150
    29
      set {
moel@150
    30
        exception = value;
moel@150
    31
        StringBuilder s = new StringBuilder();
moel@150
    32
        Version version = typeof(CrashForm).Assembly.GetName().Version;
moel@150
    33
        s.Append("Version: "); s.AppendLine(version.ToString());        
moel@150
    34
        s.AppendLine();
moel@150
    35
        s.AppendLine(exception.ToString());
moel@150
    36
        s.AppendLine();
moel@150
    37
        if (exception.InnerException != null) {
moel@150
    38
          s.AppendLine(exception.InnerException.ToString());
moel@150
    39
          s.AppendLine();
moel@150
    40
        }
moel@150
    41
        s.Append("Common Language Runtime: "); 
moel@150
    42
        s.AppendLine(Environment.Version.ToString());
moel@150
    43
        s.Append("Operating System: ");
moel@150
    44
        s.AppendLine(Environment.OSVersion.ToString());
moel@150
    45
        s.Append("Process Type: ");
moel@150
    46
        s.AppendLine(IntPtr.Size == 4 ? "32-Bit" : "64-Bit");
moel@150
    47
        reportTextBox.Text = s.ToString();        
moel@150
    48
      }
moel@150
    49
    }
moel@150
    50
moel@150
    51
    private void sendButton_Click(object sender, EventArgs e) {
moel@150
    52
      try {
moel@150
    53
        Version version = typeof(CrashForm).Assembly.GetName().Version;
moel@150
    54
        WebRequest request = WebRequest.Create(
moel@150
    55
          "http://openhardwaremonitor.org/report.php");
moel@150
    56
        request.Method = "POST";
moel@150
    57
        request.Timeout = 5000;
moel@150
    58
        request.ContentType = "application/x-www-form-urlencoded";
moel@150
    59
moel@150
    60
        string report =
moel@206
    61
          "type=crash&" +
moel@206
    62
          "version=" + Uri.EscapeDataString(version.ToString()) + "&" +
moel@206
    63
          "report=" + Uri.EscapeDataString(reportTextBox.Text) + "&" +
moel@206
    64
          "comment=" + Uri.EscapeDataString(commentTextBox.Text) + "&" +
moel@206
    65
          "email=" + Uri.EscapeDataString(emailTextBox.Text);
moel@150
    66
        byte[] byteArray = Encoding.UTF8.GetBytes(report);
moel@150
    67
        request.ContentLength = byteArray.Length;
moel@150
    68
moel@150
    69
        try {
moel@150
    70
          Stream dataStream = request.GetRequestStream();
moel@150
    71
          dataStream.Write(byteArray, 0, byteArray.Length);
moel@150
    72
          dataStream.Close();
moel@150
    73
moel@150
    74
          WebResponse response = request.GetResponse();
moel@150
    75
          dataStream = response.GetResponseStream();
moel@150
    76
          StreamReader reader = new StreamReader(dataStream);
moel@150
    77
          string responseFromServer = reader.ReadToEnd();
moel@150
    78
          reader.Close();
moel@150
    79
          dataStream.Close();
moel@150
    80
          response.Close();
moel@150
    81
moel@150
    82
          Close();
moel@150
    83
        } catch (WebException) {
moel@150
    84
          MessageBox.Show("Sending the crash report failed.", "Error", 
moel@150
    85
            MessageBoxButtons.OK, MessageBoxIcon.Error);
moel@150
    86
        }
moel@150
    87
      } catch {
moel@150
    88
      }
moel@150
    89
    }
moel@150
    90
  }  
moel@150
    91
}