1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. veronesi

Beiträge von veronesi

  • Zweite IP-Adresse einer Netzwerkkarte auslesen

    • veronesi
    • 2. August 2011 um 11:23

    Mit dem folgenden Script solltest Du alle IP-Adressen von allen Adaptern im PC bekommen (Nur wenn aktiviert).
    Zusätzlich auch die MAC Adresse und ob DHCP aktiviert ist und weitere evtl. nützliche Dinge

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $oWMI = ObjGet("Winmgmts:\\.\root\cimv2")
    Global $oInstances = $oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")
    Global $aNetworkAdapter[1], $aIP

    [/autoit][autoit][/autoit][autoit]

    For $oInstance In $oInstances
    With $oInstance
    _ArrayAdd($aNetworkAdapter, "Description: " & .Description)
    _ArrayAdd($aNetworkAdapter, "DHCP Enabled: " & .DHCPEnabled)
    _ArrayAdd($aNetworkAdapter, "DHCP Server: " & .DHCPServer)
    _ArrayAdd($aNetworkAdapter, "DNS Domain: " & .DNSDomain)
    _ArrayAdd($aNetworkAdapter, "DNS Hostname: " & .DNSHostName)
    $aIP = .IPAddress
    For $i = 0 To UBound($aIP) - 1
    _ArrayAdd($aNetworkAdapter, "IP Address " & $i + 1 & ": " & $aIP[$i])
    Next
    _ArrayAdd($aNetworkAdapter, "MAC Address: " & .MACAddress)
    _ArrayDelete($aNetworkAdapter, 0)
    _ArrayDisplay($aNetworkAdapter)
    EndWith
    Next
    $oInstance = 0
    $oInstances = 0
    $oWMI = 0

    [/autoit]

    Bitte testen, ob's bei Dir auch wirklich klappt.

    Gruss Veronesi

  • Zweite IP-Adresse einer Netzwerkkarte auslesen

    • veronesi
    • 2. August 2011 um 10:57

    Wie wäre es damit?

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $oWMIService = ObjGet("Winmgmts:\\.\root\cimv2")
    Global $IPConfigSet = $oWMIService.ExecQuery("Select IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")

    [/autoit][autoit][/autoit][autoit]

    For $IPConfig In $IPConfigSet
    $aIP = $IPConfig.IPAddress()
    _ArrayDisplay($aIP)
    Next
    $oWMIService = 0

    [/autoit]
  • Zweite IP-Adresse einer Netzwerkkarte auslesen

    • veronesi
    • 2. August 2011 um 10:26

    Vielleicht hilf Dir das folgende Script etwas.
    Es ist natürlich nicht vollständig und ich habe es gerade selbst zusammengestrickt.... Also nichts perfektes

    [autoit]

    Global $oWMIService = ObjGet("Winmgmts:\\.\root\cimv2")
    Global $IPConfigSet = $oWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

    [/autoit][autoit][/autoit][autoit]

    For $IPConfig In $IPConfigSet
    For $i = 0 To UBound($IPConfig.IPAddress) - 1
    If $IPConfig.IPAddress($i) <> "" Then ConsoleWrite($IPConfig.IPAddress($i) & @CRLF)
    Next
    Next

    [/autoit][autoit][/autoit][autoit]

    $oWMIService = 0

    [/autoit]
  • Zweite IP-Adresse einer Netzwerkkarte auslesen

    • veronesi
    • 2. August 2011 um 09:39

    Hast Du schon mal ein ipconfig /all probiert?
    Das kannst Du ja über den StdoutRead einlesen.
    Vielleicht sind dort alle Adressen und auch DHCP sichtbar!

  • Zweite IP-Adresse einer Netzwerkkarte auslesen

    • veronesi
    • 2. August 2011 um 09:35

    In dem Fall hast Du eine Netzwerkarte mit mehreren RJ45 Buchsen??
    Dann weiss ich auch nicht weiter.

  • Zweite IP-Adresse einer Netzwerkkarte auslesen

    • veronesi
    • 2. August 2011 um 09:30

    Also mindestens mal zur ersten Frage kannst Du

    [autoit]

    @IPAddress2

    [/autoit]

    verwenden.

  • Script in Taskplanung

    • veronesi
    • 2. August 2011 um 06:51

    Also die Grafikkarte kann abfragen, ob ein Monitor dranhängt und auch, ob er eingeschaltet ist!
    Machen nicht alle, grundsätzlich aber möglich!
    Typischerweise machen das vor allem die NVIDIA Grafikkarten mit mehreren digitalen Ausgängen!

    Ich denke mir, dass Windows das auch mitbekommt, wenn der Grafikausgang (temp.) deaktiviert ist, und Deine Fensterbefehle und Mausbefehle schlagen fehl!

    Probier doch das Ganze mal mit immer eingeschaltetem Monitor, das sollte sich schnell finden lassen.
    Gruss Veronesi

  • Script in Taskplanung

    • veronesi
    • 1. August 2011 um 11:31

    Benutzerkontensteuerung unter XP? ;)

    Bist Du in einer Domäne? Domänenname bei Benutzername angegeben?
    Gab es unter XP nicht mal die Möglichkeit beim Task ein Häkchen mit der Option "Interaktion / Datenaustausch mit Desktop zulassen" zu setzen? (Oder war das bei den Diensten? Hab gerade keinen Windows PC zur Hand)


    Da Du mit Fensterbefehlen arbeitest, muss das ganze sichtbar sein und funktioniert nicht, wenn es unsichtbar oder bei gesperrtem Computer ausgeführt wird...

    Gruß Veronesi

  • Sound-Gerät ändern

    • veronesi
    • 29. Juli 2011 um 12:20

    Ähhhh... genau das macht doch mein Programm!....

  • Sound-Gerät ändern

    • veronesi
    • 28. Juli 2011 um 14:15

    Hallo zusammen!

    Ich musste mal etwas für einen Arbeitskollegen machen.
    Zuerst für XP (Dort konnte man es noch über die Registry erledigen)
    Danach für Vista / Win7.
    Dort habe ich nur die Möglichkeit gefunden, es fernzusteuern.

    Hier der Code:
    Das INI-File wird automatisch erzeugt, wenn nicht vorhanden. Darin muss man
    - bei XP die Namen der zu tauschenden Audio Devices Angeben
    - die Nummern der Positionen bei Win7 angeben.

    Spoiler anzeigen
    [autoit]

    ;===============================================================================================================================
    ;Description......: Switch from one Audio Output to an other
    ;Author...........: Veronesi
    ;Date.............: 21.10.2010
    ;===============================================================================================================================
    #NoTrayIcon
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_UseUpx=y
    #AutoIt3Wrapper_Res_Comment=Switch from one Audio Output to an other
    #AutoIt3Wrapper_Res_Description=Switch from one Audio Output to an other
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.6
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
    #AutoIt3Wrapper_Res_LegalCopyright=Veronesi

    [/autoit] [autoit][/autoit] [autoit]

    Opt("MustDeclareVars", 1) ;Must declare variables
    Opt("WinWaitDelay", 100)
    Opt("SendKeyDelay", 20)
    Opt("SendKeyDownDelay", 20)

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper"
    Global $ActualSettings, $OutputDevice1, $OutputDevice2, $Status

    [/autoit] [autoit][/autoit] [autoit]

    If @OSVersion = "WIN_2000" Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    If @OSVersion = "WIN_XP" Then ;Win XP
    If Not FileExists(@ScriptDir & "\Swap_AudioOutput_Settings.ini") Then
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","Realtek HD Audio output")
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","Realtek HD Audio output")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $OutputDevice1 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","Realtek HD Audio output")
    $OutputDevice2 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","Realtek HD Audio output")

    [/autoit] [autoit][/autoit] [autoit]

    $ActualSettings = RegRead($RegKey, "Playback")

    [/autoit] [autoit][/autoit] [autoit]

    If $ActualSettings = $OutputDevice1 Then
    RegWrite($RegKey, "Playback", "REG_SZ", $OutputDevice2)
    Else
    RegWrite($RegKey, "Playback", "REG_SZ", $OutputDevice1)
    EndIf
    Else ;Vista, Win7
    If Not FileExists(@ScriptDir & "\Swap_AudioOutput_Settings.ini") Then
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","1") ;1 = First entry / 2 = second entry / 3 = third entry....
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","2")
    EndIf
    $OutputDevice1 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","1")
    $OutputDevice2 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","2")

    [/autoit] [autoit][/autoit] [autoit]

    ShellExecute("mmsys.cpl") ;Start Sound switcher control
    WinWait("Sound", "", 10000) ;Wait max. 10s for this window
    WinActivate("Sound") ;Activate window
    Send("{Down " & $OutputDevice1 & "}") ;Activate entry
    $Status = ControlCommand("Sound", "", "[CLASS:Button; INSTANCE:2]", "IsEnabled", "") ;Check status of the button "Als Standard". If = 1 then the button is NOT deactivated!
    If Not $Status Then Send("{Down " & $OutputDevice2 - $OutputDevice1 & "}") ;If the first entry is set as default, then take the second
    ControlClick("Sound", "", "[CLASS:Button; INSTANCE:2]")
    ControlClick("Sound", "", "[CLASS:Button; INSTANCE:4]")
    EndIf
    Exit

    [/autoit]

    Gruss Veronesi

  • Problem mit UDPOpen (Magic-Paket)

    • veronesi
    • 1. Juli 2011 um 13:42

    Danke! Werd ich mal machen! (Später)

  • Problem mit UDPOpen (Magic-Paket)

    • veronesi
    • 1. Juli 2011 um 13:36

    Ach so!
    Ich habe es nur mit Windows 7, Server 2003, Server 2008 und Server 2008 R2 getestet....
    Ein XP habe ich (momentan) nicht mehr.

  • Problem mit UDPOpen (Magic-Paket)

    • veronesi
    • 1. Juli 2011 um 13:32

    Hmm gute Idee, doch leider stimmt das auch nicht.
    Einige, welche ich getestet habe, haben bloss eine Netzwerkkarte und es läuft trotzdem nicht.
    Dafür läuft es auf einem (Server), welcher 8 Netzwerkkarten hat.....

  • Problem mit UDPOpen (Magic-Paket)

    • veronesi
    • 1. Juli 2011 um 13:24
    Zitat von misterspeed


    1. Funktioniert das Script auf den problematischen Rechnern auch als au3? Aus deiner Beschreibung geht nicht ganz hervor ob es überall als au3 getestet wurde oder nur auf (d)einem Rechner, welcher über mehr Rechte verfügt.

    Ja, das AU3 funktioniert auf ALLEN Rechnern. Und es ist auch egal ob es von einem Netzlaufwerk oder lokal ausgeführt wird.

    Zitat von misterspeed


    2. Funktioniert die IP Ermittlung auf den problematischen Rechnern? ($IP=...)


    Ja, die funktioniert auf allen Rechnern und mit AU3 sowie auch mit EXE!

    Zitat von misterspeed


    3. Bist du sicher, dass auf allen Rechnern gleich große Netze zum Einsatz kommen und das letzte Oktett für dir Broadcast IP immer 255 sein muss? Kleinere Netze könnten beispielweise auch die 127 haben usw.


    Ja, 255 stimmt in jedem Fall (bei mir)

    Zitat von misterspeed


    4. Die Firewall könnte ggf. eine Ausnahme für den Sciteditor haben, jedoch alle anderen EXE Dateien blockieren, auch hier solltest du prüfen ob udp Verbindungen über den Port 9 überall möglich sind, ggf. Ausnahmen für deine Script.exe erstellen.


    Habe ich soeben getestet. Port 7 und Port 9 werden NICHT geblockt.

    Immerhin läuft es nun ja. Damit kann ich vorläufig leben!

  • Problem mit UDPOpen (Magic-Paket)

    • veronesi
    • 1. Juli 2011 um 13:14

    Nein, Irrtum.
    Das funktionierte auch nicht.

    Aber nun habe ich die Lösung gefunden:
    Ich habe die EXE immer vom Netzlaufwerk aus ausgeführt. Dann geht es nicht!!!!
    (Beide Varianten)

    Aber wenn ich die EXE lokal kopiere, dann funktioniert es! (Beide Varianten!!)

    Keine Ahnung warum, aber es ist so!
    Danke!

  • Problem mit UDPOpen (Magic-Paket)

    • veronesi
    • 1. Juli 2011 um 13:11

    Hallo Dietmar,


    wenn ich meine Magic Packet funktion durch Deine ersetzte (inkl. der _Hex_To_Char) dann funktioniert das Ganze!
    Keine Ahnung warum!!!

    Eine Idee?
    Danke!

  • Problem mit UDPOpen (Magic-Paket)

    • veronesi
    • 1. Juli 2011 um 10:49

    Hallo Zusammen,

    ich habe mit dem nachfolgenden Script Probleme - aber nur auf gewissen Computern. Bei manchen läuft es! (Leider konnte ich keine Regelmässigkeit feststellen)
    Das Problem ist, dass das Script als AU3 funktioniert! Kein Fehler, alles I.O!
    Wenn ich es als EXE kompilliere, funktioniert es nicht mehr!

    Hier der Code:

    Spoiler anzeigen
    [autoit]

    Dim Const $MAC = "XXXXXXXXXXXX"
    Dim Const $PCName = "PCNamen"
    Dim $Broadcast, $IP, $BroadcastIP, $Error

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartup()
    $IP = TCPNameToIP($PCName)
    TCPShutdown()

    [/autoit] [autoit][/autoit] [autoit]

    If $IP = "" Then
    $BroadcastIP = "255.255.255.255"
    Else
    $BroadcastIP = StringLeft($IP, StringInStr($IP, ".", 0, -1)) & "255"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    UDPStartup()
    $Broadcast = UDPOpen($BroadcastIP, 9, 1)
    MsgBox(0,"","UDP-Error: " & @error)
    $ReturnValue = UDPSend($Broadcast, _MagicPacket($MAC))
    $Error = @error
    UDPCloseSocket($Broadcast)
    UDPShutdown()

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "", "PC-Namen: " & $PCName & @LF & "IP: " & $IP & @LF & "IP-Broadcast: " & $BroadcastIP & @LF & "UDP Bytes gesendet: " & $ReturnValue & @LF & "UDP Error-Message: " & $Error)

    [/autoit] [autoit][/autoit] [autoit]

    Func _MagicPacket($sMac)
    If Not IsBinary($sMac) Then $sMac = Binary('0x' & StringRegExpReplace($sMac,'(0x)|[^A-Za-z0-9]', ''))
    Local $binPacket = Binary('0xFFFFFFFFFFFF')
    For $i = 1 To 16
    $binPacket &= $sMac
    Next
    Return $binPacket
    EndFunc

    [/autoit]

    In AU3 ist die erste Messagebox = 0 (Kein UDP Fehler)
    Und bei der zweiten werden 102 Bytes gesendet. Alles korrekt.

    Wenn ich es als EXE kompilliere und ausführe, ist die erste Messagebox 10022!
    Bei der zweiten werden 0 Bytes gesendet und die UDP Error-Message ist auf -2.

    Woran könnte das liegen?

  • taskscheduler - per commandline - problem...

    • veronesi
    • 29. Juni 2011 um 17:27

    Ist von M$ in KB823093 beschrieben: KB823093

    Z.B. diese Zeile setzt das um:

    [autoit]

    Run('"' & @ComSpec & '" /c schtasks /create /ru ' & @LogonDomain & '\' & @UserName & ' /tn "' & "Name" & '" /tr "\"' & @ProgramsCommonDir & "\Program.exe.exe" & '\"" /sc weekly /st 09:00:00' & ' /d MO /it /f', '', @SW_HIDE)

    [/autoit]

    Hier der Link zu einer UDF, mit welcher ich normalerweise Tasks ganz einfach mittels Objekten erstelle: Task mit Objekten erstellen

    Gruss, Veronesi

  • Alina feiert heute ;)

    • veronesi
    • 19. Juni 2011 um 14:00

    Auch ich wünsche Dir - Alina - alles Liebe und Gute zum Geburtstag!
    Cheers!!

  • AutoIt 3.3.7.xx Beta verfügbar

    • veronesi
    • 24. Mai 2011 um 14:50

    Also, ich habe nun die Betaversion auch mal getestet.
    Folgendes ist mir aufgefallen:

    • Die (Exe)Dateien werden geringfügig kleiner
    • Die (Exe)Dateien sind beim ausführen geringfügig schneller
      (Habe ein Script jeweils 30x laufen gelassen und die Zeiten gemessen => 3.3.6.1: 30.1 Sekunden / 3.3.7.1: 28.2 Sekunden)
    • Beim erzeugen der Exe Datei (wenn der Obfuscator an ist) kommt gelegentlich eine Fehlermeldung. Manchmal reagiert AutoIt danach nicht mehr.

    Edit:
    Ach ja: Das Test-Script im Post oben, crasht bei mir auch! (Win7, x64)

    Problemdetails

    Problemsignatur:
    Problemereignisname: APPCRASH
    Anwendungsname: au3check.exe
    Anwendungsversion: 1.54.20.0
    Anwendungszeitstempel: 4dda171b
    Fehlermodulname: au3check.exe
    Fehlermodulversion: 1.54.20.0
    Fehlermodulzeitstempel: 4dda171b
    Ausnahmecode: c0000005
    Ausnahmeoffset: 0001541e
    Betriebsystemversion: 6.1.7600.2.0.0.256.48
    Gebietsschema-ID: 2055
    Zusatzinformation 1: 0a9e
    Zusatzinformation 2: 0a9e372d3b4ad19135b953a78882e789
    Zusatzinformation 3: 0a9e
    Zusatzinformation 4: 0a9e372d3b4ad19135b953a78882e789


    Gruss Veronesi

    Dateien

    Crash.jpg 61,79 kB – 0 Downloads

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™