Imports System.Data.SqlClient 'Imports System.IO 'Imports System.Runtime.InteropServices 'Imports System.Text Imports System.Reflection Public Class Main Public con As New SqlConnection Public conadmin As New SqlConnection Public cmd As New SqlCommand Public cmdadmin As New SqlCommand Public reader As SqlDataReader Public SenderStandort As String Public SenderNetzwerk As String Public SenderHost As String Public SenderIP As String Public SenderRubrik As String Public SenderTitel As String Public Neu, geaendert As Boolean Public Debug As Boolean Public Suchbegriff As String Public Tabelle As String Public sAppPath As String = Application.StartupPath Public Updatequelle As String = "\\192.168.0.91\f\Programme\Doku\" Private Version As String = My.Resources.Version Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.KeyPreview = True 'MsgBox(sAppPath) If sAppPath Like "*\bin\Debug" Then Debug = True LblDEBUGMODE.Visible = True LblDEBUGMODE.ForeColor = Color.Red LblDEBUGMODE.Text = "DEBUG " Class1.DBConString = "Server=DEVELOPER\DEVSQL;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" Class1.FilePath = "\\192.168.0.253\backup\temp_Sebastian\DokuTest" Else Class1.DBConString = "Server=192.168.0.94\SQLEXPRESS;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" Class1.FilePath = "\\192.168.0.90\f\EDV-Wartung\Dokumentation" End If If Class1.DBConString = "Server=DEVELOPER\DEVSQL;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" Then TimerUpdate.Enabled = False dbload() LstStandortLoad() LblVersion.Text = "Version: " & Version LblVersion.ForeColor = Color.Red LblUhrzeit.ForeColor = Color.Red Else dbload() CheckUpdate("Programmstart") LstStandortLoad() LblUhrzeit.Text = "" 'ImportToolStripMenuItem.Enabled = False With DgVMain .RowsDefaultCellStyle.BackColor = Color.White 'Color.Bisque .AlternatingRowsDefaultCellStyle.BackColor = ColorTranslator.FromHtml("#d7e4f2") End With End If EnableDoubleBuffered(DgVMain) End Sub ''LISTEN Private Sub LstStandort_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstStandort.SelectedIndexChanged SenderStandort = LstStandort.SelectedItem LstAllgemein.ClearSelected() PanSuche.Enabled = True PanType.Enabled = True Tabelle = "TbL_Netzwerkclients" PuttyToolStripMenuItem.Enabled = True LstNetzwerkLoad() LstNetzwerk.SelectedItem = "Intern" ' SenderStandort = LstStandort.SelectedItem End Sub Private Sub LstNetzwerk_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstNetzwerk.SelectedIndexChanged SenderStandort = LstStandort.SelectedItem SenderNetzwerk = LstNetzwerk.SelectedItem Tabelle = "TbL_Netzwerkclients" PanSuche.Enabled = True PanNetzwerk.Enabled = True If SenderNetzwerk = "" Then CmdNetzwerkbearbeiten.Enabled = False Else CmdNetzwerkbearbeiten.Enabled = True End If 'dgvload("TbL_Netzwerkclients") dgvload_filter(Suchbegriff) End Sub Private Sub LstAllgemein_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstAllgemein.SelectedIndexChanged LstNetzwerk.ClearSelected() 'LstStandort.ClearSelected() PanNetzwerk.Enabled = False PanSuche.Enabled = False PanType.Enabled = False TxtSuche.Enabled = True Tabelle = "TbL_Allgemein" PuttyToolStripMenuItem.Enabled = False dgvload(Tabelle) End Sub Private Sub ChKZugangsdaten_CheckedChanged(sender As Object, e As EventArgs) Handles ChKZugangsdaten.CheckedChanged dgvload_filter(Suchbegriff) End Sub Public Function allesladen() dgvload_filter(Suchbegriff) 'dgvload(Tabelle) End Function Public Function werbinich() If Tabelle = "TbL_Netzwerkclients" Then Try SenderStandort = DgVMain.CurrentRow.Cells("NWSTANDORT").Value Catch ex As Exception SenderStandort = LstStandort.SelectedItem End Try Try SenderNetzwerk = DgVMain.CurrentRow.Cells("NETNAME").Value Catch ex As Exception SenderNetzwerk = LstNetzwerk.SelectedItem End Try Try SenderHost = DgVMain.CurrentRow.Cells("HOST").Value Catch Ex As Exception SenderHost = 1 End Try Try SenderIP = DgVMain.CurrentRow.Cells("IPAdresse").Value Catch ex As Exception End Try ElseIf Tabelle = "TbL_Allgemein" Then Try SenderRubrik = DgVMain.CurrentRow.Cells("Rubrik").Value SenderTitel = DgVMain.CurrentRow.Cells("Titel").Value Catch ex As Exception End Try End If End Function Public Function LstStandortLoad() Dim ds As New DataSet() Dim dt As New DataTable() dbload() Dim dataadapter As New SqlDataAdapter("SELECT NWSTANDORT from TbL_Netzwerke where main='True' order by NWSTANDORT", con) LstStandort.Items.Clear() Try con.Open() dataadapter.Fill(ds) 'DgVMain.DataSource = ds.Tables(0) For Each dr As DataRow In ds.Tables(0).Rows LstStandort.Items.Add(dr.Item(0)) Next Catch ex As Exception MsgBox("DataadapterFill LstStandOrtLoad(): " & ex.Message) End Try con.Close() 'LstStandort.SelectedIndex = 0 LstStandort.SelectedItem = "Verag_SUB" Dim dsa As New DataSet() Dim da_allgemein As New SqlDataAdapter("select distinct Rubrik from tbl_allgemein", con) LstAllgemein.Items.Clear() Try con.Open() da_allgemein.Fill(dsa) 'DgVMain.DataSource = ds.Tables(0) For Each dr As DataRow In dsa.Tables(0).Rows LstAllgemein.Items.Add(dr.Item(0)) Next Catch ex As Exception MsgBox("DataadapterFill LstStandOrtLoad(): " & ex.Message) End Try con.Close() End Function Public Function TypeFilter() Try Dim ds As New DataSet() Dim dt As New DataTable() dbload() Dim dataadapter As New SqlDataAdapter("SELECT DISTINCT TYPE from TbL_Netzwerkclients WHERE TYPE IS NOT NULL", con) LstType.Items.Clear() Try con.Open() dataadapter.Fill(ds) LstType.Items.Add("") For Each dr As DataRow In ds.Tables(0).Rows If dr.Item(0) = "" Then LstType.Items.Add("ohne") Else LstType.Items.Add(dr.Item(0)) End If Next Catch ex As Exception MsgBox("TypeFilter(): " & ex.Message) End Try ' LstType.SelectedItem = "---" con.Close() Catch ex As Exception MsgBox(ex.Message) End Try End Function Public Function LstNetzwerkLoad() Dim ds As New DataSet() Dim dt As New DataTable() Dim Standort As String = LstStandort.SelectedItem dbload() Dim dataadapter As New SqlDataAdapter("select NETNAME from TbL_Netzwerke where NWSTANDORT='" & Standort & "' ORDER BY NETNAME", con) LstNetzwerk.Items.Clear() Try con.Open() dataadapter.Fill(ds) 'DgVMain.DataSource = ds.Tables(0) For Each dr As DataRow In ds.Tables(0).Rows LstNetzwerk.Items.Add(dr.Item(0)) Next Catch ex As Exception 'MsgBox("DataadapterFill LstNwerkload(): " & ex.Message) End Try con.Close() LstNetzwerk.SelectedItem = "Intern" Try ' LstNetzwerk.SetSelected(0, True) NetzwerkInfoAnzeige() Catch ex As Exception ' MsgBox("LstNetzwerkLoad SetSelected: " & ex.Message) End Try NetzwerkInfoAnzeige() End Function Public Function NetzwerkInfoAnzeige() Dim netzwerkname As String = SenderStandort & "_" & SenderNetzwerk LblNetzwerkinfo.Text = "" Try con.Open() cmd.CommandText = "SELECT * FROM Tbl_Netzwerke WHERE Netzwerkname='" & netzwerkname & "'" reader = cmd.ExecuteReader() Do While reader.Read() LblNetzwerkinfo.Text = "Netzwerk: " & reader("Netzwerk") & " Subnetz: " & reader("Subnetz") & vbCrLf & "Gateway: " & reader("Gateway") & vbCrLf & "DNS Server: " & reader("DNSServer") & vbCrLf If Class1.ReadNullAsEmptyString(reader, "DHCPServer") = "" Then Else LblNetzwerkinfo.Text &= "DHCP Server: " & reader("DHCPServer") & vbCrLf & "Bereich: " & reader("DHCPStart") & "-" & reader("DHCPEnd") & vbCrLf & reader("Info") End If Loop reader.Close() Catch ex As Exception 'MsgBox("LblNetzwerkinfo Reader: " & ex.Message) End Try con.Close() End Function Public Function dbload() con.ConnectionString = Class1.DBConString conadmin.ConnectionString = Class1.DBConString cmd.Connection = con cmdadmin.Connection = conadmin End Function Public Function dgvload(tabelle As String) Dim ds As New DataSet() Dim dt As New DataTable() Dim Standort As String = LstStandort.SelectedItem Dim Netzwerk As String = LstNetzwerk.SelectedItem Try con.Open() If tabelle = "TbL_Netzwerkclients" Then If ChkFreieHosts.Checked Then Dim dataadapter As New SqlDataAdapter("select * from " & tabelle & " where NWSTANDORT='" & Standort & "' AND NETNAME='" & Netzwerk & "' order by host", con) dataadapter.Fill(ds) dgvfill(ds, "Netzwerk") Else Dim dataadapter As New SqlDataAdapter("select * from " & tabelle & " where NWSTANDORT='" & Standort & "' AND NETNAME='" & Netzwerk & "' AND FQDN is not NUll order by host", con) dataadapter.Fill(ds) dgvfill(ds, "Netzwerk") End If ElseIf tabelle = "TbL_Allgemein" Then Dim dataadapter As New SqlDataAdapter("select * from " & tabelle & " WHERE Rubrik = '" & LstAllgemein.SelectedItem & "'", con) dataadapter.Fill(ds) dgvfill(ds, "Allgemein") End If Catch ex As Exception 'MsgBox("DataadapterFill dgvload(): " & ex.Message) End Try con.Close() NetzwerkInfoAnzeige() End Function Public Function dgvload_filter(suchbegriff As String) Dim starttime As Date = DateTime.Now Dim endtime As Date Dim ds As New DataSet() Dim dt As New DataTable() Dim Standort As String = LstStandort.SelectedItem Dim Netzwerk As String = LstNetzwerk.SelectedItem Dim Allgemein As String = LstAllgemein.SelectedItem Dim Suchparameter As String Dim DHCPAbfragen As Boolean If LstNetzwerk.SelectedItem Is Nothing And LstAllgemein.SelectedItem Is Nothing Then Exit Function ElseIf LstNetzwerk.SelectedItem IsNot Nothing Then '''SUCHPARAMETER DEFINIEREN''' If LstType.SelectedItem = "" Then Suchparameter = "(Type LIKE'" & suchbegriff & "'OR FQDN LIKE'" & suchbegriff & "'OR QINFO LIKE'" & suchbegriff & "'OR Modell LIKE'" & suchbegriff & "'OR IPAdresse LIKE'" & suchbegriff & "')" ElseIf LstType.SelectedItem = "ohne" Then Suchparameter = "TYPE = '' AND (Type LIKE'" & suchbegriff & "'OR FQDN LIKE'" & suchbegriff & "'OR QINFO LIKE'" & suchbegriff & "'OR IPAdresse LIKE'" & suchbegriff & "'OR Modell LIKE'" & suchbegriff & "')" Else Suchparameter = "TYPE = '" & LstType.SelectedItem & "' AND (Type LIKE'" & suchbegriff & "'OR FQDN LIKE'" & suchbegriff & "'OR QINFO LIKE'" & suchbegriff & "'OR IPAdresse LIKE'" & suchbegriff & "'OR Modell LIKE'" & suchbegriff & "')" End If If Not ChkFreieHosts.Checked Then 'AND (DHCP = '0' OR DHCP is Null) Suchparameter &= " and FQDN is not NUll" End If '''ABFRAGE DEFINIEREN''' ''' 'Dim SelSQL4DGV As String = "*" Dim SelSQL4DGV As String = "FQDN, IPAdresse, Modell, Standort, Type, Seriennummer, QINFO, Info, DHCP, Host" If ChKZugangsdaten.Checked Then SelSQL4DGV &= ", Benutzer, Passwort" End If '''ABFRAGE RADIOBUTTONS + SUCHPARAMETER''' If RadGlobal.Checked Then Dim dataadapter As New SqlDataAdapter("select " & SelSQL4DGV & " from TbL_Netzwerkclients where " & Suchparameter & " order by host", con) con.Open() dataadapter.Fill(ds) ElseIf RadNurNetzwerk.Checked Then Dim dataadapter As New SqlDataAdapter("select " & SelSQL4DGV & " from TbL_Netzwerkclients where NWSTANDORT = '" & Standort & "' AND NETNAME ='" & Netzwerk & "' AND " & Suchparameter & " order by host", con) con.Open() dataadapter.Fill(ds) ElseIf RadStandort.Checked Then Dim dataadapter As New SqlDataAdapter("select " & SelSQL4DGV & " from TbL_Netzwerkclients where NWSTANDORT = '" & Standort & "' AND " & Suchparameter & " order by host", con) con.Open() dataadapter.Fill(ds) ElseIf suchbegriff = "" Then Dim dataadapter As New SqlDataAdapter("select " & SelSQL4DGV & " from TbL_Netzwerkclients order by host", con) con.Open() dataadapter.Fill(ds) End If con.Close() Try endtime = DateTime.Now LblDebugInfo.Text = "dgvload: " & ((endtime - starttime).Milliseconds) & vbCrLf ''--------------------------------------------------------------------------------------------------------/START// Abfrage DHCP Clients con.Open() cmd.CommandText = "SELECT DHCPAbfragen FROM Tbl_Netzwerke WHERE NWSTANDORT = '" & Standort & "' AND NETNAME ='" & Netzwerk & "'" reader = cmd.ExecuteReader() Do While reader.Read() DHCPAbfragen = Class1.ReadNullAs0(reader, "DHCPAbfragen") Loop reader.Close() If DHCPAbfragen = True Then If ChkDHCPClients.Checked = True Then Dim NWAdresse As String Class1.Name2Netzwerk(Standort, Netzwerk, NWAdresse) Dim DHCPServer As String = Class1.GetDHCPServer(NWAdresse) GetDHCPClients(NWAdresse, DHCPServer, ChkFreieHosts.Checked, ds) Else End If End If ''--------------------------------------------------------------------------------------------------------/Ende// Abfrage DHCP Clients dgvfill(ds, "Netzwerk") Dim endtimedgvfill As Date = Date.Now LblDebugInfo.Text &= "dgvfill: " & ((endtimedgvfill - starttime).Milliseconds) & vbCrLf Catch ex As Exception MsgBox("dgvload_filter(): " & ex.Message) End Try con.Close() NetzwerkInfoAnzeige() Else Suchparameter = "(TITEL LIKE'" & suchbegriff & "'OR INFO LIKE'" & suchbegriff & "'OR LINK LIKE'" & suchbegriff & "')" Dim dataadapter As New SqlDataAdapter("select * from TbL_Allgemein where " & Suchparameter & "", con) con.Open() dataadapter.Fill(ds) con.Close() dgvfill(ds, "Allgemein") ' MsgBox("keine Wahl") End If End Function Public Function dgvfill(ds As DataSet, design As String) Dim starttime As Date = DateTime.Now Dim endtime As Date If design = "Netzwerk" Then With DgVMain .DataSource = ds.Tables(0) If ChkKompAnsicht.Checked Then .DefaultCellStyle.WrapMode = DataGridViewTriState.False .AutoSizeRowsMode = 0 'DataGridViewAutoSizeColumnsMode.ColumnHeader 'MsgBox(DgVMain.AutoSizeRowsMode) Else .DefaultCellStyle.WrapMode = DataGridViewTriState.True .AutoSizeRowsMode = DataGridViewAutoSizeColumnsMode.AllCells End If If TxtSuche.Text = "" And LstType.SelectedItem = "" Then .RowsDefaultCellStyle.BackColor = Color.White Else .RowsDefaultCellStyle.BackColor = Color.AntiqueWhite End If .RowHeadersVisible = True .Columns("FQDN").DisplayIndex = 0 .Columns("FQDN").HeaderText = "Name / FQDN" .Columns("IPAdresse").DisplayIndex = 1 .Columns("IPAdresse").AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells .Columns("Modell").DisplayIndex = 2 .Columns("Standort").DisplayIndex = 3 .Columns("TYPE").DisplayIndex = 4 .Columns("TYPE").HeaderText = "Gerätetype" .Columns("Seriennummer").DisplayIndex = 5 .Columns("QINFO").HeaderText = "Quick-Info" ' .Columns("NWSTANDORT").DisplayIndex = 8 'If ChKZugangsdaten.Checked = False Then ' .Columns("Benutzer").Visible = False ' .Columns("Passwort").Visible = False 'ElseIf ChKZugangsdaten.Checked = True Then ' .Columns("Benutzer").Visible = True ' .Columns("Benutzer").DisplayIndex = 6 ' .Columns("Passwort").Visible = True ' .Columns("Passwort").DisplayIndex = 7 'End If '' .Columns("NETNAME").Visible = False '.Columns("Netzwerk").Visible = False .Columns("DHCP").Visible = False '.Columns("MAC").Visible = False '.Columns("LINK").Visible = False '.Columns("Linked").Visible = False '.Columns("Linked").DisplayIndex = 9 '.Columns("LinkedWith").Visible = False '' .Columns("AddIp").Visible = False .Columns("HOST").Visible = False '' .Columns("NWSTANDORT").Visible = False '.Columns("Info").Width = 250 '.Sort(DgVMain.Columns("Host"), System.ComponentModel.ListSortDirection.Ascending) End With ''--------------------------------------------------------------------------------------------------------/START//Farbig hervorheben, Check DHCP Filter Dim indexDHCP As Integer = DgVMain.Columns("DHCP").Index Dim indexFQDN As Integer = DgVMain.Columns("FQDN").Index Dim modellFQDN As Integer = DgVMain.Columns("Modell").Index For i = 0 To DgVMain.Rows.Count - 2 '// If (DgVMain.Item(indexDHCP, i).Value = "1" Or DgVMain.Item(indexDHCP, i).Value = "Start" Or DgVMain.Item(indexDHCP, i).Value = "Ende") And DgVMain.Item(indexFQDN, i).Value.ToString = "" Then ' DgVMain.Rows(i).DefaultCellStyle.BackColor = Color.MistyRose 'DgVMain.Rows(i).Visible = ChkAlles.Checked ElseIf (DgVMain.Item(indexDHCP, i).Value = "1" Or DgVMain.Item(indexDHCP, i).Value = "Start" Or DgVMain.Item(indexDHCP, i).Value = "Ende") Then DgVMain.Rows(i).DefaultCellStyle.BackColor = Color.LightYellow 'ElseIf DgVMain.Item(indexDHCP, i).Value = "Start" Or DgVMain.Item(indexDHCP, i).Value = "Ende" Then ' DgVMain.Rows(i).DefaultCellStyle.BackColor = Color.Gold ' DgVMain.Rows(i).Visible = ChkAlles.Checked End If Try If DgVMain.Item(indexFQDN, i).Value.ToString = "" And DgVMain.Item(modellFQDN, i).Value.ToString = "" And DgVMain.Item(indexDHCP, i).Value = "0" Then DgVMain.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen ' DgVMain.Rows(i).Visible = ChkAlles.Checked End If Catch ex As Exception MsgBox("DgVMain.Item(index*, i).Value: " & ex.Message & vbCrLf & DgVMain.Rows.Count & " " & i) End Try Next i ElseIf design = "Allgemein" Then 'MsgBox(ChKZugangsdaten.Checked) With DgVMain If ChkKompAnsicht.Checked Then .DefaultCellStyle.WrapMode = DataGridViewTriState.False Else .DefaultCellStyle.WrapMode = DataGridViewTriState.True End If If TxtSuche.Text = "" And LstType.SelectedItem = "" Then .RowsDefaultCellStyle.BackColor = Color.White Else .RowsDefaultCellStyle.BackColor = Color.AntiqueWhite End If .AutoSizeRowsMode = DataGridViewAutoSizeColumnsMode.AllCells .DataSource = ds.Tables(0) .Columns("Rubrik").Visible = False .Columns("Linked").Visible = False .Columns("Link").Visible = False .Columns("LinkedWith").Visible = False .Columns("Titel").Width = 150 .Sort(DgVMain.Columns("Titel"), System.ComponentModel.ListSortDirection.Ascending) If ChKZugangsdaten.Checked = False Then .Columns("Benutzer").Visible = False .Columns("Passwort").Visible = False ElseIf ChKZugangsdaten.Checked = True Then .Columns("Benutzer").Visible = True ' .Columns("Benutzer").DisplayIndex = 6 .Columns("Passwort").Visible = True ' .Columns("Passwort").DisplayIndex = 7 End If End With End If End Function Private Sub CmdTest_Click(sender As Object, e As EventArgs) Handles CmdTest.Click dgvload_filter(Suchbegriff) End Sub Private Sub CMdTest2_Click(sender As Object, e As EventArgs) Handles CMdTest2.Click LstNetzwerkLoad() NetzwerkInfoAnzeige() End Sub Public Function GetDHCPClients(Netzwerk As String, DHCPServer As String, Fill As Boolean, ByRef ds As DataSet) Dim NWShort As String Dim DHCPClientIP As String Dim dhcpclients() As DHCP.DHCP_CLIENT_INFO LblDebugInfo.Text &= "" Dim a As UInteger = DHCP.StringIPAddressToUInt32(Netzwerk) Dim b As UInteger = DHCP.StringIPAddressToUInt32("255.255.255.255") DHCP.ListSubnetClients(DHCPServer, Netzwerk, dhcpclients) DHCP.StringNWAdressToNWAdressSHORT(Netzwerk, NWShort) For i = 0 To DHCP.Client_Array.NumElements - 1 DHCPClientIP = NWShort & (b - ((dhcpclients(i).ClientIpAddress * -1) + a - 1)).ToString ''----------------------------------------Fill True: Wenn DHCP Clients bereits im DS enthalten sind werden diese Hosts geändert. If Fill = True Then Dim HostRow() As Data.DataRow HostRow = ds.Tables(0).Select("IPAdresse = '" & DHCPClientIP & "'") HostRow(0)("FQDN") = "*" & dhcpclients(i).ClientName HostRow(0)("QINFO") = "DHCP Client" ''----------------------------------------Fill False: DHCP Clients werden hinzugefügt Else Dim rows() As DataRow = ds.Tables(0).Select("IPAdresse = '" & DHCPClientIP & "'") If rows.Count > 0 Then Dim FQDN As String = rows(0).Item("FQDN") Else Dim newrow As DataRow = ds.Tables(0).NewRow() newrow("IPAdresse") = DHCPClientIP newrow("FQDN") = "*" & dhcpclients(i).ClientName newrow("QINFO") = "DHCP Client" newrow("DHCP") = "1" newrow("Host") = (b - ((dhcpclients(i).ClientIpAddress * -1) + a - 1)).ToString ds.Tables(0).Rows.Add(newrow) 'End If End If End If Next ds.Tables(0).DefaultView.Sort = "Host" End Function Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerUhrzeit.Tick LblUhrzeit.Text = Date.Now End Sub Private Sub DgVMain_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DgVMain.CellContentDoubleClick 'MsgBox(DgVMain.CurrentRow.Cells("HOST").Value) werbinich() If Tabelle = "TbL_Netzwerkclients" Then If LstStandort.SelectedItem = "" Then LblUhrzeit.Text = "Kein Standort ausgewählt!" Exit Sub End If If LstNetzwerk.SelectedItem = "" Then LblUhrzeit.Text = "Kein Netzwerk ausgewählt!" Exit Sub End If Class1.Absender = "Main" HostBearbeiten.Show() ElseIf Tabelle = "TbL_Allgemein" Then EintragBearbeiten.Show() End If End Sub Private Sub CmdNetzwerkbearbeiten_Click(sender As Object, e As EventArgs) Handles CmdNetzwerkbearbeiten.Click werbinich() Class1.Absender = "Main" NWEdit.StartPosition = FormStartPosition.Manual NWEdit.Location = New Point(Location.X + 300, Location.Y + 300) 'NetzwerkBearbeiten.Show() NWEdit.Show() End Sub Private Sub NetzwerkeToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NetzwerkeToolStripMenuItem.Click NetzwerkAdmin.Show() End Sub Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click LstStandortLoad() NetzwerkInfoAnzeige() End Sub Private Sub TxtSuche_TextChanged(sender As Object, e As EventArgs) Handles TxtSuche.TextChanged, RadNurNetzwerk.CheckedChanged, RadGlobal.CheckedChanged, RadStandort.CheckedChanged, LstType.SelectedIndexChanged, TxtSuche.MouseClick If TxtSuche.TextLength < 1 Then Suchbegriff = "%%" dgvload_filter(Suchbegriff) Else Suchbegriff = "%" & Class1.hochkomma(TxtSuche.Text) & "%" ChkDHCPClients.Checked = False dgvload_filter(Suchbegriff) End If End Sub Private Sub ComTypeClick(sender As Object, e As EventArgs) Handles LstType.Click TypeFilter() End Sub Private Sub DgvMainContextMenuItemHost_Click(sender As Object, e As EventArgs) Handles DgvMainContextMenuItemHost.Click, CmDBearbeiten.Click werbinich() StartHostBearbeiten() End Sub Public Function StartHostBearbeiten() HostBearbeiten.StartPosition = FormStartPosition.Manual HostBearbeiten.Location = New Point(Location.X + 150, Location.Y + 150) EintragBearbeiten.StartPosition = FormStartPosition.Manual EintragBearbeiten.Location = New Point(Location.X + 150, Location.Y + 150) If Tabelle = "TbL_Netzwerkclients" Then If LstStandort.SelectedItem = "" Then LblUhrzeit.Text = "Kein Standort ausgewählt!" Exit Function End If If LstNetzwerk.SelectedItem = "" Then LblUhrzeit.Text = "Kein Netzwerk ausgewählt!" Exit Function End If Class1.Absender = "Main" If HostBearbeiten.Visible Then MsgBox("Fenster ist bereits geöffnet.") HostBearbeiten.BringToFront() Else HostBearbeiten.Show() End If ElseIf Tabelle = "TbL_Allgemein" Then If EintragBearbeiten.Visible Then MsgBox("Fenster ist bereits geöffnet.") EintragBearbeiten.BringToFront() Else EintragBearbeiten.Show() End If End If End Function Private Sub DgvMainContextMenuItemPutty_Click(sender As Object, e As EventArgs) werbinich() startputty() End Sub Private Sub DgvMainContextMenuItemLink_Click(sender As Object, e As EventArgs) Handles DgvMainContextMenuItemLink.Click, CmdLink.Click werbinich() startlink() End Sub Public Function startlink() Dim URL As String Try URL = DgVMain.CurrentRow.Cells("Link").Value If URL.Contains("http") Or URL.Contains("https") Then Process.Start(DgVMain.CurrentRow.Cells("Link").Value) ElseIf URL = "" Then Exit Function Else Dim mstsc As New Process mstsc.StartInfo.FileName = "mstsc.exe" mstsc.StartInfo.Arguments = " /v: " & DgVMain.CurrentRow.Cells("Link").Value mstsc.Start() End If ' Process.Start("mstsc.exe", "/v: dc01") Catch ex As Exception 'MsgBox(ex.Message) End Try End Function Public Function startputty() Dim MainIP As String = Class1.MainHost(DgVMain.CurrentRow.Cells("IPAdresse").Value) Dim Benutzer, Passwort As String Class1.GetUserPasswort(MainIP, Benutzer, Passwort) Try Dim putty As New Process putty.StartInfo.FileName = "putty.exe" If Benutzer = "" And Passwort = "" Then putty.StartInfo.Arguments = DgVMain.CurrentRow.Cells("IPAdresse").Value Else putty.StartInfo.Arguments = DgVMain.CurrentRow.Cells("IPAdresse").Value & " -l " & Benutzer & " -pw " & Passwort End If putty.Start() Catch ex As Exception MsgBox(ex.Message) End Try End Function Private Sub CmdPutty_Click(sender As Object, e As EventArgs) Handles CmdPutty.Click, PuttyToolStripMenuItem.Click startputty() End Sub Private Sub ChkTools_CheckedChanged(sender As Object, e As EventArgs) Handles ChkTools.CheckedChanged If ChkTools.Checked Then PanTools.Visible = True Else PanTools.Visible = False End If End Sub Private Sub CmdPing_Click(sender As Object, e As EventArgs) Handles CmdPing.Click, PingToolStripMenuItem.Click Dim ping As New Process ping.StartInfo.FileName = "cmd.exe" ping.StartInfo.Arguments = " /k ping " & DgVMain.CurrentRow.Cells("IPAdresse").Value ping.Start() End Sub Private Sub CmdFiles_Click(sender As Object, e As EventArgs) Handles CmdFiles.Click, DateienToolStripMenuItem.Click If DgVMain.GetCellCount(DataGridViewElementStates.Selected) > 0 Then explorerstarten("Client") Else LblUhrzeit.Text = "Keine Auswahl getätigt" End If End Sub Private Sub CmdNWDateien_Click(sender As Object, e As EventArgs) Handles CmdNWDateien.Click, NetzwerkdateienToolStripMenuItem.Click Try explorerstarten("Netzwerk") Catch ex As Exception End Try End Sub Private Function explorerstarten(sender As String) Dim ds As New DataSet Dim Path As String Dim islinked As Integer Dim LinkedWith As String If Tabelle = "TbL_Netzwerkclients" Then werbinich() If sender = "Client" Then Try dbload() con.Open() Dim sda As New SqlDataAdapter("SELECT * FROM Tbl_NetzwerkClients WHERE IPAdresse='" & SenderIP & "'", con) sda.Fill(ds) con.Close() If IsDBNull(ds.Tables(0).Rows(0).Item("Linked")) Then islinked = "0" ElseIf Not IsDBNull(ds.Tables(0).Rows(0).Item("Linked")) Then islinked = ds.Tables(0).Rows(0).Item("Linked") End If If IsDBNull(ds.Tables(0).Rows(0).Item("LinkedWith")) Then LinkedWith = "" ElseIf Not IsDBNull(ds.Tables(0).Rows(0).Item("LinkedWith")) Then LinkedWith = ds.Tables(0).Rows(0).Item("LinkedWith") End If 'Dim linked As Integer = ds.Tables(0).Rows(0).Item("Linked") 'Dim IPA As String = ds.Tables(0).Rows(0).Item("LinkedWith") If islinked = "1" Then Dim dslinked As New DataSet() dbload() con.Open() Dim da As New SqlDataAdapter("SELECT * FROM Tbl_NetzwerkClients WHERE IPAdresse='" & LinkedWith & "'", con) da.Fill(dslinked) con.Close() Path = Class1.FilePath & "\" & dslinked.Tables(0).Rows(0).Item("NWStandort") & "_" & dslinked.Tables(0).Rows(0).Item("NetName") & "\" & dslinked.Tables(0).Rows(0).Item("Host") Else Path = Class1.FilePath & "\" & SenderStandort & "_" & SenderNetzwerk & "\" & SenderHost End If Catch ex As Exception MsgBox("ExplorerStarten() Tbl_Netzwerkclients: " & ex.Message) End Try ElseIf sender = "Netzwerk" Then Path = Class1.FilePath & "\" & SenderStandort & "_Allgemein" End If ElseIf Tabelle = "TbL_Allgemein" Then Try dbload() con.Open() Dim sda As New SqlDataAdapter("Select * FROM TbL_Allgemein WHERE Rubrik='" & DgVMain.CurrentRow.Cells("Rubrik").Value & "' AND Titel='" & DgVMain.CurrentRow.Cells("Titel").Value & "'", con) sda.Fill(ds) con.Close() Dim Info As String = ds.Tables(0).Rows(0).Item("Info") If IsDBNull(ds.Tables(0).Rows(0).Item("Linked")) Then islinked = "0" ElseIf Not IsDBNull(ds.Tables(0).Rows(0).Item("Linked")) Then islinked = ds.Tables(0).Rows(0).Item("Linked") End If If IsDBNull(ds.Tables(0).Rows(0).Item("LinkedWith")) Then LinkedWith = "" ElseIf Not IsDBNull(ds.Tables(0).Rows(0).Item("LinkedWith")) Then LinkedWith = ds.Tables(0).Rows(0).Item("LinkedWith") End If If islinked = "1" Then Dim dslinked As New DataSet() dbload() con.Open() Dim da As New SqlDataAdapter("SELECT * FROM Tbl_Allgemein WHERE LinkedWith='" & LinkedWith & "'", con) da.Fill(dslinked) con.Close() Path = Class1.FilePath & "\" & dslinked.Tables(0).Rows(0).Item("Rubrik") & "\" & dslinked.Tables(0).Rows(0).Item("Titel") '& "\" & dslinked.Tables(0).Rows(0).Item("Host") Else 'MsgBox("not linked") Path = Class1.FilePath & "\" & DgVMain.CurrentRow.Cells("Rubrik").Value & "\" & DgVMain.CurrentRow.Cells("Titel").Value '& "\" & SenderHost End If Catch ex As Exception MsgBox("ExplorerStarten() Tbl_Allgemein: " & ex.Message) End Try Else MsgBox("Da lief was schief...") Exit Function End If ''Pfad öffnen: Try If IO.Directory.Exists(Path) Then Process.Start(Path) Else IO.Directory.CreateDirectory(Path) Process.Start(Path) End If Catch ex As Exception End Try 'MsgBox(Tabelle) 'MsgBox(path) End Function Private Sub AnsichtDruckenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AnsichtDruckenToolStripMenuItem.Click PrintDGV.Print_DataGridView(DgVMain) End Sub Public Function neuerEintrag() werbinich() If Tabelle = "TbL_Netzwerkclients" Then If LstStandort.SelectedItem = "" Then LblUhrzeit.Text = "Kein Standort ausgewählt!" Exit Function End If If LstNetzwerk.SelectedItem = "" Then LblUhrzeit.Text = "Kein Netzwerk ausgewählt!" Exit Function End If Class1.Absender = "Main" HostBearbeiten.Show() ElseIf Tabelle = "TbL_Allgemein" Then SenderTitel = "" SenderRubrik = LstAllgemein.SelectedItem Neu = True EintragBearbeiten.Show() End If End Function Private Sub ErstellenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ErstellenToolStripMenuItem.Click neuerEintrag() End Sub Private Sub ChkKompAnsicht_CheckedChanged(sender As Object, e As EventArgs) Handles ChkKompAnsicht.CheckedChanged, ChkFreieHosts.CheckedChanged, ChkDHCPClients.CheckedChanged 'dgvload(Tabelle) dgvload_filter(Suchbegriff) End Sub Private Sub ExportToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportToolStripMenuItem.Click Class1.csvexport(DgVMain) End Sub Private Sub ImportToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ImportToolStripMenuItem.Click CSVImportieren.Show() End Sub Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click Application.Exit() End Sub Private Sub Closing_Closing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Application.Exit() End Sub Private Sub UpdateToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UpdateToolStripMenuItem.Click CheckUpdate("ImProgramm") End Sub Public Sub StartUpdate() Dim Updater As String = "Dokumentation_Updater.exe" Try My.Computer.FileSystem.CopyFile(Updatequelle & "\" & Updater, sAppPath & "\" & Updater, True) Catch ex As Exception End Try Process.Start("Dokumentation_Updater.exe") Application.Exit() End Sub Private Sub CmdSucheReset_Click(sender As Object, e As EventArgs) Handles CmdSucheReset.Click TxtSuche.Text = "" LstType.SelectedItem = "" RadNurNetzwerk.Checked = True End Sub Public Function CheckUpdate(starter As String) Dim RemoteVersion As String = "" LblVersion.Text = "Version: " & Version Try con.Close() conadmin.Open() cmdadmin.CommandText = "SELECT prog_aktuelleVersion FROM ADMIN.dbo.tblProgramme WHERE prog_codename= '" & My.Resources.Programmcode & "'" reader = cmdadmin.ExecuteReader() Do While reader.Read() RemoteVersion = reader("prog_aktuelleVersion") Loop reader.Close() conadmin.Close() Catch ex As Exception 'reader.Close() MsgBox("Kann RemoteVersion nicht abfragen." & ex.Message) TimerUpdate.Enabled = False conadmin.Close() Exit Function End Try Try If CInt(RemoteVersion.Replace(".", "")) > CInt(Version.Replace(".", "")) Then TimerUpdate.Enabled = False ' LblDebugInfo.Text = sAppPath & ", Version: " & Version & vbCrLf & "TimerUpdateStatus: " & TimerUpdate.Enabled LblInfo.ForeColor = Color.Red LblInfo.Text = "Neue Version verfügbar: " & RemoteVersion If MsgBox("Neue Updates verfügbar. Jetzt ausführen?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then StartUpdate() Else Exit Function End If Else LblInfo.Text = "" If starter = "ImProgramm" Then MsgBox("Keine neuen Updates verfügbar.") Else End If ' LblDebugInfo.Text = sAppPath & ", Version: " & Version & vbCrLf & "TimerUpdateStatus: " & TimerUpdate.Enabled End If Catch ex As Exception MsgBox("Kann Versionen nicht vergleichen: " & ex.Message) End Try End Function Private Sub Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.KeyData = Keys.F5 Then If Tabelle = "TbL_Allgemein" Then dgvload(Tabelle) Else dgvload_filter(Suchbegriff) End If End If End Sub Private Sub TimerUpdate_Tick(sender As Object, e As EventArgs) Handles TimerUpdate.Tick CheckUpdate("Timer") End Sub Public Sub EnableDoubleBuffered(ByVal dgv As DataGridView) Dim dgvType As Type = dgv.[GetType]() Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic) pi.SetValue(dgv, True, Nothing) End Sub Private Sub ObjektLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ObjektLöschenToolStripMenuItem.Click If Tabelle = "TbL_Netzwerkclients" Then Dim ds As New DataSet Dim IP As String = DgVMain.CurrentRow.Cells("IPAdresse").Value Dim da As New SqlDataAdapter("SELECT * FROM TbL_Netzwerkclients WHERE LinkedWith ='" & IP & "'", con) Dim linked As Boolean = False Dim slavenetzwerke As String = "" Dim NetzID As String = DgVMain.CurrentRow.Cells("NWStandort").Value & "_" & DgVMain.CurrentRow.Cells("NETNAME").Value Dim Host As String = DgVMain.CurrentRow.Cells("Host").Value Dim netzwerk As String = DgVMain.CurrentRow.Cells("Netzwerk").Value da.Fill(ds) Dim i As Integer = 0 For Each dr As DataRow In ds.Tables(0).Rows slavenetzwerke &= ds.Tables(0).Rows(i).Item("NWStandort") & "_" & ds.Tables(0).Rows(i).Item("NetName") & ": " & ds.Tables(0).Rows(i).Item("IPAdresse") & vbCrLf i = i + 1 Next con.Close() If DgVMain.CurrentRow.Cells("Linked").Value = "1" Then linked = True End If If MessageBox.Show("Eintrag >>" & Host & "<< wirklich löschen?", "Hosteintrag löschen", MessageBoxButtons.OKCancel) = DialogResult.OK Then Try con.Open() cmd.CommandText = "SELECT * FROM TbL_Netzwerkclients WHERE LinkedWith ='" & IP & "'" cmd.ExecuteNonQuery() reader = cmd.ExecuteReader() If reader.Read Then If MsgBox("Dieser Eintrag ist ein Master-Eintrag (Linked). Es werden sämtliche Slave-Einträge" & vbCrLf & slavenetzwerke & " ebenfalls gelöscht. Fortfahren?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then con.Close() con.Open() cmd.CommandText = "DELETE TbL_Netzwerkclients WHERE LinkedWith ='" & IP & "'" cmd.ExecuteNonQuery() cmd.CommandText = "DELETE TbL_Netzwerkclients WHERE IPAdresse ='" & IP & "'" cmd.ExecuteNonQuery() Else con.Close() Exit Sub End If End If con.Close() con.Open() cmd.CommandText = "DELETE TbL_Netzwerkclients WHERE IPAdresse ='" & IP & "'" cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try con.Close() ElseIf DialogResult.Cancel Then con.Close() Exit Sub End If If linked = False Then If MsgBox("Dazugehörigen Ordner im Dateisystem löschen?", MessageBoxButtons.YesNo + MsgBoxStyle.DefaultButton2, "Dateien löschen") = DialogResult.Yes Then Dim path As String = Class1.FilePath & "\" & NetzID & "\" & Host Try If IO.Directory.Exists(path) Then Dim files As String() = IO.Directory.GetFiles(path) For Each file As String In files IO.File.Delete(file) Next IO.Directory.Delete(path, True) 'Else ' MsgBox("Kein Ordner zum Löschen gefunden: wird übersprungen.") End If Catch ex As Exception MsgBox("Beim Löschen der Dateien: " & ex.Message) End Try ElseIf DialogResult.No Then Exit Sub End If End If Class1.RefillNW(netzwerk) dgvload_filter(Suchbegriff) ElseIf Tabelle = "TbL_Allgemein" Then Dim Rubrik, Titel As String Rubrik = DgVMain.CurrentRow.Cells("Rubrik").Value Titel = DgVMain.CurrentRow.Cells("Titel").Value If MessageBox.Show("Eintrag >>" & Titel & "<< wirklich löschen?", "Eintrag löschen", MessageBoxButtons.OKCancel) = DialogResult.OK Then con.Open() cmd.CommandText = "DELETE TbL_Allgemein WHERE RUBRIK = '" & Rubrik & "' AND TITEL= '" & Titel & "'" cmd.ExecuteNonQuery() con.Close() End If If MsgBox("Dazugehörigen Ordner im Dateisystem löschen?", MessageBoxButtons.YesNo + MsgBoxStyle.DefaultButton2, "Dateien löschen") = DialogResult.Yes Then Dim path As String = Class1.FilePath & "\" & Rubrik & "\" & Titel Try If IO.Directory.Exists(path) Then Dim files As String() = IO.Directory.GetFiles(path) For Each file As String In files IO.File.Delete(file) Next IO.Directory.Delete(path, True) 'Else ' MsgBox("Kein Ordner zum Löschen gefunden: wird übersprungen.") End If Catch ex As Exception MsgBox("Beim Löschen der Dateien: " & ex.Message) End Try End If dgvload("TbL_Allgemein") LstAllgemein.SelectedItem = Rubrik End If End Sub End Class