Powershell Skript nach Systray verschieben
Guten Morgen Zusammen,
ich habe folgendes kleines Skript was den Screensaver aushebelt und alle 60 Sekunden die Leertaste drückt.
Wie bekomm ich das Skript nach Start in ein Systray mit der Rechtsklick Option "Beenden" und Pausieren"?
ich habe folgendes kleines Skript was den Screensaver aushebelt und alle 60 Sekunden die Leertaste drückt.
param($minutes = 44640)
$myshell = New-Object -com "Wscript.Shell"
for ($i = 0; $i -lt $minutes; $i++) {
Start-Sleep -Seconds 60
$myshell.sendkeys("Space")
}
Wie bekomm ich das Skript nach Start in ein Systray mit der Rechtsklick Option "Beenden" und Pausieren"?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 606942
Url: https://administrator.de/contentid/606942
Ausgedruckt am: 21.11.2024 um 18:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
ich habe es selbst noch nicht probiert, aber schau doch mal hier:
http://www.systanddeploy.com/2018/12/create-your-own-powershell.html
VG
ich habe es selbst noch nicht probiert, aber schau doch mal hier:
http://www.systanddeploy.com/2018/12/create-your-own-powershell.html
VG
Zitat von @BirdyB:
ich habe es selbst noch nicht probiert, aber schau doch mal hier:
http://www.systanddeploy.com/2018/12/create-your-own-powershell.html
ich habe es selbst noch nicht probiert, aber schau doch mal hier:
http://www.systanddeploy.com/2018/12/create-your-own-powershell.html
Ja da gibts diverse leicht verstaendliche Anleitungen im 'English'-sprachigen Raum. Die aehneln sich alle irgendwie und sollten dem TO weiterhelfen. Ich glaube mal bei 'Adam The Automator' auch mal eine umfangreiche Anleitung gelesen zu haben.
VG Sato
Add-Type -A System.Windows.Forms
Add-Type –memberDefinition '[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);' -name W32 -namespace MyTools –passThru
[MyTools.W32]::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
$global:form = New-Object System.Windows.Forms.Form -Property @{
Name = "form"
Text = "form"
Width = 1
Height = 1
Visible = $false
ShowInTaskbar = $false
WindowState= 'Minimized'
}
$global:shell = New-Object -Com "Wscript.Shell"
$global:timer = New-Object System.Windows.Forms.Timer -Property @{Interval = 60000}
$global:timer.add_tick({
# action starts here
$global:shell.SendKeys("^{ESC}")
})
$global:cmenu = New-Object System.Windows.Forms.ContextMenu
$global:cmenu.MenuItems.Add('Exit',{
$global:timer.Stop()
$global:timer.Dispose()
$global:nicon.Dispose()
$global:form.Close()
}) | out-null
$global:cmenu.MenuItems.Add('Pause',{
if ($this.Text -eq "Pause"){
$global:timer.Stop()
$this.Text = "Start"
}else{
$global:timer.Start()
$this.Text = "Pause"
}
}) | out-null
$global:nicon = New-Object System.Windows.Forms.NotifyIcon -Property @{
Icon = [System.Drawing.Icon]::ExtractAssociatedIcon("C:\Windows\System32\SystemSettingsBroker.exe")
Visible = $true
ContextMenu = $global:cmenu
}
$global:timer.Start()
$global:form.ShowDialog() | out-null
Zitat von @chkdsk:
ich habe jetzt nur mal die Esc Taste durch Print ausgetauscht, da einige Programme, welche im Vordergrund laufen durch Esc beendet werden. Ist aber den Programmen bei uns geschuldet.
Naja davon gehe ich aus das du den Code vorher durchliest und entsprechende Stellen anpasst .ich habe jetzt nur mal die Esc Taste durch Print ausgetauscht, da einige Programme, welche im Vordergrund laufen durch Esc beendet werden. Ist aber den Programmen bei uns geschuldet.
Eine kleine Anmerkung habe ich noch. Das Tray Icon hat keinen Namen,
Dann gib ihm einenhttps://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.notifyi ...
Kannst du gleich beim Anlegen des Objektes abfackeln
$global:nicon = New-Object System.Windows.Forms.NotifyIcon -Property @{
Icon = [System.Drawing.Icon]::ExtractAssociatedIcon("C:\Windows\System32\SystemSettingsBroker.exe")
Visible = $true
ContextMenu = $global:cmenu
Text = "MeinSuperDuperHyperLeckMichAATool"
}
Eine kleine Anmerkung habe ich noch. ShowBalloonTip zeigt nichts an
Macht Windows 10 nicht mehr, das zeigen nur noch ältere OS an, da unter Windows 10 MS auf die Toast-Notifications umgestellt hat.