diff --git a/ApplicationEvents.vb b/ApplicationEvents.vb index dd04be21..099b6d44 100644 --- a/ApplicationEvents.vb +++ b/ApplicationEvents.vb @@ -1,4 +1,5 @@ Imports Microsoft.Win32 +Imports Microsoft.VisualBasic.ControlChars Namespace My ' Los siguientes eventos están disponibles para MyApplication: @@ -16,6 +17,18 @@ Namespace My AddHandler Microsoft.Win32.SystemEvents.DisplaySettingsChanged, AddressOf SysEvts_DisplaySettingsChanged End Sub + Private Sub CatchEmAll(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException + ExceptionForm.ErrorText.Text = e.Exception.ToString() & CrLf & CrLf & + "Error Message: " & e.Exception.Message & CrLf & CrLf & + "Error Code (HRESULT): " & e.Exception.HResult + ExceptionForm.ShowDialog() + If ExceptionForm.DialogResult = DialogResult.OK Then + e.ExitApplication = False + ElseIf ExceptionForm.DialogResult = DialogResult.Cancel Then + e.ExitApplication = True + End If + End Sub + Private Sub SysEvts_UserPreferenceChanged(sender As Object, e As Microsoft.Win32.UserPreferenceChangedEventArgs) ' Do nothing End Sub diff --git a/DISMTools.vbproj b/DISMTools.vbproj index 106d613d..20db18ce 100644 --- a/DISMTools.vbproj +++ b/DISMTools.vbproj @@ -192,6 +192,12 @@ Form + + ExceptionForm.vb + + + Form + BGProcsAdvSettings.vb @@ -719,6 +725,9 @@ ProgressPanel.vb + + ExceptionForm.vb + BGProcsAdvSettings.vb @@ -1248,6 +1257,7 @@ + diff --git a/Installer/Output/dt_setup.exe b/Installer/Output/dt_setup.exe index 1dbb7160..769db8b4 100644 Binary files a/Installer/Output/dt_setup.exe and b/Installer/Output/dt_setup.exe differ diff --git a/My Project/Resources.Designer.vb b/My Project/Resources.Designer.vb index 32d744e1..f7f83975 100644 --- a/My Project/Resources.Designer.vb +++ b/My Project/Resources.Designer.vb @@ -700,6 +700,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Busca un recurso adaptado de tipo System.Drawing.Bitmap. + ''' + Friend ReadOnly Property error_32px() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("error_32px", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Busca un recurso adaptado de tipo System.Drawing.Bitmap. ''' diff --git a/My Project/Resources.resx b/My Project/Resources.resx index f0210a97..c722800f 100644 --- a/My Project/Resources.resx +++ b/My Project/Resources.resx @@ -1206,4 +1206,7 @@ New features: ..\Resources\color_schemes\CS_ProgressPanel_Green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\error_32px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Panels/Exceptions/ExceptionForm.Designer.vb b/Panels/Exceptions/ExceptionForm.Designer.vb new file mode 100644 index 00000000..a25170c6 --- /dev/null +++ b/Panels/Exceptions/ExceptionForm.Designer.vb @@ -0,0 +1,171 @@ + _ +Partial Class ExceptionForm + Inherits System.Windows.Forms.Form + + 'Form reemplaza a Dispose para limpiar la lista de componentes. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Requerido por el Diseñador de Windows Forms + Private components As System.ComponentModel.IContainer + + 'NOTA: el Diseñador de Windows Forms necesita el siguiente procedimiento + 'Se puede modificar usando el Diseñador de Windows Forms. + 'No lo modifique con el editor de código. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ExceptionForm)) + Me.Label1 = New System.Windows.Forms.Label() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.ErrorText = New System.Windows.Forms.TextBox() + Me.Label2 = New System.Windows.Forms.Label() + Me.Label3 = New System.Windows.Forms.Label() + Me.Issue_Btn = New System.Windows.Forms.Button() + Me.Label4 = New System.Windows.Forms.Label() + Me.Continue_Btn = New System.Windows.Forms.Button() + Me.Exit_Btn = New System.Windows.Forms.Button() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'Label1 + ' + Me.Label1.AutoEllipsis = True + Me.Label1.Location = New System.Drawing.Point(51, 13) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(561, 57) + Me.Label1.TabIndex = 0 + Me.Label1.Text = "We are sorry for the inconvenience, but DISMTools has run into an error that it c" & _ + "ouldn't handle and we need your help in order to continue." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Here is the error " & _ + "information if you need it:" + ' + 'PictureBox1 + ' + Me.PictureBox1.Image = Global.DISMTools.My.Resources.Resources.error_32px + Me.PictureBox1.Location = New System.Drawing.Point(13, 13) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(32, 32) + Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox1.TabIndex = 1 + Me.PictureBox1.TabStop = False + ' + 'ErrorText + ' + Me.ErrorText.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.ErrorText.Font = New System.Drawing.Font("Courier New", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.ErrorText.Location = New System.Drawing.Point(54, 73) + Me.ErrorText.Multiline = True + Me.ErrorText.Name = "ErrorText" + Me.ErrorText.ReadOnly = True + Me.ErrorText.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.ErrorText.Size = New System.Drawing.Size(558, 128) + Me.ErrorText.TabIndex = 2 + ' + 'Label2 + ' + Me.Label2.AutoEllipsis = True + Me.Label2.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label2.Location = New System.Drawing.Point(51, 204) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(561, 17) + Me.Label2.TabIndex = 0 + Me.Label2.Text = "Please help us fix this issue" + ' + 'Label3 + ' + Me.Label3.AutoEllipsis = True + Me.Label3.Location = New System.Drawing.Point(51, 221) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(561, 42) + Me.Label3.TabIndex = 0 + Me.Label3.Text = "In order to prevent this problem from happening again, we would like to know more" & _ + " about it by reporting an issue on the GitHub repository. You will need a GitHub" & _ + " account to report feedback." + ' + 'Issue_Btn + ' + Me.Issue_Btn.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.Issue_Btn.Location = New System.Drawing.Point(184, 266) + Me.Issue_Btn.Name = "Issue_Btn" + Me.Issue_Btn.Size = New System.Drawing.Size(256, 23) + Me.Issue_Btn.TabIndex = 3 + Me.Issue_Btn.Text = "Report this issue" + Me.Issue_Btn.UseVisualStyleBackColor = True + ' + 'Label4 + ' + Me.Label4.AutoEllipsis = True + Me.Label4.Location = New System.Drawing.Point(51, 308) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(561, 65) + Me.Label4.TabIndex = 0 + Me.Label4.Text = resources.GetString("Label4.Text") + ' + 'Continue_Btn + ' + Me.Continue_Btn.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Continue_Btn.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.Continue_Btn.Location = New System.Drawing.Point(350, 406) + Me.Continue_Btn.Name = "Continue_Btn" + Me.Continue_Btn.Size = New System.Drawing.Size(128, 23) + Me.Continue_Btn.TabIndex = 4 + Me.Continue_Btn.Text = "Continue" + Me.Continue_Btn.UseVisualStyleBackColor = True + ' + 'Exit_Btn + ' + Me.Exit_Btn.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Exit_Btn.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.Exit_Btn.Location = New System.Drawing.Point(484, 406) + Me.Exit_Btn.Name = "Exit_Btn" + Me.Exit_Btn.Size = New System.Drawing.Size(128, 23) + Me.Exit_Btn.TabIndex = 4 + Me.Exit_Btn.Text = "Exit" + Me.Exit_Btn.UseVisualStyleBackColor = True + ' + 'ExceptionForm + ' + Me.AcceptButton = Me.Continue_Btn + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(624, 441) + Me.Controls.Add(Me.Exit_Btn) + Me.Controls.Add(Me.Continue_Btn) + Me.Controls.Add(Me.Issue_Btn) + Me.Controls.Add(Me.ErrorText) + Me.Controls.Add(Me.PictureBox1) + Me.Controls.Add(Me.Label2) + Me.Controls.Add(Me.Label4) + Me.Controls.Add(Me.Label3) + Me.Controls.Add(Me.Label1) + Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "ExceptionForm" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "DISMTools - Internal Error" + Me.TopMost = True + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox + Friend WithEvents ErrorText As System.Windows.Forms.TextBox + Friend WithEvents Label2 As System.Windows.Forms.Label + Friend WithEvents Label3 As System.Windows.Forms.Label + Friend WithEvents Issue_Btn As System.Windows.Forms.Button + Friend WithEvents Label4 As System.Windows.Forms.Label + Friend WithEvents Continue_Btn As System.Windows.Forms.Button + Friend WithEvents Exit_Btn As System.Windows.Forms.Button +End Class diff --git a/Panels/Exceptions/ExceptionForm.resx b/Panels/Exceptions/ExceptionForm.resx new file mode 100644 index 00000000..80d6abd9 --- /dev/null +++ b/Panels/Exceptions/ExceptionForm.resx @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You may be able to continue running the program by clicking Continue. However, if this error is displayed for a second time, you can forcefully close the program by clicking Exit. Do note that changes made to projects, as well as changes in the Recents list, will not be saved. + +What do you want to do? + + + + + AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA + AAAgAAAAAQAgAAAAAAAwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyqqI/s6qh5rOq + ocmzqqEbAAAAAAAAAAAAAAAAAAAAADAgrk8xIK/mMCCvyCsrqgwAAAAAAAAAAAAAAAAAAAAAs6mhnqqB + U/+hfVf/s6qh2rOqoRsAAAAAAAAAADIfsFEyH6/7MSCv/zEgr/8yILBHAAAAAAAAAAAAAAAAAAAAALSp + oUSxoY/7saKR/7Oqof+zqqHas6qhGzAgr1AxH6/7MSCv/zEgr/8yIa/bMyKqDwAAAAAAAAAAAAAAAAAA + AAAAAAAAtKmhXLOqofyzqqH/s6qh/4p/pt8xIa/5MSCv/zEgr/8xIa7jLh+yIQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC0qaFcs6qh/I2Apv8zIq//MSCv/zEgr/8yIK/cLxyzGwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGYqGpqWcP/RDOw/zEgr/8+Lq36XVOsNAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACooZomkYap82hYw/9YSK//pZuj/6uhmtuhlo9JoZiPOYCA + gAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACuqJomq6Oa5amhmsSJe7WRqqCl/KSdlP+knJLrpJyU/6Ka + kv+gmJDTnpWNHQAAAAAAAAAAAAAAAAAAAACxo50nraWc5aqjmsSxnZ0NAAAAALCnoVGmnZXZqaGY/6ef + lv+knJT/opqS/6CYkLMAAAAAAAAAAAAAAACxqZ5cr6ad7a2lm7uqqo4JAAAAAAAAAAAAAAAArqad+Kyj + m/+poZiuppmZFKSdlHCimpLuAAAAAAAAAACzqqE5saif/6+mndiioqILAAAAAAAAAAAAAAAAAAAAALGo + n9eupp3/rKKbawAAAAAAAAAApJqUTAAAAAAAAAAAs6ugebGnnqmxo50nAAAAAAAAAAAAAAAAAAAAAAAA + AAC0q6JSsaif/K6mneasppkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAALOqojyxqKCTraadcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAOfnAADDxwAA4YcAAPAP + AAD4HwAA/D8AAPwfAAD4AwAA84EAAOeNAADPnwAA388AAP/vAAD//wAAKAAAACAAAABAAAAAAQAgAAAA + AACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACzqqIes6qgsrOqofazqqHTs6miSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + gAf+H8AD/D/A4/h/wfPw/8H74f/B/+H/4P/n//B////4P////////////////ygAAAAwAAAAYAAAAAEA + IAAAAAAAUCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + r/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEfr8s5HKoJAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALitoxmzqqHXs6qh/7Oq + of+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqHIu6qZDwAAAAAzIqoPMCCvyDEg + r/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCw1zMfrRkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4raMZs6qh17Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qhyHJh + nh0xILDHMSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xILDXMx+tGQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAuK2jGbOqodezqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oq + of+zqqH/q6Ki/0g5rfMxIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEg + sNczH60ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALitoxmzqqHXs6qh/7Oqof+zqqH/s6qh/7Oq + of+zqqH/s6qh/7Oqof+roqL/TT6s/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEg + r/8xIK//MSCw1zMfrRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4raMZs6qh17Oq + of+zqqH/s6qh/7Oqof+zqqH/s6qh/6yjov9NPqz/MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEg + r/8xIK//MSCv/zEgr/8xILDXMx+tGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAuK2jGbOqodezqqH/s6qh/7Oqof+zqqH/rKOi/00+rP8xIK//MSCv/zEgr/8xIK//MSCv/zEg + r/8xIK//MSCv/zEgr/8xIK//MSCv/zEgsNczH60ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAALitoxmzqqHXs6qh/7Oqof+tpKT/YlOv/zEgr/8xIK//MSCv/zEg + r/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCvzzYbrhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4raMZs6qh166lo/9yY8D/Z1fF/0k6 + sv8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8yIK/YMx+tGQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuK2jGXxt + u/BgT8n/YE/J/2VVxv9JObH/MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/0ExrPdiTqMnAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIh3sy9sW8P5YE/J/2BPyf9mVcT/STew/zEgr/8xIK//MSCv/zEgr/8xIK//RTWt/6ac + ov+zqqHIu6qZDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACaj6dga1vB/2BPyf9gT8n/ZlXE/0k3sP8xIK//MSCv/zEg + r/9FNa3/ppyi/7Oqof+zqqH/s6qfyKqqmQ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKujmz2qopnzoZme/2tcwf9gT8n/YE/J/2ZW + xf9JOLH/MSCv/0U1rf+mnKL/s6qh/7Oqof+wp57/q6Ka/6SdlciZmYgPAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAraWYPqqimvOqopn/qaGZ/6Sa + nP9tXsD/YE/J/2BPyf9mVcX/X1Cv/6qfov+zqqH/sqmg/66lnf+mnpb/nZaO/5eQif+elo69opqT0KKa + ku6hmZHuoJmR3aCYkKOdlY1BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtpZw+q6Oa86qi + mv+qopn/qaGZ/6mhmP6dkaGHa1rE+WBPyf9sXcP/qqGl/7Oqof+yqaD/raWd/6OclP+Zkon/n5eP/6Wd + lf+knJT/o5yT/6Kbk/+impL/oZmR/6CZkf+fmJD/n5ePwaGajSYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqm + mj+so5v0q6Oa/6qimv+qopn/qaGZ/qihmGoAAAAAkYW5LHprvPGto6T/s6qh/7Oqof+upZ3/o5yU/5qS + i/+lnJX/p5+W/6aelv+lnZX/pJyU/6Ock/+im5P/opqS/6GZkf+gmZH/n5iQ/56Xj/GcmJA+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAq6SdRqykm/aso5v/q6Oa/6qimv+qopn+qqCZaQAAAAAAAAAAAAAAALitoxmzqqHXs6qh/7Cn + n/+mnpb/mpSL/6aflf+ooJj/p5+X/6eflv+mnpb/pZ2V/6SclP+jnJP/opuT/6Kakv+hmZH/oJmR/5+Y + kP+emI/voJmSIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACvpJ1GraWb9qykm/+so5v/q6Oa/6qimv6pophoAAAAAAAAAAAAAAAAAAAAAAAA + AAC4raMZs6qh16yjm/+el4//o5yT/6qimf+poZj/qKCY/6efl/+nn5b/pp6W/6Wdlf+knJT/o5yT/6Kb + k/+impL/oZmR/6CZkf+fmJD/npePvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKylnkeupZz3raWc/6ykm/+so5v/q6Oa/aqimmAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAraOjGaaeldebk4v/rKOb/6ujmv+qopn/qaGY/6igmP+nn5f/p5+W/6ae + lv+lnZX/pJyU/6Ock/+im5P/opqS/6GZkf+gmZH/n5iQ/5+Wjj0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqacSK6mnfeupZz/raWc/6ykm/+so5v9rKSZXwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGUlBOmnpbCrKSb/6yjm/+ro5r/qqKZ/6mh + mP+ooJj/p5+X/6eflv+mnpb/pZ2V/6SclP+jnJP/opuT/6Kakv+hmZH/oJmR/6CXkZYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxp59ir6ad+q6mnf+upZz/raWc/6yk + m/uropxVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACupp3YraWc/6yk + m/+so5v/q6Oa/6qimf+poZj/qKCY/6afl9iooJVepqCUK6adlTyjnJSIo5yT+qKbk/+impL/oZmR/6CZ + kdYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtqqeFbCnn6qwp57/r6ad/66m + nf+upZz/raWc/Kujm14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACvpp7vrqad/62lnP+spJv/rKOb/6ujmv+qopn/qaGY2KqZmQ8AAAAAAAAAAAAAAAAAAAAAo5yVSKOc + k/eim5P/opqS/6GZke0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwqKBesaif7rCn + n/+wp57/r6ad/66mnf+upZz6rqWbUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACwp57xr6ae/66mnf+tpZz/rKSb/6yjm/+ro5r/qaOaVgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAKOclUijnJP4opuT/6KakvMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGp + oDuxqaD/saif/7Cnn/+wp57/r6ad/66mnf+vpZ1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxqJ/ZsKee/6+mnv+upp3/raWc/6ykm/+so5v/qqKbIQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClm5RKo5yT+KKbk9IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAALGpoKSxqaD/saif/7Cnn/+wp57/r6ad/66nnbMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxqaChsaif/7Cnnv+vpp7/rqad/62l + nP+spJv/qqWcNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApZ6SRKSbk1wAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAuK2jGbKpoPmxqaD/saif/7Cnn/+wp57/r6ad7K2jmRkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxqp9Isamg/7Go + n/+wp57/r6ae/66mnf+tpZz/rKSbhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtKqghLKpoP+xqaD/saif/7Cnn/+wp57/sKedUQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8Bsqmgw7GpoP+xqJ//sKee/6+mnv+upp3/raWc+a2lmkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs6qh2LKpoP+xqaD/saif96+n + n52uqJ0vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAsKqkKrKpoPOxqaD/saif/7Cnnv+vpp7/rqad/62lnPKqppk8AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsayhLrGp + oM+xqaB8tqqeFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALSrozqyqaDtsamg/7Gon/+wp57/r6ae/66m + nf+tpZz3rqOcSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyqqIhsqqgvLGp + oP+xqJ//sKee/6+mnv+upp3/raWc+K6im0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAALOqojyyqZ+Ysaif1bCnnumvpp7srqad1a6lnVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD/g///g/8AAP8B + //8B/wAA/wD//gH/AAD+AH/8AP8AAP4AP/gA/wAA/gAf8AD/AAD/AA/gAf8AAP8AB8AB/wAA/4ADgAP/ + AAD/wAEAB/8AAP/gAAAP/wAA//AAAB//AAD/+AAAP/8AAP/8AAB//wAA//4AAP//AAD//wAB//8AAP// + gAP//wAA///AAf//AAD//+AA//8AAP//wAB//wAA//+AAAH/AAD//wAAAH8AAP/+DgAAPwAA//wfAAAf + AAD/+D+AAA8AAP/wf8AADwAA/+D/4AAHAAD/wf/gDgcAAP8D/+AfhwAA/gf/4D/HAAD8D//gP+cAAPgP + /+A//wAA+B//8B//AADwP//wH/8AAPB///gP/wAA+////Af/AAD////+A/8AAP////+D/wAA//////// + AAD///////8AAP///////wAA////////AAA= + + + \ No newline at end of file diff --git a/Panels/Exceptions/ExceptionForm.vb b/Panels/Exceptions/ExceptionForm.vb new file mode 100644 index 00000000..bee33415 --- /dev/null +++ b/Panels/Exceptions/ExceptionForm.vb @@ -0,0 +1,92 @@ +Imports Microsoft.VisualBasic.ControlChars + +Public Class ExceptionForm + + Dim copySuccess As String = "This information has been copied to the clipboard." + Dim copyFail As String = "You'll need to copy this information manually." + + Private Sub Issue_Btn_Click(sender As Object, e As EventArgs) Handles Issue_Btn.Click + DialogResult = Windows.Forms.DialogResult.None + Process.Start("https://github.com/CodingWonders/DISMTools/issues/new?assignees=CodingWonders&labels=bug%2C+good+first+issue&projects=&template=bug.md&title=Program%20Exception") + End Sub + + Private Sub Continue_Btn_Click(sender As Object, e As EventArgs) Handles Continue_Btn.Click + DialogResult = Windows.Forms.DialogResult.OK + Close() + End Sub + + Private Sub Exit_Btn_Click(sender As Object, e As EventArgs) Handles Exit_Btn.Click + DialogResult = Windows.Forms.DialogResult.Cancel + Close() + End Sub + + Private Sub ExceptionForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load + ' Use system language in case exception is thrown when trying to load settings + Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName + Case "ENU", "ENG" + Text = "DISMTools - Internal Error" + Label1.Text = "We are sorry for the inconvenience, but DISMTools has run into an error that it couldn't handle and we need your help in order to continue." & CrLf & CrLf & "Here is the error information if you need it:" + Label2.Text = "Please help us fix this issue" + Label3.Text = "In order to prevent this problem from happening again, we would like to know more about it by reporting an issue on the GitHub repository. You will need a GitHub account to report feedback." + Label4.Text = "You may be able to continue running the program by clicking Continue. However, if this error is displayed for a second time, you can forcefully close the program by clicking Exit. Do note that changes made to projects, as well as changes in the Recents list, will not be saved." & CrLf & CrLf & "What do you want to do?" + Issue_Btn.Text = "Report this issue" + Continue_Btn.Text = "Continue" + Exit_Btn.Text = "Exit" + copySuccess = "This information has been copied to the clipboard." + copyFail = "You'll need to copy this information manually." + Case "ESN" + Text = "DISMTools - Error interno" + Label1.Text = "Lo sentimos por el inconveniente, pero DISMTools ha sufrido un error que no pudo controlar y necesitamos su ayuda para poder continuar." & CrLf & CrLf & "Aquí tiene la información del error por si lo necesita:" + Label2.Text = "Por favor, ayúdenos a corregir este problema" + Label3.Text = "Para evitar que este problema ocurra de nuevo, nos gustaría saber más acerca de él reportando un error en el repositorio de GitHub. Necesitará una cuenta de GitHub para enviar comentarios." + Label4.Text = "Podrá ser capaz de continuar con la ejecución del programa haciendo clic en Continuar. En cambio, si este error se muestra por una segunda vez, puede cerrar el programa forzadamente haciendo clic en Salir. Dese cuenta de que los cambios de proyectos y de la lista de Recientes no se guardarán." & CrLf & CrLf & "¿Qué le gustaría hacer?" + Issue_Btn.Text = "Reportar este problema" + Continue_Btn.Text = "Continuar" + Exit_Btn.Text = "Salir" + copySuccess = "Esta información ha sido copiada al portapapeles." + copyFail = "Deberá copiar esta información manualmente." + Case "FRA" + Text = "DISMTools - Erreur interne" + Label1.Text = "Nous sommes désolés pour la gêne occasionnée, mais DISMTools a rencontré une erreur qu'il n'a pas pu gérer et nous avons besoin de votre aide pour continuer" & CrLf & CrLf & "Voici les informations sur l'erreur si vous en avez besoin :" + Label2.Text = "Veuillez nous aider à résoudre ce problème" + Label3.Text = "Afin d'éviter que ce problème ne se reproduise, nous aimerions en savoir plus en signalant un problème sur le dépôt GitHub. Vous devez disposer d'un compte GitHub pour signaler un problème." + Label4.Text = "Vous pouvez continuer à exécuter le programme en cliquant sur Continuer. Cependant, si cette erreur s'affiche une seconde fois, vous pouvez fermer le programme en cliquant sur Quitter. Notez que les modifications apportées aux projets, ainsi que les modifications apportées à la liste Récents, ne seront pas sauvegardées." & CrLf & CrLf & "Que voulez-vous faire ?" + Issue_Btn.Text = "Signaler ce problème" + Continue_Btn.Text = "Continuer" + Exit_Btn.Text = "Quitter" + copySuccess = "Cette information a été copiée dans le presse-papiers" + copyFail = "Vous devrez copier ces informations manuellement." + Case "PTB", "PTG" + Text = "DISMTools - Erro interno" + Label1.Text = "Lamentamos o incómodo, mas o DISMTools deparou-se com um erro que não conseguiu resolver e precisamos da sua ajuda para continuar." & CrLf & CrLf & "Aqui está a informação do erro, se precisar dela:" + Label2.Text = "Por favor, ajude-nos a resolver este problema" + Label3.Text = "Para evitar que este problema volte a acontecer, gostaríamos de saber mais sobre o mesmo, reportando um problema no repositório do GitHub. Necessita de uma conta GitHub para comunicar comentários." + Label4.Text = "Poderá continuar a executar o programa clicando em Continuar. No entanto, se este erro for apresentado pela segunda vez, pode fechar o programa à força, clicando em Sair. Tenha em atenção que as alterações efectuadas nos projectos, bem como as alterações na lista Recentes, não serão guardadas." & CrLf & CrLf & "O que pretende fazer?" + Issue_Btn.Text = "Comunicar este problema" + Continue_Btn.Text = "Continuar" + Exit_Btn.Text = "Sair" + copySuccess = "Esta informação foi copiada para a área de transferência." + copyFail = "Terá de copiar esta informação manualmente." + End Select + If MainForm.BackColor = Color.FromArgb(48, 48, 48) Then + BackColor = Color.FromArgb(31, 31, 31) + ForeColor = Color.White + ElseIf MainForm.BackColor = Color.FromArgb(239, 239, 242) Then + BackColor = Color.FromArgb(238, 238, 242) + ForeColor = Color.Black + End If + ErrorText.BackColor = BackColor + ErrorText.ForeColor = ForeColor + Dim handle As IntPtr = MainForm.GetWindowHandle(Me) + If MainForm.IsWindowsVersionOrGreater(10, 0, 18362) Then MainForm.EnableDarkTitleBar(handle, MainForm.BackColor = Color.FromArgb(48, 48, 48)) + Try + Dim data As New DataObject() + data.SetText(ErrorText.Text, TextDataFormat.Text) + Clipboard.SetDataObject(data, True) + ErrorText.AppendText(CrLf & CrLf & copySuccess) + Catch ex As Exception + ErrorText.AppendText(CrLf & CrLf & copyFail) + End Try + Beep() + End Sub +End Class \ No newline at end of file diff --git a/Resources/error_32px.png b/Resources/error_32px.png new file mode 100644 index 00000000..3dcb9c4e Binary files /dev/null and b/Resources/error_32px.png differ