gelöst Reload oder Restart Button in der GUI
Moin Zusammen,
folgendes Skript ist vorhanden.
Hintergrund ist der. Die User starten das Skript. Sehen alle aktuell installierten Drucker und können den Standarddrucker ändern. Über den oberen Link können Sie neue Drucker hinzufügen. Der Button "Aktualisieren" soll nach der Installation den neuen Drucker mit anzeigen. Jetzt kann man entweder das Skript neustarten oder liest die installierten Drucker neu aus. Allerdings fehlt mir hierzu eine Idee/Code dem Button diese Funktion zuzuweisen.
Habt ihr eine Idee hierfür?
Besten Dank im Voraus.
folgendes Skript ist vorhanden.
01.
$window = Add-Type -memberDefinition @"
02.
[DllImport("user32.dll")]
03.
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
04.
"@ -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru
05.
$window::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
06.
07.
$Printers = Get-WmiObject -Class Win32_Printer | Select-Object -ExpandProperty name
08.
$currentPrinter = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | Select-Object -ExpandProperty name
09.
10.
Add-Type -AssemblyName System.Windows.Forms
11.
12.
$Form = New-Object system.Windows.Forms.Form
13.
$Form.Text = "Standard Drucker Einstellung"
14.
$Form.BackColor = "#d7ebfe"
15.
$Form.TopMost = $true
16.
$Form.Width = 1000
17.
$Form.Height = 500
18.
$Form.StartPosition = "CenterScreen"
19.
$Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell.exe")
20.
$Form.Icon = $Icon
21.
$lb_availablePrinters = New-Object system.windows.Forms.Label
22.
$lb_availablePrinters.Text = "verfügbare Drucker"
23.
$lb_availablePrinters.AutoSize = $true
24.
$lb_availablePrinters.Width = 10
25.
$lb_availablePrinters.Height = 10
26.
$lb_availablePrinters.location = new-object system.drawing.point(17,117)
27.
$lb_availablePrinters.Font = "Verdana,20"
28.
$Form.controls.Add($lb_availablePrinters)
29.
30.
$lb_defaultPrinter = New-Object system.windows.Forms.Label
31.
$lb_defaultPrinter.Text = "aktueller Drucker"
32.
$lb_defaultPrinter.AutoSize = $true
33.
$lb_defaultPrinter.Width = 25
34.
$lb_defaultPrinter.Height = 10
35.
$lb_defaultPrinter.location = new-object system.drawing.point(450,117)
36.
$lb_defaultPrinter.Font = "Verdana,20"
37.
$Form.controls.Add($lb_defaultPrinter)
38.
39.
$bt_close = New-Object system.windows.Forms.Button
40.
$bt_close.Text = "Schließen"
41.
$bt_close.ForeColor = "White"
42.
$bt_close.BackColor = "Red"
43.
$bt_close.Cursor = [System.Windows.Forms.Cursors]::Hand
44.
$bt_close.Width = 145
45.
$bt_close.Height = 33
46.
$bt_close.Add_Click({
47.
$Form.Close()
48.
})
49.
$bt_close.location = new-object system.drawing.point(800,374)
50.
$bt_close.Font = "Verdana,15,style=Bold"
51.
$Form.controls.Add($bt_close)
52.
53.
$v_printer = New-Object system.windows.Forms.Button
54.
$v_printer.Text = "Übersicht verfügbare Drucker - Klick mich"
55.
$v_printer.AutoSize = $true
56.
$v_printer.ForeColor = "Black"
57.
$v_printer.backColor = "White"
58.
$v_printer.Cursor = [System.Windows.Forms.Cursors]::Hand
59.
$v_printer.Width = 960
60.
$v_printer.Height = 33
61.
$v_printer.Add_Click({
62.
start-process "\\serverxyz\info\drucker"
63.
})
64.
$v_printer.location = new-object system.drawing.point(10,28)
65.
$v_printer.Font = "Verdana,15,style=Bold"
66.
$Form.controls.Add($v_printer)
67.
68.
$CHANGEButton = new-object System.Windows.Forms.Button
69.
$CHANGEButton.Location = new-object System.Drawing.Size(20,330)
70.
$CHANGEButton.Size = new-object System.Drawing.Size(150,20)
71.
$CHANGEButton.Text = "Aktualisieren"
72.
$CHANGEButton.ForeColor = "Black"
73.
$CHANGEButton.backColor = "White"
74.
$CHANGEButton.Add_Click({ALL})
75.
$Form.Controls.Add($CHANGEButton)
76.
77.
$lb_printer = New-Object system.windows.Forms.Label
78.
$lb_printer.Text = "$currentPrinter"
79.
$lb_printer.AutoSize = $true
80.
$lb_printer.Width = 350
81.
$lb_printer.Height = 50
82.
$lb_printer.location = new-object system.drawing.point(450,186)
83.
$lb_printer.Font = "Verdana,15"
84.
$Form.controls.Add($lb_printer)
85.
86.
$lstBX_printers = New-Object system.windows.Forms.ListBox
87.
$lstBX_printers.Width = 300
88.
$lstBX_printers.Height = 144
89.
$lstBX_printers.location = new-object system.drawing.point(20,186)
90.
foreach ($Printer in $Printers)
91.
{
92.
$lstBX_printers.Items.Add($Printer)
93.
}
94.
$lstBX_printers.Add_Click({
95.
$Global:currentPrinter = $lstBX_printers.SelectedItem
96.
})
97.
$Form.controls.Add($lstBX_printers)
98.
$bt_setDefault = New-Object system.windows.Forms.Button
99.
$bt_setDefault.Text = "als Standard einrichten"
100.
$bt_setDefault.ForeColor = "White"
101.
$bt_setDefault.BackColor = "Green"
102.
$bt_setDefault.Cursor = [System.Windows.Forms.Cursors]::Hand
103.
$bt_setDefault.Width = 300
104.
$bt_setDefault.Height = 33
105.
$bt_setDefault.Add_Click({
106.
(New-Object -ComObject WScript.Network).SetDefaultPrinter($Global:currentPrinter)
107.
$lb_printer.Text = "$Global:currentPrinter"
108.
$lb_printer.Refresh()
109.
})
110.
$bt_setDefault.location = new-object system.drawing.point(20,373)
111.
$bt_setDefault.Font = "Verdana,12,style=Bold"
112.
$Form.controls.Add($bt_setDefault)
113.
[void]$Form.ShowDialog()
114.
$Form.Dispose()
Habt ihr eine Idee hierfür?
Besten Dank im Voraus.
4 Antworten
- LÖSUNG SlainteMhath schreibt am 15.11.2019 um 11:04:34 Uhr
- LÖSUNG dispatcher schreibt am 15.11.2019 um 11:07:56 Uhr
- LÖSUNG 141815 schreibt am 15.11.2019 um 12:04:05 Uhr
- LÖSUNG dispatcher schreibt am 20.11.2019 um 11:58:11 Uhr
- LÖSUNG 141815 schreibt am 15.11.2019 um 12:04:05 Uhr
- LÖSUNG dispatcher schreibt am 15.11.2019 um 11:07:56 Uhr
LÖSUNG 15.11.2019 um 11:04 Uhr
Moin,
du könntest den Code der die Drucker ausliest und anzeigt in eine Funktion packen die du dann einfach nochmal über den entsprechenden Button aufrufst (Voerher ggfs. die Controls clearen)
lg,
Slainte
du könntest den Code der die Drucker ausliest und anzeigt in eine Funktion packen die du dann einfach nochmal über den entsprechenden Button aufrufst (Voerher ggfs. die Controls clearen)
lg,
Slainte
LÖSUNG 15.11.2019 um 11:07 Uhr
Das habe ich schon probiert. Wenn ich den Code in eine Funktion packe und übergebe, ist in der GUI das Fenster, was mir alle aktuell installierten Drucker anzeigt, leer.
LÖSUNG 15.11.2019, aktualisiert um 12:13 Uhr
Zitat von dispatcher:
Das habe ich schon probiert. Wenn ich den Code in eine Funktion packe und übergebe, ist in der GUI das Fenster, was mir alle aktuell installierten Drucker anzeigt, leer.
Dann has'es janz falsch jemach ...Das habe ich schon probiert. Wenn ich den Code in eine Funktion packe und übergebe, ist in der GUI das Fenster, was mir alle aktuell installierten Drucker anzeigt, leer.
01.
$window = Add-Type -memberDefinition @"
02.
[DllImport("user32.dll")]
03.
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
04.
"@ -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru
05.
$window::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
06.
07.
function Refresh-Printers {
08.
$Printers = Get-WmiObject -Class Win32_Printer
09.
$lstBX_printers.Items.Clear()
10.
$lstBX_printers.Items.AddRange(@($Printers.Name))
11.
$global:currentPrinter = ($Printers | ?{$_.Default}).Name
12.
$lb_printer.Text = $global:currentPrinter
13.
}
14.
15.
Add-Type -AssemblyName System.Windows.Forms
16.
17.
$Form = New-Object system.Windows.Forms.Form
18.
$Form.Text = "Standard Drucker Einstellung"
19.
$Form.BackColor = "#d7ebfe"
20.
$Form.TopMost = $true
21.
$Form.Width = 1000
22.
$Form.Height = 500
23.
$Form.StartPosition = "CenterScreen"
24.
$form.Add_Load({
25.
Refresh-Printers
26.
})
27.
$Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell.exe")
28.
$Form.Icon = $Icon
29.
$lb_availablePrinters = New-Object system.windows.Forms.Label
30.
$lb_availablePrinters.Text = "verfügbare Drucker"
31.
$lb_availablePrinters.AutoSize = $true
32.
$lb_availablePrinters.Width = 10
33.
$lb_availablePrinters.Height = 10
34.
$lb_availablePrinters.location = new-object system.drawing.point(17,117)
35.
$lb_availablePrinters.Font = "Verdana,20"
36.
$Form.controls.Add($lb_availablePrinters)
37.
38.
$lb_defaultPrinter = New-Object system.windows.Forms.Label
39.
$lb_defaultPrinter.Text = "aktueller Drucker"
40.
$lb_defaultPrinter.AutoSize = $true
41.
$lb_defaultPrinter.Width = 25
42.
$lb_defaultPrinter.Height = 10
43.
$lb_defaultPrinter.location = new-object system.drawing.point(450,117)
44.
$lb_defaultPrinter.Font = "Verdana,20"
45.
$Form.controls.Add($lb_defaultPrinter)
46.
47.
$bt_close = New-Object system.windows.Forms.Button
48.
$bt_close.Text = "Schließen"
49.
$bt_close.ForeColor = "White"
50.
$bt_close.BackColor = "Red"
51.
$bt_close.Cursor = [System.Windows.Forms.Cursors]::Hand
52.
$bt_close.Width = 145
53.
$bt_close.Height = 33
54.
$bt_close.Add_Click({
55.
$Form.Close()
56.
})
57.
$bt_close.location = new-object system.drawing.point(800,374)
58.
$bt_close.Font = "Verdana,15,style=Bold"
59.
$Form.controls.Add($bt_close)
60.
61.
$v_printer = New-Object system.windows.Forms.Button
62.
$v_printer.Text = "Übersicht verfügbare Drucker - Klick mich"
63.
$v_printer.AutoSize = $true
64.
$v_printer.ForeColor = "Black"
65.
$v_printer.backColor = "White"
66.
$v_printer.Cursor = [System.Windows.Forms.Cursors]::Hand
67.
$v_printer.Width = 960
68.
$v_printer.Height = 33
69.
$v_printer.Add_Click({
70.
start-process "\\serverxyz\info\drucker"
71.
})
72.
$v_printer.location = new-object system.drawing.point(10,28)
73.
$v_printer.Font = "Verdana,15,style=Bold"
74.
$Form.controls.Add($v_printer)
75.
76.
$CHANGEButton = new-object System.Windows.Forms.Button
77.
$CHANGEButton.Location = new-object System.Drawing.Size(20,330)
78.
$CHANGEButton.Size = new-object System.Drawing.Size(150,20)
79.
$CHANGEButton.Text = "Aktualisieren"
80.
$CHANGEButton.ForeColor = "Black"
81.
$CHANGEButton.backColor = "White"
82.
$CHANGEButton.Add_Click({Refresh-Printers})
83.
$Form.Controls.Add($CHANGEButton)
84.
85.
$lb_printer = New-Object system.windows.Forms.Label
86.
$lb_printer.Text = $global:currentPrinter
87.
$lb_printer.AutoSize = $true
88.
$lb_printer.Width = 350
89.
$lb_printer.Height = 50
90.
$lb_printer.location = new-object system.drawing.point(450,186)
91.
$lb_printer.Font = "Verdana,15"
92.
$Form.controls.Add($lb_printer)
93.
94.
$lstBX_printers = New-Object system.windows.Forms.ListBox
95.
$lstBX_printers.Width = 300
96.
$lstBX_printers.Height = 144
97.
$lstBX_printers.location = new-object system.drawing.point(20,186)
98.
$Form.controls.Add($lstBX_printers)
99.
100.
101.
$bt_setDefault = New-Object system.windows.Forms.Button
102.
$bt_setDefault.Text = "als Standard einrichten"
103.
$bt_setDefault.ForeColor = "White"
104.
$bt_setDefault.BackColor = "Green"
105.
$bt_setDefault.Cursor = [System.Windows.Forms.Cursors]::Hand
106.
$bt_setDefault.Width = 300
107.
$bt_setDefault.Height = 33
108.
$bt_setDefault.Add_Click({
109.
if ($lstBX_printers.SelectedIndex -ne -1){
110.
(New-Object -ComObject WScript.Network).SetDefaultPrinter($lstBX_printers.SelectedItem)
111.
Refresh-Printers
112.
}
113.
})
114.
$bt_setDefault.location = new-object system.drawing.point(20,373)
115.
$bt_setDefault.Font = "Verdana,12,style=Bold"
116.
$Form.controls.Add($bt_setDefault)
117.
[void]$Form.ShowDialog()
118.
$Form.Dispose()
LÖSUNG 20.11.2019 um 11:58 Uhr
Hat wunderbar funktioniert. Besten Dank!
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte