S
Stuntmp02
Gast
Hallo zusammen,
weil ich mit meinem Ryzen recht viel mit Memtest die Stabilität des Arbeitsspeichers verifizieren musste und das lästige starten und anordnen der vielen Memtest Fenster mir zu lästig war, habe ich in PowerShell einen kleinen Launcher geschrieben, den ich hiermit der Community ebenfalls zur Verfügung stellen möchte. Man muss in dem PowerShell Script einmal im oberen Bereich die Anzahl der Threads sowie die Speichermenge pro Thread eintragen, sowie ob man die Threads mit niedriger Priorität laufen lassen möchte (damit man noch den PC nebenbei nutzen kann ohne einzuschlafen) und danach das Skript nur noch mit Rechtsklick -> Run with Powershell starten. Einmal ausgefüllt kann mit Rechtsklick -> Run with PowerShell vollautomatisch alle Memtest Fenster starten und gleich grafisch anordnen lassen.
Es startet dann vollautomatisch die Fenster mit den gewünschten Einstellungen und ordnet diese ordentlich an der rechten Seite des Bildschirms an.
https://www.youtube.com/watch?v=zoCLVhV71DE&feature=youtu.be
Installation:
1: Den Code in eine Textdatei kopieren und diese umbenennen zu MemtestLauncher.ps1. Diese Datei MemtestLauncher.ps1 dann in den Memtest Pro Ordner verschieben. Es wird nicht die kostenlose Version unterstützt, weil diese keinen Kommandozeilensupport bietet.
2: Die Datei MemtestLauncher.ps1 mit einem Texteditor öffnen und die ersten 3 Zeilen nach Wunsch konfigurieren
3: Das Skript mit Rechtsklick -> Run with Powershell starten.
weil ich mit meinem Ryzen recht viel mit Memtest die Stabilität des Arbeitsspeichers verifizieren musste und das lästige starten und anordnen der vielen Memtest Fenster mir zu lästig war, habe ich in PowerShell einen kleinen Launcher geschrieben, den ich hiermit der Community ebenfalls zur Verfügung stellen möchte. Man muss in dem PowerShell Script einmal im oberen Bereich die Anzahl der Threads sowie die Speichermenge pro Thread eintragen, sowie ob man die Threads mit niedriger Priorität laufen lassen möchte (damit man noch den PC nebenbei nutzen kann ohne einzuschlafen) und danach das Skript nur noch mit Rechtsklick -> Run with Powershell starten. Einmal ausgefüllt kann mit Rechtsklick -> Run with PowerShell vollautomatisch alle Memtest Fenster starten und gleich grafisch anordnen lassen.
Es startet dann vollautomatisch die Fenster mit den gewünschten Einstellungen und ordnet diese ordentlich an der rechten Seite des Bildschirms an.
https://www.youtube.com/watch?v=zoCLVhV71DE&feature=youtu.be
Installation:
1: Den Code in eine Textdatei kopieren und diese umbenennen zu MemtestLauncher.ps1. Diese Datei MemtestLauncher.ps1 dann in den Memtest Pro Ordner verschieben. Es wird nicht die kostenlose Version unterstützt, weil diese keinen Kommandozeilensupport bietet.
2: Die Datei MemtestLauncher.ps1 mit einem Texteditor öffnen und die ersten 3 Zeilen nach Wunsch konfigurieren
3: Das Skript mit Rechtsklick -> Run with Powershell starten.
Code:
## To Fill ##
$MemtestThreads = 14
$MemtestMemoryperThread = 1000
$RunMemtestWithLowPriority = $true
## Script Logic - do not modify until you are not know what you are doing! #
$StartArgument = "/t" + $MemtestMemoryperThread
$StartCount = $null
while($StartCount -lt $MemtestThreads) {
start memtestpro $StartArgument
$StartCount++
}
Start-Sleep 5
if ($RunMemtestWithLowPriority -eq $true){
foreach ($Process in (Get-Process | where {$_.Processname -like "*memtest*"})) {$Process.PriorityClass = "BelowNormal"}
}
$CSharpSource = @"
using System;
using System.Runtime.InteropServices;
namespace TW.Tools.InlinePS
{
public static class WindowManagement
{
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern IntPtr SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);
public const int SWP_NOSIZE = 0x01, SWP_NOMOVE = 0x02, SWP_SHOWWINDOW = 0x40, SWP_HIDEWINDOW = 0x80;
public static void SetPosition(IntPtr handle, int x, int y, int width, int height)
{
if (handle != null)
{
SetWindowPos(handle, 0, x, y, 0, 0, SWP_NOSIZE | SWP_HIDEWINDOW);
if (width > -1 && height > -1)
SetWindowPos(handle, 0, 0, 0, width, height, SWP_NOMOVE);
SetWindowPos(handle, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
}
}
}
}
"@
Add-Type -TypeDefinition $CSharpSource -Language CSharp -ErrorAction SilentlyContinue
$Width = 267
$Height = 325
$monitor = Get-Wmiobject Win32_Videocontroller
$MaxVertical = $Monitor.CurrentVerticalResolution
$MaxHorizontal = $Monitor.CurrentHorizontalResolution
$XCount = 0
$YCount = 0
$AllProcesses = Get-Process -name memTest* | Sort-Object -Property StartTime
foreach ($Process in $AllProcesses){
if (($YCount * $Height) -ge ($MaxVertical - $Height)){
$YCount = 0
$XCount++
}
if ($YCount -eq "0"){
$PosY = ($YCount * $Height)
}
else{
$PosY = ($YCount * $Height - $YCount * 3)
}
$PosX = $MaxHorizontal - (($XCount+1) * $Width - (5 * ($XCount+1)))
[TW.Tools.InlinePS.WindowManagement]::SetPosition($Process.MainWindowHandle, $PosX, $PosY, $Width, $Height)
$Ycount++
}
Zuletzt bearbeitet: