Tempanzeige Serverräume

This commit is contained in:
ms
2025-07-02 15:50:45 +02:00
parent fbaa4f1c02
commit 428755f337
9 changed files with 301 additions and 188 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -186,6 +186,9 @@
<Reference Include="NetSpell.SpellChecker, Version=2.1.7.41329, Culture=neutral, PublicKeyToken=318b389f0db66e46">
<HintPath>..\packages\NetSpell.2.1.7\lib\NetSpell.SpellChecker.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Otp.NET, Version=1.4.0.0, Culture=neutral, PublicKeyToken=38a48df817e173a6, processorArchitecture=MSIL">
<HintPath>..\packages\Otp.NET.1.4.0\lib\net461\Otp.NET.dll</HintPath>
</Reference>
@@ -288,6 +291,7 @@
<Compile Include="Classes\cTSUser.vb" />
<Compile Include="Classes\cPascom.vb" />
<Compile Include="Classes\cSQLSync.vb" />
<Compile Include="Classes\cPRTG.vb" />
<Compile Include="DokuDataSet.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>

View File

@@ -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

View File

@@ -123,158 +123,158 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="PictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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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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
</value>
</data>
<metadata name="MenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@@ -304,6 +304,9 @@
<metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1067, 17</value>
</metadata>
<metadata name="Timer_Temperatur.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1312, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>64</value>
</metadata>

View File

@@ -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

View File

@@ -319,7 +319,7 @@ Namespace My.Resources
End Property
'''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die 0.0.2.07 ähnelt.
''' Sucht eine lokalisierte Zeichenfolge, die 0.0.2.08 ähnelt.
'''</summary>
Friend ReadOnly Property Version() As String
Get

View File

@@ -137,7 +137,7 @@
<value>..\Resources\mail20.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Version" xml:space="preserve">
<value>0.0.2.07</value>
<value>0.0.2.08</value>
</data>
<data name="Link1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Link.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>

View File

@@ -12,6 +12,7 @@
<package id="Microsoft.PowerShell.5.ReferenceAssemblies" version="1.1.0" targetFramework="net472" />
<package id="Microsoft.PowerShell.SDK" version="7.4.1" targetFramework="net472" />
<package id="NetSpell" version="2.1.7" targetFramework="net472" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
<package id="Otp.NET" version="1.4.0" targetFramework="net472" />
<package id="Spire.PDF" version="6.3.10" targetFramework="net472" />
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.119.0" targetFramework="net48" />