ok Mombas, stimmt hatte ich schlichtweg vergessen. @Bug, wäre auch eine Idee, werden ich bei Gelegenheit mal ausprobieren. Danke erst mal an alle Mithelfenden
lg
Chris
ok Mombas, stimmt hatte ich schlichtweg vergessen. @Bug, wäre auch eine Idee, werden ich bei Gelegenheit mal ausprobieren. Danke erst mal an alle Mithelfenden
lg
Chris
Bingo Velted: Jetzt funktioniert es so wie es soll, und macht auch Sinn so. Auch Mombas und allen anderen einen recht herzlichen Dank. Die Änderung aus Beitrag 52 hatte ich ja bereits eingearbeitet. Ich immer mit meinen Zangengeburten...
lg und einen schönen Feierabend
Chris
das hatte ich doch schon vorher, ohne Adlib, da steht dann einfach 0. Ich schätze mal es ist irgend eine Art von Timing Problem.
tja komisch, wie gesagt, von dem Zustand kein Kabel ausgehend schaltet er den Zusatnd auch um, nur umgekehrt nicht, da scheint es auch keine logische Erkärung zu geben...
So habe die Zeile jetzt auskommentiert, und auch die Frquenz hochgesetzt, immer noch Fehlanzeige, scheint doch sehr komplex zu sein das Problem
#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 $sHost= "localhost"
global $Gateway, $nMsg
global $IP = "Kein Netz"
Global $IPLabel
Global $HostLabel
; processing -------------------------------------------------------------------
AdlibRegister('_ActiveIP', 500)
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()
$HostLabel = GUICtrlCreateLabel( $sHost, 10, 85, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
$IPLabel = GUICtrlCreateLabel( $ip, 10, 60, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
EndFunc
Func _createButtons()
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _ActiveIP()
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 Not IsObj($colAdapter) Then Return SetError(1, 0, 0)
For $objAdapter In $colAdapter
If ($objAdapter.IPAddress(0)) Then
If $objAdapter.DefaultIPGateway(0) Then
If IsString($objAdapter.IPAddress(0)) and _
IsString($objAdapter.DefaultIPGateway(0)) Then
$IP = $objAdapter.IPAddress(0)
GUICtrlSetData($IPLabel, $IP)
$Gateway = $objAdapter.DefaultIPGateway(0)
Else
GUICtrlSetData($IPLabel , "Kein Netz")
Endif
EndIf
EndIf
next
Return
EndFunc ;==>_ActiveIP
;;;;;;;;;;;;;;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])
EndFunc
Alles anzeigen
Um noch mal auf meine Frage zurückzukommen, spricht denn was dagegen, die Variable $IP beim Eintritt in die Funktion zurückzusetzen?
HAllo MOmbas, welche Änderung meinst du konkret, diese hier?
;Zeile 27/28:
Local $sHost= "localhost" ;Außerhalb einer Funktion deklariert, also muss hier Global stehen!
Local $Gateway, $nMsg ;Außerhalb einer Funktion deklariert, also muss hier Global stehen!
also alles auf global setzen?
Kleiner Zwischenstand:
#
#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 $sHost= "localhost"
global $Gateway, $nMsg
global $IP = "Kein Netz"
Global $IPLabel
Global $HostLabel
; processing -------------------------------------------------------------------
AdlibRegister('_ActiveIP', 50)
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()
$HostLabel = GUICtrlCreateLabel( $sHost, 10, 85, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
$IPLabel = GUICtrlCreateLabel( $ip, 10, 60, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
EndFunc
Func _createButtons()
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _ActiveIP()
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 Not IsObj($colAdapter) Then Return SetError(1, 0, 0)
For $objAdapter In $colAdapter
If ($objAdapter.IPAddress(0)) Then
If $objAdapter.DefaultIPGateway(0) Then
If IsString($objAdapter.IPAddress(0)) and _
IsString($objAdapter.DefaultIPGateway(0)) Then
$IP = $objAdapter.IPAddress(0)
GUICtrlSetData($IPLabel, $IP)
$Gateway = $objAdapter.DefaultIPGateway(0)
;- GUICtrlSetData($GatewayLabel, $Gateway)
Return
Else
GUICtrlSetData($IPLabel , "Kein Netz")
GUICtrlSetData($GatewayLabel, "")
Endif
EndIf
EndIf
Next
EndFunc ;==>_ActiveIP
;;;;;;;;;;;;;;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])
EndFunc
Alles anzeigen
Also eine einfaches Zurücksetzen der Variable %IP an einer bestimmten Stelle tut es nicht? Im Übrigen hatte ich die Variablen anfänglich auf Global, ich habe halt schon oft Pferde kotzen sehen, und siehe da es funktionierte plötzlich, obwohl vielleicht unlogisch...
So, mit entferntem Kabel bekomme ich mit F5 folgebndes:
>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\Test\Desktop\test - Kopie.au3" /UserParams
+>13:18:35 Starting AutoIt3Wrapper (21.316.1639.1) from:SciTE.exe (4.4.6.0) Keyboard:00000407 OS:WIN_10/2009 CPU:X64 OS:X64 Environment(Language:0407) CodePage:0 utf8.auto.check:4
+> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\Test\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\Test\AppData\Local\AutoIt v3\SciTE
>Running AU3Check (3.3.16.0) from:C:\Program Files (x86)\AutoIt3 input:C:\Users\Test\Desktop\test - Kopie.au3
"C:\Users\Test\Desktop\test - Kopie.au3"(108,45) : warning: $GatewayLabel: possibly used before declaration.
GUICtrlSetData($GatewayLabel,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Test\Desktop\test - Kopie.au3"(108,45) : error: $GatewayLabel: undeclared global variable.
GUICtrlSetData($GatewayLabel,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Users\Test\Desktop\test - Kopie.au3 - 1 error(s), 1 warning(s)
!>13:18:35 AU3Check ended. Press F4 to jump to next error.rc:2
+>13:18:35 AutoIt3Wrapper Finished.
>Exit code: 2 Time: 0.9614
Alles anzeigen
Hilft das weiter?
na ich möchte natürlich, dass er so fern keine Netzverbindung bestehrt das auch schreibt, sonst isses witzlos;) klar auch wenn ein IP Wechsel passiert, dass tut er ja. Er tut es auch vom Wechsel von keiner Verbindung zu irgendeiner, nur der umgekehrte Weg lässt das Script kalt...
So hab jetzt mal nach dem ziehen des Steckers in ipconfig geschaut, da hat er jedenfalls keine IP mehr. Umgekehrt funktioniert es, wenn zunächst keine Verbindung besteht und dann das Kabel eingesteckt wird. Mein angepasstes Script schaut jetzt übrigens so aus:
#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
Local $sHost= "localhost"
Local $Gateway, $nMsg
global $IP = "Kein Netz"
Global $IPLabel
Global $HostLabel
; processing -------------------------------------------------------------------
AdlibRegister('_ActiveIP', 50)
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()
$HostLabel = GUICtrlCreateLabel( $sHost, 10, 85, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
; if $ip = "0" Then
$IP = "Kein Netz"
; Endif
$IPLabel = GUICtrlCreateLabel( $ip, 10, 60, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
EndFunc
Func _createButtons()
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _ActiveIP()
$IP = "Kein Netz"
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 Not IsObj($colAdapter) Then Return SetError(1, 0, 0)
For $objAdapter In $colAdapter
If ($objAdapter.IPAddress(0)) Then
If $objAdapter.DefaultIPGateway(0) Then
$IP = $objAdapter.IPAddress(0)
$Gateway = $objAdapter.DefaultIPGateway(0)
GUICtrlSetData($IPLabel, $IP)
Return
EndIf
EndIf
Next
EndFunc ;==>_ActiveIP
;;;;;;;;;;;;;;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])
EndFunc
Alles anzeigen
Okay, das verstehe ich schon, aber wenn ich das ganze ohne Adlib mache, dann schreibt er mir 0 wenn kein Netz vorhanden ist, viellicht könnte ich den Wert von $IP ja an irgendeiner STelle zurücksetzen, nur an welcher? Dann sollte er schreiben kein Netz. Aber ich kann ja mal per ipconfig schauen, ob er tatscächlich noch eine IP hat, dann liegt es nicht am Script
Danke
lg
Chris
Tja, komischerweise gehts jetzt doch, bleibt nur noch das Problem dass er nichts schreibt wenn das Kabel gezogen ist, der IP Wechsel, zB bei WLAN funktioniert nun
lg
Chris
Hallo Bug, das klingt ja logisch, und ich hatte das auch schon vor dem return, aber passiert nichts, also so hatte ich das:
#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
Local $sHost= "localhost"
Local $IP, $Gateway, $nMsg
Global $IPLabel
; 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()
$IPLabel = GUICtrlCreateLabel( $IP, 10, 60, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
EndFunc
Func _createButtons()
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _ActiveIP()
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 Not IsObj($colAdapter) Then Return SetError(1, 0, 0)
For $objAdapter In $colAdapter
If ($objAdapter.IPAddress(0)) Then
If $objAdapter.DefaultIPGateway(0) Then
global $IP = $objAdapter.IPAddress(0)
global $Gateway = $objAdapter.DefaultIPGateway(0)
GUICtrlSetData($IPLabel, $Gateway, $IP)
Return
EndIf
EndIf
Next
;GUICtrlSetData($IPLabel, $Gateway, $AIP)
EndFunc ;==>_ActiveIP
; Func _PrintIP()
; ConsoleWrite("IP: " & $IP & @CRLF)
ConsoleWrite("Gateway: " & $Gateway & @CRLF)
; 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])
EndFunc
Alles anzeigen
Bleibt weiterhin leer, schon komisch, scheint doch ein komplexeres Problem zu sein
lg
chris
Also, ich hab jetzt versucht das in meine GUI umzusetzen, trotzdem wird wieder behaupet die Variable sei nicht definiert, was stimmt denn um Gottes Willen nicht mit meiner GUISET anweisung, default als dritten Wert habe ich mal weggelassen, da laut Manpage optional, aber das Label bleibt weiterhin leer. Das angepasste Script sieht nun so aus:
#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
Local $sHost= "localhost"
Local $IP, $Gateway, $nMsg
Global $IPLabel
; 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()
$IPLabel = GUICtrlCreateLabel( $IP, 10, 60, 980, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
EndFunc
Func _createButtons()
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _ActiveIP()
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 Not IsObj($colAdapter) Then Return SetError(1, 0, 0)
For $objAdapter In $colAdapter
If ($objAdapter.IPAddress(0)) Then
If $objAdapter.DefaultIPGateway(0) Then
global $IP = $objAdapter.IPAddress(0)
global $Gateway = $objAdapter.DefaultIPGateway(0)
Return
EndIf
EndIf
Next
GUICtrlSetData($IPLabel, $Gateway, $AIP)
EndFunc ;==>_ActiveIP
; Func _PrintIP()
; ConsoleWrite("IP: " & $IP & @CRLF)
ConsoleWrite("Gateway: " & $Gateway & @CRLF)
; 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])
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Alles anzeigen
>Vielen Dank noch mal für die wertvollen Tips
lg
Da war ich wohl etwas vorschnell, ziehe diocgh mal das Netzkabel, dann wirst Du sehen, dass immer noch die alte IP weiterhin erscheint, da müsste laut der Funktion ja dann 0 stehen. Also ganz so einfach ist es wohl doch nicht.
ok, habe scite nun noch mal neu installiert und nun habe ich komischerweise unter Tools wieder einiges mahre an Punkten, also Deine Lösung funktioniert. Mals schauen,ob es im meiner GUI auch läuft.
Danke noch mal und schönen Sonntag noch
lg
Hallo schnuffel, suppernett für deinen Hinweis und Deine Lösung, leider passiert bei mir überhaupt nichts, liegt wohl daran dass du es als Konsolenscript formuliert hast. Vielleicht hätte ich das schon vorher fragen sollen, und hätte da vorher schon sehen können, wo das Problem ist. Vor meiner Neuinstalltion konnte ich noch mit einer Funktionstaste, ich glaube es war F6, unten in Scite4Autoit die Konsolenausgabe einblenden können. Leider funktioniert das nach der letzten Neuinstalltion nicht, muss ich das noch irgendwo einstellen?
Aber grundsätzlich, wie meinszt du das ASdlibRegister kann nicht mit Prarameter eine Funktion ansteuerr, ich habe es so gemacht, wie ich es schon einigemale erfolgreich Proktiziert habe, nämich so: AdlibRegister('_ActiveIP', 50), da habe ich doch keinen Parameter übergeben ?
lg und schönen Sonntag noch
ok danke Alina, dann schau ich mir das noch mal, irgend wie war ich vorher wohl auf einer falschen Hilfeseite...
Danke schon mal und
schönen Abend noch
okay den Hauptfehler habe ich nun selber gefunden, aus irgend einem Grund war das rausgeflogen am Anfang, und zwar
Global $sHost = @ComputerName
Aber aktualisieren tut er jedenfalls noch nicht
@GUICtrlSetData(_ActiveIP())
Zitat
GUICtrlSetData(_ActiveIP()) so nicht funktioniert
Wie kommst Du darauf, dass diese Funktion nicht funktioniert, also bei mir wird am Anfang eine IP angezeigt, bei Dir nicht? Wie und an welcher Stelle möchte AutoIt denn die Variable definiert haben, dass scheint doch hier das Hauptproblem zu sein und nicht die RBox, oder etwa doch?
@Oscar: nach welchem Return solkl ich die Variable definieen? Ich habe es vor und nach dem Return probiert, jeweils auch global, geht alles nicht:(
Danke noch mal für die Lösungsansätze
lg
chris