leider kann ich den Scanner nicht dazu bewegen ein alternatives Zeichen zu senden als Suffix...
Ist es ein Zebra scanner?
leider kann ich den Scanner nicht dazu bewegen ein alternatives Zeichen zu senden als Suffix...
Ist es ein Zebra scanner?
Ganz blöde Frage: Du kannst bei Scannerknofigurationen ja auch selbst definierte Zeichen anhängen (z.B. ein @ ).
Wäre das nicht für dich abfangbar, da dies ein normales String-Zeichen ist?
Pack mal an den Anfang des Skriptes Opt('MustDeclareVars', 1) und danach #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
Dann arbeitest du die Fehlermeldungen mal durch.
Ich hoffe die fehlende Formatierung /Einrückung ist beim copy/paste passiert? Der Code ist so nicht lesbar.
Ja, ich kenne das. Da stimme ich dir zu 100% zu.
Auch ich immernoch über Sachen wie WhatsApp in W11. Ich habe eine Tastatur mit frei zuteilbaren Tasten, denen ich gerne z.B. Whatsapp als schnellzugriff zuweisen würde aber W11 installiert das in einem ominösen (versteckten) Ordner, auf den ich auch als Admin nicht zugreifen darf, was wiederum verhindert das die Logitech G-Suite dies der Taste zuweisen kann (wenn man das mal alles heruasgefunden hat wann/wo/wie das liegt). Selbst wenn ich den Pfad per C&P einfüge: Zugriff verweigert.
Unter W10 war das noch Problemlos möglich...
Das mit der Datei, kommt bei mir nicht vor, läuft alles übers NAS (an der Fritzbox) und da hatte ich solche Meldungen bisher noch nicht.
Ok, das mit der Gruppierung:
ZitatGruppierung im Datei Explorer aufheben
Als Beispiel der Ordner Downloads:
Hier im Datei Explorer unter C:\Users\Dein Name\Downloads aufrufen. (Oder den von euch eingestellten Ordner)
- Rechtsklick in den Ordner -> "Gruppieren nach" -> (Keine anklicken)
- Danach ein weiterer Rechtsklick -> Eigenschaften -> Reiter Anpassen
- Ordnertyp einstellen und den Haken setzen bei Vorlage für alle Unterordner übernehmen und mit Übernehmen / OK bestätigen.
Das war es eigentlich auch schon. Dadurch wird verhindert, dass auch die Unterordner wieder gruppiert dargestellt werden. Sollte das nicht ausreichen, dann versucht den Trick, den wir darunter aufgeführt haben.
Mit der Höhe der Elemente habe ich noch nicht rumgespielt/gesucht, da mich das nicht gestört hat bisher.
Hast du mal probiert ob du mit der Skalierung das ggf. kleiner bekommst, wobei das ja auch Auswirkungen auf alles andere hat und daher wohl keine wirkliche Lösung wäre.
Zu deinem markierten Bereich: Ich habs gerade nicht vor Augen, da ich nur zuhause W11 habe. Aber im Explorer müsstest du diese "Favoriten" ausblenden können.
Und das Problem mit nicht ausführbaren Dateien habe ich noch nicht gehabt bisher.
Und welche Gruppierung meinst du? Ich habe mit W11 aufgehört ClassicShell oder so zu nutzen und habe das "neue Startmenü" nur bedingt angepasst (keine Voschläge, news etc.) ohne "Fremdsoftware" dafür zu nutzen.
Naja, wenn man generell ' anstatt " nutzt, finde ich ist es wesentlich einfacher:
$sPrintServer = 'PRINT:SERVER'
$sText = 'TEXT'
ConsoleWrite(@SystemDir & "\RUNDLL32 PRINTUI.DLL,PrintUIEntry /q /y /n " & '"' & "\\" & $sPrintServer & "\" & $sText & '"' & @CRLF)
; mit Stringformat muss "\" maskiert werden, also immer doppelt
ConsoleWrite(StringFormat('%s\\RUNDLL32 PRINTUI.DLL,PrintUIEntry /q /y /n "\\\\%s\\%s"', @SystemDir, $sPrintServer, $sText) & @CRLF)
; generell ' nutzen ansatt ", das man ' in einem Pfad-String braucht ist eher unwahrscheinlich und man braucht kaum wechseln und auch keine Maskierung
ConsoleWrite(@SystemDir & '\RUNDLL32 PRINTUI.DLL,PrintUIEntry /q /y /n "\\' & $sPrintServer & '\' & $sText & '"' & @CRLF)
Ich fahre seit dem Wechsel von ' auf " wesentlich besser aber das ist ein wenig Geschmackssache.
Auch wenn ich Lernenden das gerne selber überlasse Alina und später dann bei Problemen aushelfe (á lá learning by doing) , ja das Prinzip past würde das aber meinerseits etwas anders anpacken (Achtung: Das ist kein Anspruch an einen Neuling was nun kommt (!), da ist die pragmatische Lösung von Alina eher die Aufzeigt wie es geht):
Opt('MustDeclareVars', 1)
#include <MsgBoxConstants.au3>
Global $iNumber
$iNumber = Show_Random_Numbers(1, 1000)
$iNumber = Show_Random_Numbers($iNumber, 1000)
Func Show_Random_Numbers($iMin, $iMax)
Local Const $f_Integer = 1
Local $iRandom_Number
$iRandom_Number = Random($iMin, $iMax, $f_Integer)
MsgBox($IDOK, "Zufallszahl", "Eine Zufallszahl zwischen " & $iMin & " und " & $iMax & ": " & $iRandom_Number)
Return $iRandom_Number
EndFunc
Alles anzeigen
Hi Skriptboomer,
Zu deinen Fragen:
1. Schau mal hier rein: https://www.autoitscript.com/autoit3/docs/functions/Random.htm
Für den 2. Part speicherst du dir die generierte Zahl und nimmst sie halt als neuen Min Wert.
2. Ja das geht. Die Umsetzung (und Möglichkeit) hängt aber davon ab was genau du wovon haben willst. Dann muss man schauen was geht und was nicht und wie.
Freut mich das ich helfen konnte.
Ich denke, das hier nichts anderes gemacht wird, als der WinAPI Berechtigungen zum Lesen der entsprechenden Informationen gegeben und am Ende wieder genommen werden.
Ich hoffe natürlich das ich das richtig verstanden habe aber ich gebe keine Garantie
Racer : Steht das nicht schon in der Hilfe?
Ich würde sagen, folgendes muss vor deinem _WinAPI_GetProcessUser einmalig aufgerufen werden:
; Enable "SeDebugPrivilege" privilege for obtain full access rights to another processes
Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)
und folgendes, wenn du damit fertig bist:
Achso,sorry.
Alles? Never.
Da ich aber auch vor einiger Zeit mal die GPO's eines anderen PC's anschauen wollte und diese mir nur als Datei vorlagen, habe ich mal gesucht und eben das gefunden.
Evtl. gibts auch schon mehr/bessere Tools aber für meine Zwecke war es genug.
Es gibt einen von zorphnog.
Ich finde gerade nicht, wo ich die aktuellste version dir verlinken kann aber ich habe das im Anhang lokal liegen.
Velted : Nicht unbedingt. Per VPN etc. kannst du auch Geräte erreichen, die im entsprechenden (lokalen) Netz sind, sich jedoch physisch in einem anderen Gebäude/Stadt/Land befinden. Da er hier 4 Eingabefelder verwendet und die Strucktur sehr nach mehreren Filialen aussieht, vermute ich stark genau diese Konstellation.
Und da spielt dann die (lokale) Datenanbindung der Filiale und nocht vieles weitere mit rein, womit du da gerne mal auch ganz andere ping-zeiten erreichen kannst.
EhrenBrudi : Freut mich das ich helfen konnte. Beachte bitte das ich (gerade gesehen) als timeout in meinem letzten Beispiel noch die 4000ms drin hatte, diese kannst du, wenn es wirklich nur lokale Systeme sind runter setzen, musst du aber mal testen.
Zudem vermute ich das du dir vorher eine Schleife gebaut hattest, was dein Script zum hängen gebracht hat. Wenn das Inputfeld 4 chars drin hat (was du vorher nicht geleert hast), macht er deinen test immer wieder (da die Prüfung auf die Anzahl der zeichen im Input immer "true" ergibt) und hängt sich somit weg (Endlosschleife).
Das habe ich nebenbei bei den "Aufräumarbeiten" behoben aber erst später realisiert.
Ich hoffe ich habe das ganze für dich noch einigermaßen im Verständlichen gelassen, trotz der Nutzung vieler Arrays zur Kürzung des benötigten Codes.
So, hier der optimierte und korrigierte Code (jemand anders kann hier sicherlich noch weiter optimieren aber mir pers. würde es reichen ) EhrenBrudi
Da dein Problem nur an Anzahl der Geräte * timeout lag, ist dahingehend keine weitere optimierung möglich.
Opt('MustDeclareVars', 1)
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <ColorConstants.au3>
#include <ListViewConstants.au3>
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
HotKeySet ("{ESC}","_close")
Global Const $shGui = GUICreate("Pinger",400,180)
Global Const $idInput_Notepad1 = GUICtrlCreateInput("", 30,30,45)
Global Const $idInput_Notepad2 = GUICtrlCreateInput("", 30,70,45)
Global Const $idInput_Notepad3 = GUICtrlCreateInput("", 30,110,45)
Global Const $idInput_Notepad4 = GUICtrlCreateInput("", 30,150,45)
Global Const $idButton_Close = GUICtrlCreateButton("Schließen", 300, 30, 80, 20)
Global Const $idButton_Ping1 = GUICtrlCreateButton("GO->",80, 30, 35,20)
GUICtrlSetBkColor ($idButton_Ping1, $Color_Orange)
Global Const $idButton_Ping2 = GUICtrlCreateButton("GO->",80, 70, 35,20)
GUICtrlSetBkColor ($idButton_Ping2, $Color_Orange)
Global Const $idButton_Ping3 = GUICtrlCreateButton("GO->",80, 110, 35,20)
GUICtrlSetBkColor ($idButton_Ping3, $Color_Orange)
Global Const $idButton_Ping4 = GUICtrlCreateButton("GO->",80, 150, 35,20)
GUICtrlSetBkColor ($idButton_Ping4, $Color_Orange)
Global $aLabelStore1[8]
$aLabelStore1[0] = 7
$aLabelStore1[1] = GUICtrlCreateLabel("", 120, 30, 8, 8)
$aLabelStore1[2] = GUICtrlCreateLabel("", 120, 40, 8, 8)
$aLabelStore1[3] = GUICtrlCreateLabel("", 170, 30, 8, 8)
$aLabelStore1[4] = GUICtrlCreateLabel("", 170, 40, 8, 8)
$aLabelStore1[5] = GUICtrlCreateLabel("", 230, 28, 5, 5)
$aLabelStore1[6] = GUICtrlCreateLabel("", 230, 38, 5, 5)
$aLabelStore1[7] = GUICtrlCreateLabel("", 230, 48, 5, 5)
Global $aLabelStore2[$aLabelStore1[0] + 1]
$aLabelStore2[0] = $aLabelStore1[0]
$aLabelStore2[1] = GUICtrlCreateLabel("", 120, 70, 8, 8)
$aLabelStore2[2] = GUICtrlCreateLabel("", 120, 80, 8, 8)
$aLabelStore2[3] = GUICtrlCreateLabel("", 170, 70, 8, 8)
$aLabelStore2[4] = GUICtrlCreateLabel("", 170, 80, 8, 8)
$aLabelStore2[5] = GUICtrlCreateLabel("", 230, 68, 5, 5)
$aLabelStore2[6] = GUICtrlCreateLabel("", 230, 78, 5, 5)
$aLabelStore2[7] = GUICtrlCreateLabel("", 230, 88, 5, 5)
Global $aLabelStore3[$aLabelStore1[0] + 1]
$aLabelStore3[0] = $aLabelStore1[0]
$aLabelStore3[1] = GUICtrlCreateLabel("", 120, 110, 8, 8)
$aLabelStore3[2] = GUICtrlCreateLabel("", 120, 120, 8, 8)
$aLabelStore3[3] = GUICtrlCreateLabel("", 170, 110, 8, 8)
$aLabelStore3[4] = GUICtrlCreateLabel("", 170, 120, 8, 8)
$aLabelStore3[5] = GUICtrlCreateLabel("", 230, 108, 5, 5)
$aLabelStore3[6] = GUICtrlCreateLabel("", 230, 118, 5, 5)
$aLabelStore3[7] = GUICtrlCreateLabel("", 230, 128, 5, 5)
Global $aLabelStore4[$aLabelStore1[0] + 1]
$aLabelStore4[0] = $aLabelStore1[0]
$aLabelStore4[1] = GUICtrlCreateLabel("", 120, 150, 8, 8)
$aLabelStore4[2] = GUICtrlCreateLabel("", 120, 160, 8, 8)
$aLabelStore4[3] = GUICtrlCreateLabel("", 170, 150, 8, 8)
$aLabelStore4[4] = GUICtrlCreateLabel("", 170, 160, 8, 8)
$aLabelStore4[5] = GUICtrlCreateLabel("", 230, 148, 5, 5)
$aLabelStore4[6] = GUICtrlCreateLabel("", 230, 158, 5, 5)
$aLabelStore4[7] = GUICtrlCreateLabel("", 230, 168, 5, 5)
Global Const $aStoreArrays[5][2] = [[4, 1],[$idInput_Notepad1, $aLabelStore1], [$idInput_Notepad2, $aLabelStore2], [$idInput_Notepad3, $aLabelStore3], [$idInput_Notepad4, $aLabelStore4]]
For $Row = 1 to $aLabelStore1[0]
GUICtrlSetBkColor($aLabelStore1[$Row], $Color_black)
GUICtrlSetBkColor($aLabelStore2[$Row], $Color_black)
GUICtrlSetBkColor($aLabelStore3[$Row], $Color_black)
GUICtrlSetBkColor($aLabelStore4[$Row], $Color_black)
Next
GUISetState(@SW_SHOW, $shGui)
While 1
Switch GUIGetMsg()
case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton_Ping1
_ping($idInput_Notepad1, $aLabelStore1)
Case $idButton_Ping2
_ping($idInput_Notepad2, $aLabelStore2)
Case $idButton_Ping3
_ping($idInput_Notepad3, $aLabelStore3)
Case $idButton_Ping4
_ping($idInput_Notepad4, $aLabelStore4)
Case $idButton_Close
_close()
EndSwitch
For $Row = 1 to $aStoreArrays[0][0]
if StringLen(GUICtrlRead($aStoreArrays[$Row][0])) = 4 then _ping($aStoreArrays[$Row][0], $aStoreArrays[$Row][1])
Next
;~ if StringLen(GUICtrlRead($idInput_Notepad1)) = 4 then _ping($idInput_Notepad1, $aLabelStore1)
;~ if StringLen(GUICtrlRead($idInput_Notepad2)) = 4 then _ping($idInput_Notepad2, $aLabelStore2)
;~ if StringLen(GUICtrlRead($idInput_Notepad3)) = 4 then _ping($idInput_Notepad3, $aLabelStore3)
;~ if StringLen(GUICtrlRead($idInput_Notepad4)) = 4 then _ping($idInput_Notepad4, $aLabelStore4)
WEnd
Func _ping($idButton, $aIDLabels)
Local Const $timeout = 1000
Local Const $read1 = GUICtrlRead($idButton)
Local Const $aDeviceIPs[8] = [7, 140, 10, 11, 12, 13, 1, 50]
For $Row = 1 to $aDeviceIPs[0]
WinSetTitle($shGui, '', 'Pinger - Ping: ' & StringFormat("10.%.2d.%.1d.",StringLeft($read1,2), StringRight($read1,2)) & $aDeviceIPs[$Row])
If Ping(StringFormat("10.%.2d.%.1d.",StringLeft($read1,2), StringRight($read1,2)) & $aDeviceIPs[$Row], $timeout) Then
GUICtrlSetBkColor($aIDLabels[$Row], $Color_green)
Else
GUICtrlSetBkColor($aIDLabels[$Row], $Color_red)
EndIf
sleep(100)
Next
GUICtrlSetData($idButton, '')
WinSetTitle($shGui, '', 'Pinger')
EndFunc
Func _close()
Exit
EndFunc
Alles anzeigen
Edit: Ich war mal so frei, bei jedem Ping noch den Titel deines Fensters zu ändern, dann sieht man auch, das er noch arbeitet. Ist nur ein kleiner Vorschlag, kannst du ggf. auch wieder raus nehmen.
Noch einen kleinen Fehler gefunden (meinerseits), passe ich im nächsten Post an.