Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Reload oder Restart Button in der GUI

Mitglied: dispatcher

dispatcher (Level 1) - Jetzt verbinden

15.11.2019 um 10:13 Uhr, 282 Aufrufe, 4 Kommentare

Moin Zusammen,

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()	
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.
Mitglied: SlainteMhath
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
Bitte warten ..
Mitglied: dispatcher
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.
Bitte warten ..
Mitglied: 141815
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 ...
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()
Bitte warten ..
Mitglied: dispatcher
20.11.2019 um 11:58 Uhr
Hat wunderbar funktioniert. Besten Dank!
Bitte warten ..
Ähnliche Inhalte
Python
Python GUI Button funktionen?
gelöst Frage von ScuzzyPython7 Kommentare

Guten Tag, ich möchte ein Skript bauen welches eine GUI öffnet und ich die auswahl zwischen 3 Browsern habe. ...

Entwicklung
Iframe reload nach 5 Minuten
gelöst Frage von Thomas91Entwicklung3 Kommentare

Hallo Community, ich versuche gerade ein <iframe> dazu zu bringen das es alle 5 Minuten sich selbst neuläd. Leider ...

Windows Server
Restart Remote Desktop Service
Frage von SuriViruSWindows Server10 Kommentare

Hallo, wir möchten auf verschiedenen Windows Servern von 2008R2 bis 2016 den Remote Desktop Service neu starten. Allerdings handelt ...

Batch & Shell
Remote Restart Script mit Powershell
Frage von xXEddiXxBatch & Shell6 Kommentare

Hallo in die Runde, ich habe folgendes Anliegen: Ich möchte ein Powershell-Script bauen welches Hostnamen von Servern aus dem ...

Neue Wissensbeiträge
Internet

(NetzDG) .und Ihr heult über Limux in München, schon gehört, was die SPD vor hat?

Information von certifiedit.net vor 1 TagInternet8 Kommentare

Na dann, Gute Nacht Bürgerrechte. Wofür dann eigentlich die DS-GVO? Ich bezeichne mich als Polizist und hol mir einfach ...

Sicherheit

Chrome 79 übermittelt eingegebene Kennwörter nach Hause

Information von DerWoWusste vor 3 TagenSicherheit16 Kommentare

Ab sofort warnt Chrome standardmäßig Nutzer davor, wenn aus Leaks bekannte Passwörter zum Einsatz kommen. Beim Besuch einer Website, ...

Viren und Trojaner
Trend Micro WFBS 10 SP1 Patch 2185
Tipp von Abramelin vor 4 TagenViren und Trojaner3 Kommentare

Hi, Hab gerade gesehen das Patch 2185 für TM WFBS 10 SP1 erschienen ist! Werde mal Morgen den Patch ...

Viren und Trojaner

Neuer Virus lässt Windows im abgesicherten Modus starten

Tipp von transocean vor 4 TagenViren und Trojaner7 Kommentare

Moin, lest selbst. Grüße Uwe

Heiß diskutierte Inhalte
Windows 7
Windows 7 - Ein DSL Speedtest - Mehrere Browser - Unterschiedliche Ergebnisse
gelöst Frage von AusAltwirdNeuWindows 725 Kommentare

Hallo zusammen, mein PC hat zwei Rj45 Anschlüsse. Beide sind auf Gigabit Vollduplex eingestellt. An beiden Anschlüssen erreiche ich ...

DSL, VDSL
Fritz Box 7490 Internettelefonie
Frage von daveshuterDSL, VDSL13 Kommentare

Tach zusammen, ich bin gerade dabei meine neue Fritzbox (7490) für den Einsatz in meinem privaten Netz einzustellen (DSL ...

LAN, WAN, Wireless
UniFi AP AC Pro wenig Durchsatz
Frage von matze2090LAN, WAN, Wireless11 Kommentare

Hallo, ich habe mir zwei UniFi AP AC Pros gekauft, da sie eine sehr gute Rezzesion haben. Ich habe ...

Batch & Shell
Wort aus String "herrausschneiden", FileOpenDialog
Frage von Bruno8500Batch & Shell9 Kommentare

Ich bin gerade dabei ein CMD Skript zu schreiben für folgende Anwendung: Wenn man bei DHL eine Online Frankierung ...