From 428755f3378c232b611615b39bc82634833d9350 Mon Sep 17 00:00:00 2001 From: ms Date: Wed, 2 Jul 2025 15:50:45 +0200 Subject: [PATCH] =?UTF-8?q?Tempanzeige=20Serverr=C3=A4ume?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dokumentation/Classes/cExtProgramme.vb | 19 +- Dokumentation/Classes/cPRTG.vb | 45 +++ Dokumentation/Dokumentation.vbproj | 4 + Dokumentation/Main.Designer.vb | 79 +++-- Dokumentation/Main.resx | 307 +++++++++--------- Dokumentation/Main.vb | 30 +- .../My Project/Resources.Designer.vb | 2 +- Dokumentation/My Project/Resources.resx | 2 +- Dokumentation/packages.config | 1 + 9 files changed, 301 insertions(+), 188 deletions(-) create mode 100644 Dokumentation/Classes/cPRTG.vb diff --git a/Dokumentation/Classes/cExtProgramme.vb b/Dokumentation/Classes/cExtProgramme.vb index 143429d..0b154e4 100644 --- a/Dokumentation/Classes/cExtProgramme.vb +++ b/Dokumentation/Classes/cExtProgramme.vb @@ -269,20 +269,28 @@ Public Class cExtProgramme If Username.Length > 0 And Password.Length > 0 Then AnmeldeDatenVorhanden = True commandcmd("cmdkey /generic:" & host & " /user:" & Username & " /pass:" & Password) - Threading.Thread.Sleep(3000) + Threading.Thread.Sleep(2000) End If - Dim rdpfile As String = RDPFileErstellen(host) + ''1 RDP Datei erstellen + 'Dim rdpfile As String = RDPFileErstellen(host) + + 'mstsc.StartInfo.FileName = "mstsc.exe" + 'mstsc.StartInfo.UseShellExecute = False + ''mstsc.StartInfo.Arguments = " /v: " & host & rdpASadmin & FensterString + 'mstsc.StartInfo.Arguments = " " & rdpfile + + '2 direkt verbinden mstsc.StartInfo.FileName = "mstsc.exe" mstsc.StartInfo.UseShellExecute = False - 'mstsc.StartInfo.Arguments = " /v: " & host & rdpASadmin & FensterString - mstsc.StartInfo.Arguments = " " & rdpfile + mstsc.StartInfo.Arguments = " /v: " & host & rdpASadmin & FensterString + mstsc.Start() If AnmeldeDatenVorhanden = True Then - Threading.Thread.Sleep(3000) + Threading.Thread.Sleep(5000) Dim Abmeldung As New Process commandcmd("cmdkey /delete:" & host) @@ -310,6 +318,7 @@ desktopheight:i:1080 session bpp:i:32 winposstr:s:0,1,-2219,191,-283,1310 compression:i:1 +prompt for credentials:i:0 keyboardhook:i:1 audiocapturemode:i:0 videoplaybackmode:i:1 diff --git a/Dokumentation/Classes/cPRTG.vb b/Dokumentation/Classes/cPRTG.vb new file mode 100644 index 0000000..1124885 --- /dev/null +++ b/Dokumentation/Classes/cPRTG.vb @@ -0,0 +1,45 @@ +Imports System.Net + +Imports Newtonsoft.Json.Linq +Public Class cPRTG + + + + Public Async Function getValuefromPRTG(sensorId As String, kanalnummer As Integer) As Task(Of String) + Dim prtgServer As String = "https://management01.verag.ost.dmn" + 'Dim sensorId As String = "8223" + Dim username As String = "admin" + Dim passhash As String = "1828632597" + 'Dim kanalnummer As Integer = 8 + + Dim url As String = $"{prtgServer}/api/table.json?content=channels&columns=objid,name,lastvalue&id={sensorId}&username={username}&passhash={passhash}" + + + + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 + ServicePointManager.ServerCertificateValidationCallback = Function(sender, cert, chain, sslPolicyErrors) True + + Try + Using client As New WebClient() + client.Encoding = System.Text.Encoding.UTF8 + Dim jsonText As String = Await client.DownloadStringTaskAsync(url) + + Dim json As JObject = JObject.Parse(jsonText) + Dim channels = json("channels") + + If TypeOf channels Is JArray AndAlso kanalnummer >= 0 AndAlso kanalnummer < channels.Count Then + Dim channel = channels(kanalnummer) + Dim name = channel("name").ToString() + Dim value = channel("lastvalue").ToString().Replace("Â", "").Trim() + Return $"{value}" + Else + Return $"Kanal {kanalnummer} ungültig oder nicht vorhanden." + End If + End Using + + Catch ex As Exception + Return "Fehler: " & ex.Message + End Try + End Function + +End Class diff --git a/Dokumentation/Dokumentation.vbproj b/Dokumentation/Dokumentation.vbproj index 900d50e..922eb94 100644 --- a/Dokumentation/Dokumentation.vbproj +++ b/Dokumentation/Dokumentation.vbproj @@ -186,6 +186,9 @@ ..\packages\NetSpell.2.1.7\lib\NetSpell.SpellChecker.dll + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + ..\packages\Otp.NET.1.4.0\lib\net461\Otp.NET.dll @@ -288,6 +291,7 @@ + True True diff --git a/Dokumentation/Main.Designer.vb b/Dokumentation/Main.Designer.vb index 64d4112..0ae8cd4 100644 --- a/Dokumentation/Main.Designer.vb +++ b/Dokumentation/Main.Designer.vb @@ -99,6 +99,7 @@ Partial Class Main Me.DateienToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.AnydeskToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.PuttyToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.IPAdresseKopierenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() Me.DgvMainContextMenuItemLink = New System.Windows.Forms.ToolStripMenuItem() Me.LinkÖffnenMitEdgeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -128,7 +129,9 @@ Partial Class Main Me.panTSSitzungen = New System.Windows.Forms.Panel() Me.Timer_Refresh = New System.Windows.Forms.Timer(Me.components) Me.Timer1 = New System.Windows.Forms.Timer(Me.components) - Me.IPAdresseKopierenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.lblTempServerraum100 = New System.Windows.Forms.Label() + Me.lblTempServerraum15 = New System.Windows.Forms.Label() + Me.Timer_Temperatur = New System.Windows.Forms.Timer(Me.components) Me.Panel2.SuspendLayout() Me.Panel4.SuspendLayout() CType(Me.picAVISOMessenger, System.ComponentModel.ISupportInitialize).BeginInit() @@ -281,12 +284,12 @@ Partial Class Main ' Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TelefonManuellZuweisenToolStripMenuItem}) Me.ContextMenuStrip1.Name = "ContextMenuStrip1" - Me.ContextMenuStrip1.Size = New System.Drawing.Size(210, 26) + Me.ContextMenuStrip1.Size = New System.Drawing.Size(211, 26) ' 'TelefonManuellZuweisenToolStripMenuItem ' Me.TelefonManuellZuweisenToolStripMenuItem.Name = "TelefonManuellZuweisenToolStripMenuItem" - Me.TelefonManuellZuweisenToolStripMenuItem.Size = New System.Drawing.Size(209, 22) + Me.TelefonManuellZuweisenToolStripMenuItem.Size = New System.Drawing.Size(210, 22) Me.TelefonManuellZuweisenToolStripMenuItem.Text = "Telefon manuell zuweisen" ' 'btnTSSitzungen @@ -535,60 +538,60 @@ Partial Class Main ' Me.ToolStripMenuItem1.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NetzwerkeToolStripMenuItem, Me.AnsichtDruckenToolStripMenuItem, Me.ExportToolStripMenuItem, Me.ImportToolStripMenuItem, Me.BenutzerToolStripMenuItem, Me.AllesSichernCSVToolStripMenuItem, Me.ToolStripSeparator1, Me.UpdateToolStripMenuItem, Me.ExitToolStripMenuItem}) Me.ToolStripMenuItem1.Name = "ToolStripMenuItem1" - Me.ToolStripMenuItem1.Size = New System.Drawing.Size(50, 20) + Me.ToolStripMenuItem1.Size = New System.Drawing.Size(49, 20) Me.ToolStripMenuItem1.Text = "Extras" ' 'NetzwerkeToolStripMenuItem ' Me.NetzwerkeToolStripMenuItem.Name = "NetzwerkeToolStripMenuItem" - Me.NetzwerkeToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.NetzwerkeToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.NetzwerkeToolStripMenuItem.Text = "Tabellen bearbeiten" ' 'AnsichtDruckenToolStripMenuItem ' Me.AnsichtDruckenToolStripMenuItem.Name = "AnsichtDruckenToolStripMenuItem" - Me.AnsichtDruckenToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.AnsichtDruckenToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.AnsichtDruckenToolStripMenuItem.Text = "Drucken" ' 'ExportToolStripMenuItem ' Me.ExportToolStripMenuItem.Name = "ExportToolStripMenuItem" - Me.ExportToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.ExportToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.ExportToolStripMenuItem.Text = "Export" ' 'ImportToolStripMenuItem ' Me.ImportToolStripMenuItem.Name = "ImportToolStripMenuItem" - Me.ImportToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.ImportToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.ImportToolStripMenuItem.Text = "Import" ' 'BenutzerToolStripMenuItem ' Me.BenutzerToolStripMenuItem.Name = "BenutzerToolStripMenuItem" - Me.BenutzerToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.BenutzerToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.BenutzerToolStripMenuItem.Text = "Benutzer" ' 'AllesSichernCSVToolStripMenuItem ' Me.AllesSichernCSVToolStripMenuItem.Name = "AllesSichernCSVToolStripMenuItem" - Me.AllesSichernCSVToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.AllesSichernCSVToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.AllesSichernCSVToolStripMenuItem.Text = "Alles Sichern (CSV)" ' 'ToolStripSeparator1 ' Me.ToolStripSeparator1.Name = "ToolStripSeparator1" - Me.ToolStripSeparator1.Size = New System.Drawing.Size(173, 6) + Me.ToolStripSeparator1.Size = New System.Drawing.Size(174, 6) ' 'UpdateToolStripMenuItem ' Me.UpdateToolStripMenuItem.Name = "UpdateToolStripMenuItem" - Me.UpdateToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.UpdateToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.UpdateToolStripMenuItem.Text = "Update" ' 'ExitToolStripMenuItem ' Me.ExitToolStripMenuItem.Name = "ExitToolStripMenuItem" - Me.ExitToolStripMenuItem.Size = New System.Drawing.Size(176, 22) + Me.ExitToolStripMenuItem.Size = New System.Drawing.Size(177, 22) Me.ExitToolStripMenuItem.Text = "Exit" ' 'ToolStripMenuItem2 @@ -607,7 +610,7 @@ Partial Class Main 'TicketsystemToolStripMenuItem ' Me.TicketsystemToolStripMenuItem.Name = "TicketsystemToolStripMenuItem" - Me.TicketsystemToolStripMenuItem.Size = New System.Drawing.Size(87, 20) + Me.TicketsystemToolStripMenuItem.Size = New System.Drawing.Size(88, 20) Me.TicketsystemToolStripMenuItem.Text = "Ticketsystem" ' 'PascomToolStripMenuItem @@ -625,6 +628,8 @@ Partial Class Main 'Panel3 ' Me.Panel3.BackColor = System.Drawing.SystemColors.GradientInactiveCaption + Me.Panel3.Controls.Add(Me.lblTempServerraum15) + Me.Panel3.Controls.Add(Me.lblTempServerraum100) Me.Panel3.Controls.Add(Me.btnSync) Me.Panel3.Controls.Add(Me.lblCount) Me.Panel3.Controls.Add(Me.btnNeu) @@ -641,7 +646,7 @@ Partial Class Main Me.Panel3.Dock = System.Windows.Forms.DockStyle.Left Me.Panel3.Location = New System.Drawing.Point(0, 130) Me.Panel3.Name = "Panel3" - Me.Panel3.Size = New System.Drawing.Size(200, 765) + Me.Panel3.Size = New System.Drawing.Size(200, 831) Me.Panel3.TabIndex = 2 ' 'btnSync @@ -877,14 +882,14 @@ Partial Class Main Me.DgVMain.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.[Single] Me.DgVMain.RowHeadersVisible = False Me.DgVMain.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.DgVMain.Size = New System.Drawing.Size(860, 665) + Me.DgVMain.Size = New System.Drawing.Size(860, 731) Me.DgVMain.TabIndex = 3 ' 'DGVMainContext ' Me.DGVMainContext.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DgvMainContextMenuItemHost, Me.DateienToolStripMenuItem, Me.AnydeskToolStripMenuItem, Me.PuttyToolStripMenuItem, Me.IPAdresseKopierenToolStripMenuItem, Me.ToolStripSeparator4, Me.DgvMainContextMenuItemLink, Me.LinkÖffnenMitEdgeToolStripMenuItem, Me.ToolStripSeparator5, Me.SMBToolStripMenuItem, Me.IPAdresseInZwischenablageToolStripMenuItem, Me.TeamviewerVerbindenToolStripMenuItem, Me.RDPToolStripMenuItem, Me.RDPFensterToolStripMenuItem, Me.ToolStripSeparator3, Me.ObjektLöschenToolStripMenuItem, Me.ToolStripSeparator2, Me.NetzwerkdateienToolStripMenuItem, Me.ToolsToolStripMenuItem}) Me.DGVMainContext.Name = "ContextMenuStrip2" - Me.DGVMainContext.Size = New System.Drawing.Size(230, 380) + Me.DGVMainContext.Size = New System.Drawing.Size(230, 358) ' 'DgvMainContextMenuItemHost ' @@ -910,6 +915,12 @@ Partial Class Main Me.PuttyToolStripMenuItem.Size = New System.Drawing.Size(229, 22) Me.PuttyToolStripMenuItem.Text = "Putty" ' + 'IPAdresseKopierenToolStripMenuItem + ' + Me.IPAdresseKopierenToolStripMenuItem.Name = "IPAdresseKopierenToolStripMenuItem" + Me.IPAdresseKopierenToolStripMenuItem.Size = New System.Drawing.Size(229, 22) + Me.IPAdresseKopierenToolStripMenuItem.Text = "IP Adresse kopieren" + ' 'ToolStripSeparator4 ' Me.ToolStripSeparator4.Name = "ToolStripSeparator4" @@ -1020,7 +1031,7 @@ Partial Class Main Me.PanTools.Controls.Add(Me.CmdTest) Me.PanTools.Controls.Add(Me.CMdTest2) Me.PanTools.Dock = System.Windows.Forms.DockStyle.Bottom - Me.PanTools.Location = New System.Drawing.Point(200, 795) + Me.PanTools.Location = New System.Drawing.Point(200, 861) Me.PanTools.Name = "PanTools" Me.PanTools.Size = New System.Drawing.Size(860, 100) Me.PanTools.TabIndex = 4 @@ -1094,7 +1105,7 @@ Partial Class Main Me.panTSSitzungen.Dock = System.Windows.Forms.DockStyle.Right Me.panTSSitzungen.Location = New System.Drawing.Point(1060, 130) Me.panTSSitzungen.Name = "panTSSitzungen" - Me.panTSSitzungen.Size = New System.Drawing.Size(434, 765) + Me.panTSSitzungen.Size = New System.Drawing.Size(434, 831) Me.panTSSitzungen.TabIndex = 5 Me.panTSSitzungen.Visible = False ' @@ -1106,17 +1117,34 @@ Partial Class Main 'Timer1 ' ' - 'IPAdresseKopierenToolStripMenuItem + 'lblTempServerraum100 ' - Me.IPAdresseKopierenToolStripMenuItem.Name = "IPAdresseKopierenToolStripMenuItem" - Me.IPAdresseKopierenToolStripMenuItem.Size = New System.Drawing.Size(229, 22) - Me.IPAdresseKopierenToolStripMenuItem.Text = "IP Adresse kopieren" + Me.lblTempServerraum100.AutoSize = True + Me.lblTempServerraum100.Location = New System.Drawing.Point(15, 747) + Me.lblTempServerraum100.Name = "lblTempServerraum100" + Me.lblTempServerraum100.Size = New System.Drawing.Size(116, 13) + Me.lblTempServerraum100.TabIndex = 20 + Me.lblTempServerraum100.Text = "lblTempServerraum100" + ' + 'lblTempServerraum15 + ' + Me.lblTempServerraum15.AutoSize = True + Me.lblTempServerraum15.Location = New System.Drawing.Point(15, 767) + Me.lblTempServerraum15.Name = "lblTempServerraum15" + Me.lblTempServerraum15.Size = New System.Drawing.Size(110, 13) + Me.lblTempServerraum15.TabIndex = 21 + Me.lblTempServerraum15.Text = "lblTempServerraum15" + ' + 'Timer_Temperatur + ' + Me.Timer_Temperatur.Enabled = True + Me.Timer_Temperatur.Interval = 30000 ' 'Main ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1494, 895) + Me.ClientSize = New System.Drawing.Size(1494, 961) Me.Controls.Add(Me.DgVMain) Me.Controls.Add(Me.PanTools) Me.Controls.Add(Me.panTSSitzungen) @@ -1257,4 +1285,7 @@ Partial Class Main Friend WithEvents lblOfflinemodus As Label Friend WithEvents btnSync As Button Friend WithEvents IPAdresseKopierenToolStripMenuItem As ToolStripMenuItem + Friend WithEvents lblTempServerraum15 As Label + Friend WithEvents lblTempServerraum100 As Label + Friend WithEvents Timer_Temperatur As Timer End Class diff --git a/Dokumentation/Main.resx b/Dokumentation/Main.resx index 98c4d9e..9aa8dbc 100644 --- a/Dokumentation/Main.resx +++ b/Dokumentation/Main.resx @@ -123,158 +123,158 @@ - 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 - kp+lkl80pJKfpZJfNKSSn6WSXzSkkp+lkl80pJKfpZJfNKSSn6WSXzSkkp//2f/bAEMABgQEBAUEBgUF - BgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/bAEMB - BwcHDQwNGBAQGBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM - DAwMDP/AABEIAEYBQAMBEQACEQEDEQH/xAAfAAAABwEBAQEBAAAAAAAAAAAEBQMCBgEABwgJCgv/xAC1 - EAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRT - kqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE1OT0ZXWFlaW1xdXl9WZ2hpam - tsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr/ - xAAfAQACAgMBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgv/xAC1EQACAgECAwUFBAUGBAgDA20BAAIRAwQh - EjFBBVETYSIGcYGRMqGx8BTB0eEjQhVSYnLxMyQ0Q4IWklMlomOywgdz0jXiRIMXVJMICQoYGSY2RRon - ZHRVN/Kjs8MoKdPj84SUpLTE1OT0ZXWFlaW1xdXl9UZWZnaGlqa2xtbm9kdXZ3eHl6e3x9fn9zhIWGh4 - iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr/3QAEACj/2gAMAwEAAhEDEQA/APQeZTjO - xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku - xV2KuxV2KuxV2KuxV//Q9B5lOM7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY - q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9H0HmU4zsVYB5w/PH8vvKOtyaLrd1PDfxIk - jpHBJIvGReS/Eop0yJmAyESUl/6Gh/KL/lvuf+kWX+mDxAngKe+VPzw/LPzTfJp+l6wq38hpFa3KSW7u - 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 + hc6yvc/37f0np/mep7/prr1VwKep01Obn5f22wbRW8tDYEbrS8Naz3uvsexm3/tLTi/4f17EfbcNn6SQ + 36UjVwny/O2KOcrkSAl//9H0FJfNKSmYn6WSXzSkkp+lkl80pJKfpZJfNKSSn6WSXzSkkp+lkl80pJKf + pZJfNKSSn6WSXzSkkp+lkl80pJKfpZJfNKSSn//Z/9sAQwAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoL + CgoMEAwMDAwMDBAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/9sAQwEHBwcNDA0YEBAYFA4ODhQU + Dg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgARgFAAwER + AAIRAQMRAf/EAB8AAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKC//EALUQAAIBAwMCBAIGBwMEAgYC + cwECAxEEAAUhEjFBUQYTYSJxgRQykaEHFbFCI8FS0eEzFmLwJHKC8SVDNFOSorJjc8I1RCeTo7M2F1Rk + dMPS4ggmgwkKGBmElEVGpLRW01UoGvLj88TU5PRldYWVpbXF1eX1ZnaGlqa2xtbm9jdHV2d3h5ent8fX + 5/c4SFhoeIiYqLjI2Oj4KTlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/EAB8BAAICAwEBAQEBAAAA + AAAAAAEAAgMEBQYHCAkKC//EALURAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHw + FMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0+PzhJSk + tMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+DlJWWl5iZmp + ucnZ6fkqOkpaanqKmqq6ytrq+v/dAAQAKP/aAAwDAQACEQMRAD8A9B5lOM7FXYq7FXYq7FXYq7FXYq7F + XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9D0 + HmU4zsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir + 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 @@ -304,6 +304,9 @@ 1067, 17 + + 1312, 17 + 64 diff --git a/Dokumentation/Main.vb b/Dokumentation/Main.vb index 5e22691..be8486f 100644 --- a/Dokumentation/Main.vb +++ b/Dokumentation/Main.vb @@ -44,7 +44,7 @@ Public Class Main Private Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As IntPtr - Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load LblUhrzeit.Text = "Willkommen " & Class1.LoggedOnUser.Name Class1.ini.LoadParameters() SetAnsichtLautIni() @@ -78,6 +78,7 @@ Public Class Main .AlternatingRowsDefaultCellStyle.BackColor = ColorTranslator.FromHtml("#d7e4f2") End With End If + Await AktualisiereTemperaturenAsync() TypeFilter() @@ -659,10 +660,8 @@ Public Class Main Return Userlist End Function - Private Sub CmdTest_Click(sender As Object, e As EventArgs) Handles CmdTest.Click - Dim sync As New cSQLSync - sync.Main() - + Public Async Sub CmdTest_Click(sender As Object, e As EventArgs) Handles CmdTest.Click + Await AktualisiereTemperaturenAsync() End Sub Private Sub CMdTest2_Click(sender As Object, e As EventArgs) Handles CMdTest2.Click Dim sync As New cSQL @@ -1319,8 +1318,25 @@ exit" Private Sub TimerUpdate_Tick(sender As Object, e As EventArgs) Handles TimerUpdate.Tick If Class1.DebugMode = False Then CheckUpdate("Timer") + Dim prtg As New cPRTG + End Sub + Public Async Function AktualisiereTemperaturenAsync() As Task + Dim prtg As New cPRTG() + + ' Aufgaben parallel starten + Dim task1 = prtg.getValuefromPRTG("8208", 9) + Dim task2 = prtg.getValuefromPRTG("8223", 9) + + ' Ergebnisse abwarten + Dim result1 = Await task1 + Dim result2 = Await task2 + + ' GUI aktualisieren + lblTempServerraum100.Text = "Temp. Serverraum 100: " & result1 + lblTempServerraum15.Text = "Temp. Serverraum 15: " & result2 + End Function Private Sub DgVMain_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DgVMain.CellClick @@ -1824,6 +1840,10 @@ exit" Clipboard.SetText(DgVMain.CurrentRow.Cells("IPAdresse").Value) End Sub + Private Async Sub Timer_Temperatur_Tick(sender As Object, e As EventArgs) Handles Timer_Temperatur.Tick + Await AktualisiereTemperaturenAsync() + End Sub + Private Sub Main_Closed(sender As Object, e As EventArgs) Handles Me.Closed Class1.ini.prop_Kompansicht = ChkKompAnsicht.Checked diff --git a/Dokumentation/My Project/Resources.Designer.vb b/Dokumentation/My Project/Resources.Designer.vb index 82672b3..c19dec3 100644 --- a/Dokumentation/My Project/Resources.Designer.vb +++ b/Dokumentation/My Project/Resources.Designer.vb @@ -319,7 +319,7 @@ Namespace My.Resources End Property ''' - ''' Sucht eine lokalisierte Zeichenfolge, die 0.0.2.07 ähnelt. + ''' Sucht eine lokalisierte Zeichenfolge, die 0.0.2.08 ähnelt. ''' Friend ReadOnly Property Version() As String Get diff --git a/Dokumentation/My Project/Resources.resx b/Dokumentation/My Project/Resources.resx index a068fa6..ce55bf9 100644 --- a/Dokumentation/My Project/Resources.resx +++ b/Dokumentation/My Project/Resources.resx @@ -137,7 +137,7 @@ ..\Resources\mail20.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - 0.0.2.07 + 0.0.2.08 ..\Resources\Link.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/Dokumentation/packages.config b/Dokumentation/packages.config index 3eaeef2..4fff9bf 100644 --- a/Dokumentation/packages.config +++ b/Dokumentation/packages.config @@ -12,6 +12,7 @@ +