Also, ich versuche es noch mal deutlich zumachen. Ich möchte dass in der Variable $IPLABEL das Ergebnis der Funktion _ActiveIP angezeigt wird, das geschieht ja hier auch, allerdings nicht nach Ablauf des Aktualisierungsintervalls, da behauptet er dass die Variable nicht definiert ist, das ist aber am Anfang des Scripte geschehen, wurde inzwischen auch auf Global gesetzt.
Beiträge von casi4712
-
-
So also die meisten brauchte er nicht, die die jetzt noch drin sind, sollten Standard sein. Zeile 84 wird bei mir bemängelt. Sollte jemand eine UDB nicht haben, bitte sagen, dann Paste ich diese, Hier noch mal das Listing:
AutoIt
Alles anzeigen#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.16.0 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include-once #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <String.au3> #include <WinApi.au3> #include <WindowsConstants.au3> #include <MsgBoxConstants.au3> Global $ARRAY_COLOR_TOP_MIN[3] = [36, 65, 142] Global $ARRAY_COLOR_TOP_MAX[3] = [11, 42, 122] Global $RBOX_EVENT_CLOSE = 1 Global $ROUNDES = 20, $LastHwnd = 0 Global $LastHwnd Global $GUIBKCOLOR = 0xFFFFFFFF Global $sAugStatusLabel = "Augias Vers: " Global $iAugStatusLabel Local $sIPLabel = "IP (aktiv): " ;Global $iIPLabel = ; processing ------------------------------------------------------------------- AdlibRegister('_ActiveIP', 1000) Global $hGui = RBoxCreate("IP CHECK", 400, 200) ;_createButtons() _createLabels() While True CheckX($hGui, $RBOX_EVENT_CLOSE, "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0xA3A3A3)", "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0x555555)") local $gMsg = GUIGetMsg() Switch $gMsg Case $GUI_EVENT_CLOSE, $RBOX_EVENT_CLOSE GUIDelete($hGui) AdlibUnRegister('_ActiveIP') Exit EndSwitch WEnd ; functions -------------------------------------------------------------------- Func _createLabels() $iIPLabel = GUICtrlCreateLabel(_ActiveIP(), 10, 60, 980, 20) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) EndFunc Func _createButtons() EndFunc Func _ActiveIP($sHost = ".") Local $objAdapter Local $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $sHost & "\root\cimv2") If Not IsObj($objWMIService) Then Return SetError(1, 0, 0) Local $colAdapter = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", "WQL", 0x30) If IsObj($colAdapter) Then For $objAdapter In $colAdapter If IsString($objAdapter.IPAddress(0)) Then If IsString($objAdapter.DefaultIPGateway(0)) Then Return $objAdapter.IPAddress(0) Endif EndIf Next EndIf Return SetError(1, 0, 0) local $IPLabel = $objAdapter.IPAddress(0) local $AIP = $objAdapter.IPAddress(0) GUICtrlSetData(_ActiveIP()) EndFunc ;;;;;;;;;;;;;;BOX-Style;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Func RBoxCreate($Title, $width, $height, $left = -1, $top = -1, $show = 1) Local $GUI = GUICreate($Title, $width, $height, $left, $top, $WS_POPUP) ;GUICtrlCreatePic('C:\Windows\Temp\hg.jpg', 0, 25, 920, 660) GUICtrlSetState(-1, $GUI_DISABLE) GUISetBkColor($GUIBKCOLOR, $GUI) ;_GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES) $RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X', $width - 20, 3, 25, 25) GUICtrlSetCursor($RBOX_EVENT_CLOSE, 0) GUICtrlSetBkColor($RBOX_EVENT_CLOSE, -2) GUICtrlSetFont($RBOX_EVENT_CLOSE, 15, 800) GUICtrlSetColor($RBOX_EVENT_CLOSE, 0x555555) $Title &= " " Local $hTitle = GUICtrlCreateLabel($Title, 0, 0, $width - 20, 26, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont($hTitle, 17, 400, 0, "Consolas") GUICtrlSetBkColor($hTitle, -2) Local $Graphic = GUICtrlCreateGraphic(0, 0, $width, 25) GUICtrlSetState($Graphic, $Gui_DISABLE) ;GradientFill($Graphic, 0, 0, $width, 25, $ARRAY_COLOR_TOP_MIN, $ARRAY_COLOR_TOP_MAX) If $show = 1 Then GUISetState(@SW_SHOW, $GUI) Return $GUI EndFunc Func CheckX($hGui, $CtrlID, $sCMD, $eCMD) Local $cGui = GUIGetCursorInfo($hGui) If Not IsArray($cGui) Then Return 0 EndIf If $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd", $cGui[4]) If $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd", $cGui[4]) EndFuncHoffe jetzt ist mein Problem klar geworden, sorry noch mal
lg
Chris
-
Ok sorry , ich ging davon aus , dass die obenstehenden AUs alles Standard AUs seien, ich schaue mal welche er braucht und melde mich dann zurück.
-
Hallo estmal,
das ist momentan erst mal das ganze Script, ok demnächst gibt es mehr Einrückungen. Zur Frage Local oder Global, ich hatte hier beides schon probiert. Die Fehlermeldung lautet wie folgt:
Line71 (File "......au3): $IPLAbel = GUICreateLabel(_ActiveIP(), 10, 60, 980, 20) Error
Error:Variable used without being declared.
Das was aktualisiert werden soll steht in der Funktion, diese funktioniert solitätr auch und er,ittelt die jeweils aktive IP.
lg und Danke noch mal
Chris
-
Hallo allerseits,
eigentlich dachte hatte ich gedacht ich hätte das ich das miot dem Adlib Register verstanden hatte, aber wohl doch nicht ganz, oder es funktioniert nicht mit jeder Funktion. Ich versuche verweifelt die aktive IP auszulesen, und zwar aktualisiert, er sag bei mir immer die Variable sei nicht definiert, das seh ich nicht ganz so. Vielleicht kann mir ja jemand auf die Sprünge helfen, wäre ich sehr dankbar. Der isolierte Code sieht folgendermaßen aus:
AutoIt
Alles anzeigen; Script Start - Add your code below here #include-once ;#include "GUIBkImage.au3" #include "Services.au3" #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <GuiCtrlSetOnHover_UDF.au3> #include <StaticConstants.au3> #include <String.au3> #include <WinApi.au3> #include <WindowsConstants.au3> #include <WindowsConstants.au3> #include <MsgBoxConstants.au3> #include <ButtonConstants.au3> Global $ARRAY_COLOR_TOP_MIN[3] = [36, 65, 142] Global $ARRAY_COLOR_TOP_MAX[3] = [11, 42, 122] Global $RBOX_EVENT_CLOSE = 1 Global $ROUNDES = 20, $LastHwnd = 0 Global $LastHwnd Global $GUIBKCOLOR = 0xFFFFFFFF Global $sAugStatusLabel = "Augias Vers: " Global $iAugStatusLabel Local $sIPLabel = "IP (aktiv): " ;Global $iIPLabel = ; processing ------------------------------------------------------------------- AdlibRegister('UpdateIP', 1000) Global $hGui = RBoxCreate("IP CHECK", 400, 200) ;_createButtons() _createLabels() While True CheckX($hGui, $RBOX_EVENT_CLOSE, "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0xA3A3A3)", "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0x555555)") local $gMsg = GUIGetMsg() Switch $gMsg Case $GUI_EVENT_CLOSE, $RBOX_EVENT_CLOSE GUIDelete($hGui) AdlibUnRegister('UpdateIP') Exit EndSwitch WEnd ; functions -------------------------------------------------------------------- Func _createLabels() $iIPLabel = GUICtrlCreateLabel(_ActiveIP(), 10, 60, 980, 20) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) EndFunc Func _createButtons() EndFunc Func _ActiveIP($sHost = ".") Local $objAdapter Local $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $sHost & "\root\cimv2") If Not IsObj($objWMIService) Then Return SetError(1, 0, 0) Local $colAdapter = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", "WQL", 0x30) If IsObj($colAdapter) Then For $objAdapter In $colAdapter If IsString($objAdapter.IPAddress(0)) Then If IsString($objAdapter.DefaultIPGateway(0)) Then Return $objAdapter.IPAddress(0) Endif EndIf Next EndIf Return SetError(1, 0, 0) local $IPLabel = $objAdapter.IPAddress(0) local $AIP = $objAdapter.IPAddress(0) GUICtrlSetData(_ActiveIP()) EndFunc ;;;;;;;;;;;;;;BOX-Style;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Func RBoxCreate($Title, $width, $height, $left = -1, $top = -1, $show = 1) Local $GUI = GUICreate($Title, $width, $height, $left, $top, $WS_POPUP) ;GUICtrlCreatePic('C:\Windows\Temp\hg.jpg', 0, 25, 920, 660) GUICtrlSetState(-1, $GUI_DISABLE) GUISetBkColor($GUIBKCOLOR, $GUI) ;_GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES) $RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X', $width - 20, 3, 25, 25) GUICtrlSetCursor($RBOX_EVENT_CLOSE, 0) GUICtrlSetBkColor($RBOX_EVENT_CLOSE, -2) GUICtrlSetFont($RBOX_EVENT_CLOSE, 15, 800) GUICtrlSetColor($RBOX_EVENT_CLOSE, 0x555555) $Title &= " " Local $hTitle = GUICtrlCreateLabel($Title, 0, 0, $width - 20, 26, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont($hTitle, 17, 400, 0, "Consolas") GUICtrlSetBkColor($hTitle, -2) Local $Graphic = GUICtrlCreateGraphic(0, 0, $width, 25) GUICtrlSetState($Graphic, $Gui_DISABLE) ;GradientFill($Graphic, 0, 0, $width, 25, $ARRAY_COLOR_TOP_MIN, $ARRAY_COLOR_TOP_MAX) If $show = 1 Then GUISetState(@SW_SHOW, $GUI) Return $GUI EndFunc Func CheckX($hGui, $CtrlID, $sCMD, $eCMD) Local $cGui = GUIGetCursorInfo($hGui) If Not IsArray($cGui) Then Return 0 EndIf If $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd", $cGui[4]) If $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd", $cGui[4]) EndFuncVielen Dank schon mal im Voraus
lg und eine schöne Restwoche noch
lg
Chris
-
Un dich dachte schon ich bin total bescheuert, na Hauptsache es läuft in compilierter Form.
Danke noch mal, wer versteht schon Microsoft...
lg und schöne Woche noch
-
JA habe ich,, und das ist mir durchaus bewusst. Die Frage war ja auch vielmehr ist diese Dieskrepanz im Ergebnis, bei der Ausführung des au3 und des kompilierten x64 Exe in irgendeiner Form logisch erklärbar?
-
doch bin ich, und ich bin auch dankbar für diese Information, ich setze mich immer mit allem auseinander, auch wenn ich leider zeitlich etwas startk eingespannt bin, aber schade dass du diese Meinung hast Schnuffel, woher willst Du wissen, dass ich mnich nicht mit Die auseinandersetze ?
Danke noch mal an alle für die entsprechenden Hilfestellungen, Mein Script funktioniert jetzt soweit, wie es soll, Eine kleine Frage hätte ich jdoch noch, ich denke sollte nur ne Kleinigkeit sein, weshalb ich das hier gleich anhänge.
Ich lese mit dem Befehl RegRead bestimmte Werte aus der Rgistry aus, diesen Befehl finde ich klasse, leider funktioniert der Befehl nicht ganz logisch. Beispiel;
CodeGlobal $WinName = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName") MsgBox(0,"Info", $WinName)Dieses funktionierte von Anfang an nicht ganz richtig, als au3 zeigte er Mit Windows Enterprise an, in dem entsprechenden Key steht aber Windows Pro. Und es ist definiotiv Pro. IN kompilierter Form hat er es dann richtig gemacht. Seit neuestem zeigt er nur noch Enterprise an. Kennt jemand diesen Effekt?
lg
und schönen Sonntag noch
chris
-
ok f5 ich teste das mal
danke sehr
lg
-
wioe schon mehrfach erwähnt, ich habe CCITE 4 für AutoIt installiert, wo stell ich dass denn ein dass ich die Konsolenausgabe bekomme?
-
ok, so gehts:
AutoIt
Alles anzeigen#include <AutoItConstants.au3> #include <Array.au3> _IfWinActivated() MsgBox(0, "Licencing Information", _IfWinActivated) Func _IfWinActivated() Local $sCommand, $iPID, $sData $sCommand = @ComSpec & ' /c WMIC /NAMESPACE:\\root\CIMV2 PATH SoftwareLicensingProduct WHERE LicenseStatus=1 GET LicenseStatus | findstr "1"' $iPID = Run($sCommand, @ScriptDir, @SW_HIDE, 0x2) ProcessWait($iPID) Do $sData &= StdoutRead($iPID) Until @error <> 0 Return StringLeft($sData, 1) == '1' EndFuncdanke noch ma
-
Jo, hier bin ich noch mal, also erst mal recht schönen Dank für Ihre Mühe, gut möglich dass ich über die Artikel bereits gesolpert war, diese aber nicht liefen, leider laufen auch beide Scripte hier nicht, das erste liefert mir die meldung:
Error:Arry Var has incorrect numner of subscripts or subscript dimension range exceeded.
Beim WMI Script kommt zwar kein Fehler, aber leider sonst nicht viel:(
schönen Abend noch
lg
-
ok stimmt auch wieder, wär ja ne Möglichkeit. Danke für den Hinweis, dachte halt gibt ne elegantere Möglichkeit.
lf
chris
-
ähm, dass ist jetz nicht AutoIt oder? Zumindest kommt nur ne Fehlermeldung. Also als Batchalternative funktioniert es, aber ich möchte es gerne in Autoit einbinden. Klar ich könnte die Batch aufrufen, aber es soll in der GUI erscheinen, und eine variable ausn einer Batch übernehmen, habe ich gelernt, geht ja nicht
lg
Chris
-
Hallo allerseits,
ich habe ein kleines Problem, und zwar würde ich gerne den Status der Windows 10 Aktivierung anzeigen lassen. Hatte dazu zwar einiges gefunden, aber nur für Vista und früher, das was ich gefunden hatte zeigt mit immer an dass Windows aktiviert ist, auch wenn das nicht der Fall ist. In Batch hatte ich dazu folgendes verwendet:
CodeSetLocal EnableExtensions EnableDelayedExpansion Set "WinVerAct=" For /f "tokens=*" %%W in ('cscript /Nologo "C:\Windows\System32\slmgr.vbs" /xpr') Do Set "WinVerAct=!WinVerAct! %%W" if Not defined WinVerAct ( Echo:No response from slmgr.vbs Exit /B 1 ) ECHO %WinVerAct% ENDLOCALHat jemand eine Idee, wie man das in AutoIT lösen kann?
lg und eine schöne Woche
chris
-
Hae ich doch schon drauf, vielen Dank für die wertvollen Tips, werde es versuchen zu beherzigen
schönen Abend noch
lg
chris
-
ok, wenn man dat halt zwischen Tür und Angel macht, mit der Variable die noch leer ist, logisch, war blödsinn, habs jetzt hinbekommen, hoffe da ist jetzt nix mehr dran auszusetzen;)
AutoIt
Alles anzeigen#include <WindowsConstants.au3> #include <MsgBoxConstants.au3> ;main DetectLWprep() Global $sFilePath = $usb & "\PC-PREP\CUSTOM" if @Scriptdir = $sFilePath Then Local $source = $usb &"\PC-PREP\CUSTOM" Local $dest = 'C:\Users\Administrator\Downloads' sync() EndIf Func sync() $prog = 'c:\windows\system32\robocopy' local $what = '/e /mir /purge' local $options = '/r:0 /w:0' local $logg = '/LOG+:d:\_logging_dok2.log /NFL /NDL' local $runner = $prog & ' "' & $source & '" "' & $dest & '" ' & $what & ' ' & $options & ' ' Run( $runner, @scriptdir, @SW_SHOW) EndFunc Func DetectLWprep() local $var = DriveGetDrive( "all" ) global $usb="Not found" If NOT @error Then For $i = 1 to $var[0] LOCAL $search = FileExists( $var[$i] & "\LARCH-Projekte") If $search Then $usb = $var[$i] ExitLoop EndIf Next ; msgBox(4096,"", "Found Driveletter: "& StringUpper($usb)) EndIf EndFuncvielen Dank noch mal und
schönen Abend
-
Danke Sehr
ich hatte es via Google gesucht, da kommt man zwar über all raus bei SCITE, aber auf keinen Downloadlink, ...
-
Jo das dachte ich mir auch aber es funzt nicht, ok muss ich doch was mehr ausholen. Das Script soll ermitteln ob es sich auf einem Wechselmedium mit dem Unterverzeichnis PC-PREP\CUSTOM befindet, bzw, von dort gestartet wurde, dazu soll es zuvor den Laufwerksbuchstaben ermittln, was die Funktion auch tut. Und nur dann soll er etwas tun, nämlich eine Synchronisation durchführen
AutoIt
Alles anzeigen#include <WindowsConstants.au3> #include <MsgBoxConstants.au3> Global $sFilePath = '$usb' & "\PC-PREP\CUSTOM" ;main DetectLWprep() if @Scriptdir = $sFilePath Then MsgBox(0,"Info","Scriptaufruf : " & @scriptdir & "!",1) splash() Local $source = '$usb\PC-PREP\CUSTOM' Local $dest = 'C:\Users\Administrator\Downloads' sync() EndIf Func sync() $prog = 'c:\windows\system32\robocopy' local $what = '/e /mir /purge' local $options = '/r:0 /w:0' local $logg = '/LOG+:d:\_logging_dok2.log /NFL /NDL' local $runner = $prog & ' "' & $source & '" "' & $dest & '" ' & $what & ' ' & $options & ' ' Run( $runner, @scriptdir, @SW_SHOW) EndFunc Func DetectLWprep() local $var = DriveGetDrive( "all" ) locaL $usb="Not found" If NOT @error Then For $i = 1 to $var[0] LOCAL $search = FileExists( $var[$i] & "\LARCH-Projekte") If $search Then $usb = $var[$i] ExitLoop EndIf Next ;MsgBox(4096,"", "Found Driveletter: "& StringUpper($usb)) EndIf EndFunc -
So hallo noch mal,
ich hätte da noch mal eine Kuzfrage, hoffe ich doch mal. Wie setzte ich eine Variable mit einem Pfad richtig zusammen: Ist dass so richtig:
Das $usb ist ein wert der vorher durch eine Funktion bereitgestellt wird und einen Laufwerksbuchstaben liefert d: e: oder f: etc. Dass ich solche Sachen in Pfaden korrekt zusammensetzen
kann ist für mich extrem wichtig.Vielen Dank i.V.
lg
chris