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. Oscar

Beiträge von Oscar

  • Netztraffic ermitteln

    • Oscar
    • 16. November 2009 um 05:21

    Jo, funktioniert bei mir auch, aber das Sleep kannst Du weglassen (wegen GUIGetMsg):

    [autoit]


    Do
    _traffic(GUICtrlRead($netzwerkadapter))
    ;~ Sleep(50)
    Until GUIGetMsg() = -3

    [/autoit]
  • Run Befehl unter Windows 7 geht nicht (in XP OK)

    • Oscar
    • 15. November 2009 um 17:42

    Ich habe ebenfalls Win7 und bei mir funktioniert das (sowohl Stable als auch Beta). Auch ohne #RequireAdmin.

  • Systemkomponenten

    • Oscar
    • 15. November 2009 um 15:31

    Andy, im Prinzip gebe ich Dir ja recht, aber die WMI-Abfragen zu verstehen ist als Anfänger nicht so einfach.
    Und wenn man dann als Neuling sowas aus einem Script "rauslesen" soll, kann das schon eine Nummer zu groß sein.
    Da finde ich die Fragen, die man allein durch lesen der Hilfe hätte lösen können, viel schlimmer.
    Letztendlich helfen wir doch gern (sonst wären wir nicht hier) und außerdem habe ich heute gute Laune. :)

  • kein Drag & Drop in Windows7 mit aktivierter UAC

    • Oscar
    • 15. November 2009 um 13:21

    Funktioniert bei mir (Win7, 64 Bit, UAC eingeschaltet) einwandfrei (sowohl vom Explorer als auch vom TotalCommander). Sogar ohne UAC-Nachfrage.

  • Netztraffic ermitteln

    • Oscar
    • 15. November 2009 um 13:04

    Wenn Du hinter einem Router hängst, dann bekommst Du die gesamten Werte (LAN und WAN) des Netzwerkadapters. Das läßt sich doch auch gar nicht unterscheiden, denn der Router entscheidet ja, ob die Pakete ins LAN oder ins WAN gehen.

  • Systemkomponenten

    • Oscar
    • 15. November 2009 um 12:59

    Andy: Nicht gleich so streng sein. Er ist doch noch neu und mein Script ist auch nicht soo übersichtlich.

    @halloman: Weil heute Sonntag ist, bekommst Du ein fertiges Script. ;)

    Spoiler anzeigen
    [autoit]


    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = 'localhost'

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

    $Output=""
    $Output &= 'Computer: ' & $strComputer & @CRLF
    $Output &= '==========================================' & @CRLF
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
    Global $CurrentClockSpeed, $MaxClockSpeed, $GPUAdapterRAM, $TotalRAM, $sOut

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

    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) then
    For $objItem In $colItems
    $CurrentClockSpeed = $objItem.CurrentClockSpeed
    $MaxClockSpeed = $objItem.MaxClockSpeed
    Next
    Endif

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

    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_VideoController', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) then
    For $objItem In $colItems
    $GPUAdapterRAM = $objItem.AdapterRAM
    Next
    Endif

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

    $TotalRAM = MemGetStats()

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

    $sOut = 'CPU = ' & $CurrentClockSpeed & ' Hz (max. ' & $MaxClockSpeed & ' Hz)' & @CR
    $sOut &= 'GPU-RAM = ' & _ByteAutoSize($GPUAdapterRAM, 0) & @CR
    $sOut &= 'RAM = ' & _ByteAutoSize($TotalRAM[1] * 1024, 0)

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

    MsgBox(0, 'Ergebnis', $sOut)

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

    ;===============================================================================
    ; Function Name: _ByteAutoSize($iSize[, $iRound][, $iFormat][, $bThousands])
    ; Description:: Gibt einen Bytewert in einer bestimmten Einheit zurück
    ; Parameter(s): $iSize = Größe in Byte übergeben
    ; $iRound = Anzahl der Nachkommastellen (0...8)
    ; $iFormat = bestimmt den Rückgabewert
    ; 0 = Automatisch (je nach übergebenen Wert)
    ; 1 = in Byte
    ; 2 = in KByte
    ; 3 = in MByte
    ; 4 = in GByte
    ; $bThousands = Rückgabe mit Tausendertrennzeichen (True/False)
    ; Requirement(s): #include <String.au3>
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _ByteAutoSize($iSize, $iRound = 2, $iFormat = 0, $bThousands = True)
    Local $aSize[4] = [' Byte', ' KByte', ' MByte', ' GByte'], $sReturn
    If $iFormat < 0 Or $iFormat > 4 Then $iFormat = 0
    If $iRound < 0 Or $iRound > 8 Then $iRound = 2
    If Not IsBool($bThousands) Then $bThousands = False
    $iSize = Abs($iSize)
    If $iFormat = 0 Then
    For $i = 30 To 0 Step -10
    If $iSize > (2 ^ $i) Then
    $iFormat = $i / 10 + 1
    ExitLoop
    EndIf
    Next
    EndIf
    If $iFormat = 0 Then $iFormat = 1
    $sReturn = StringFormat('%.' & $iRound & 'f', Round($iSize / (2 ^ (($iFormat - 1) * 10)), $iRound))
    If $bThousands Then $sReturn = _StringAddThousandsSep($sReturn, '.', ',')
    Return $sReturn & $aSize[$iFormat - 1]
    EndFunc ;==>_ByteAutoSize

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

    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    ;~ Local $aNumber = StringRegExp($sString, "(\d+)\D?(\d*)", 1)
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    ;~ $sResult = StringTrimLeft($sResult, 1) ; Strip leading thousands separator
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]
  • Namenloses Spiel

    • Oscar
    • 15. November 2009 um 12:27

    Die Idee ist doch super! :thumbup:
    Das kannst Du noch weiter ausbauen (zufällige Anordnung der Kästen, mehrere Level, nicht gleich beenden, sondern Fehlersound/-Anzeige, Punkte-/Zeitanzeige).

    Also nur zu, das Spiel hat was.

  • Netztraffic ermitteln

    • Oscar
    • 15. November 2009 um 12:14

    Geht auch per WMI:

    Spoiler anzeigen
    [autoit]


    ; Generated by AutoIt Scriptomatic

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

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = 'localhost'
    $NetworkAdapter = 'Marvell Yukon 88E8053 PCI-E Gigabit Ethernet Controller' ; hier den Namen des Netzwerkadapters eintragen

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

    $Output=""
    $Output &= 'Computer: ' & $strComputer & @CRLF
    $Output &= '==========================================' & @CRLF
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
    While True
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PerfFormattedData_Tcpip_NetworkInterface', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If $objItem.Name = $NetworkAdapter Then
    $Output = 'BytesReceivedPersec: ' & $objItem.BytesReceivedPersec & @CRLF
    $Output &= 'BytesSentPersec: ' & $objItem.BytesSentPersec & @CRLF
    $Output &= 'BytesTotalPersec: ' & $objItem.BytesTotalPersec & @CRLF
    ToolTip($Output, @DesktopWidth / 2 - 200, 20, 'Network-Traffic')
    EndIf
    Next
    Else
    $Output &= 'No WMI Objects Found for class: ' & 'Win32_PerfFormattedData_Tcpip_NetworkInterface'
    Endif
    Sleep(50)
    WEnd

    [/autoit]
  • 1 und 2stellige de Domains

    • Oscar
    • 15. November 2009 um 11:37

    Wenn Du z.B. ein Programm schreibst, bei dem der User die Eingabe einer EMail-Adresse vornehmen soll, dann willst Du vielleicht verhindern, dass er eine ungültige Adresse einträgt. Um das abzufragen benutzt Du einen Filter (RegExp).
    Und wo vorher der Filter eine einstellige de-Domain als ungültig erkannt hat, darf das jetzt nicht mehr passieren.

  • Systemkomponenten

    • Oscar
    • 15. November 2009 um 11:05

    Ein Script von mir: Computer-Info

  • 1 und 2stellige de Domains

    • Oscar
    • 15. November 2009 um 10:49

    Ich habe gerade in der aktuellen c't gelesen, dass es jetzt auch 1stellige (und weitere 2stellige) de-Domains geben wird.
    Dazu habe ich im INet noch diesen Artikel gefunden: Ein- und zweistellige de-Domains freigegeben
    Ok, ist tatsächlich schon vor fast einem Monat gewesen. Ich hab's aber erst jetzt bemerkt. :rolleyes:

    Naja, was ich eigentlich erwähnen wollte, ist, dass man bei seinen Programmen jetzt evtl. den Filter anpassen muss (so man einen verwendet hat).

  • Fallende GUI

    • Oscar
    • 15. November 2009 um 00:46

    Hmmm...meinst Du eher so:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Global $iV = 1

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

    $Form1 = GUICreate("Form1", 50, 30, 100, 0, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUISetState(@SW_SHOW)
    WinSetOnTop($Form1, '', 1)

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

    AdlibEnable('_FallDown', 10)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _FallDown()
    Local $aWinPos = WinGetPos($Form1), $aTaskbar = _GetTaskbarProp()
    If $aWinPos[1] + $aWinPos[3] + 6 + $iV < $aTaskbar[1] Then
    WinMove($Form1, '', $aWinPos[0], $aWinPos[1] + $iV)
    $iV += 1
    Else
    WinMove($Form1, '', $aWinPos[0], $aTaskbar[1] - ($aWinPos[3] + 6))
    $iV = 1
    EndIf
    EndFunc

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

    Func _GetTaskbarProp()
    Local $iOpt, $aPos
    $iOpt = Opt('WinTitleMatchMode', 4)
    $aPos = WinGetPos('classname=Shell_TrayWnd')
    Opt('WinTitleMatchMode', $iOpt)
    Return $aPos
    EndFunc

    [/autoit]
  • Frage zu _NowDate()

    • Oscar
    • 14. November 2009 um 23:52

    Benutze statt _NowDate lieber NowCalcDate, dann passt es:

    [autoit]


    If _NowCalcDate() >= "2009/12/01" Then
    $Pic1 = GuiCtrlCreatePic("pw1.jpg", 50, 380, 150, 150)
    EndIf

    [/autoit]


    Das liegt daran, dass hier die Reihenfolge (Jahr/Monat/Tag) besser für Vergleiche dieser Art geeignet ist.

  • Automatische Antwort

    • Oscar
    • 14. November 2009 um 14:59

    Was hast Du denn damit vor?
    Wenn Du das auf eine eigene GUI (Input-/Editcontrol) beschränkst, dann gäbe es noch andere Möglichkeiten.

  • Automatische Antwort

    • Oscar
    • 14. November 2009 um 14:56

    Das würde zu einem Keylogger führen. Dafür gibt es hier keinen Support.

  • Geburtstag von AutoBert

    • Oscar
    • 13. November 2009 um 04:50

    Und schon wieder eine Geburtstagsparty. :)
    AutoBert, alles Gute zum Geburtstag. Wie alt bist Du geworden?

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Makrorekorder mit "Sleepaufzeichnung"

    • Oscar
    • 13. November 2009 um 04:40

    Arraydeklaration und -zuweisung bei zwei Dimensionen geht so:

    [autoit]


    Dim $array[5][2] = [['a', 1],['b', 2],['c', 3],['d', 4],['e', 5]]
    _ArrayDisplay($array)

    [/autoit]
  • txt datei korrigieren

    • Oscar
    • 12. November 2009 um 20:50

    So:

    [autoit]


    #include <Array.au3>
    #include <File.au3>
    Global $aNames, $sOut, $aOut
    _FileReadToArray(@ScriptDir & '\names.txt', $aNames)
    For $i = 1 To $aNames[0]
    If Not StringInStr($sOut, $aNames[$i]) Then $sOut &= $aNames[$i] & '|'
    Next
    $aOut = StringSplit(StringTrimRight($sOut, 1), '|')
    _ArrayDisplay($aOut)

    [/autoit]
  • Negative Zahlen bei Addition von positiven?

    • Oscar
    • 12. November 2009 um 18:10

    Du überschreitest den Zahlenbereich der Integer-Variablen. Dafür haben wir in einem µIT mal BigInt-Funktionen erstellt.
    Hier mal Dein Script mit meiner BigInt_Add:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Global $fib_fol[901]
    $fib_fol[0] = 0
    $fib_fol[1] = 1

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

    For $i = 2 To 900
    $fib_fol[$i] = _BigInt_Add($fib_fol[$i - 1], $fib_fol[$i - 2])
    Next
    _ArrayDisplay($fib_fol)

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

    Func _BigInt_Add($sAdd1, $sAdd2)
    If StringLen($sAdd1) <= 18 And StringLen($sAdd2) <= 18 Then Return Int($sAdd1) + Int($sAdd2)
    Local $sOut, $sTemp, $iCarry = 0
    If StringLen($sAdd1) < StringLen($sAdd2) Then
    $sTemp = $sAdd1
    $sAdd1 = $sAdd2
    $sAdd2 = $sTemp
    EndIf
    Local $aAdd1 = StringRegExp($sAdd1, '\A\d{' & Mod(StringLen($sAdd1), 18) & '}|\d{18}+', 3), $iCountAdd1 = UBound($aAdd1) - 1
    Local $aAdd2 = StringRegExp($sAdd2, '\A\d{' & Mod(StringLen($sAdd2), 18) & '}|\d{18}+', 3), $iCountAdd2 = UBound($aAdd2) - 1
    For $i = 0 To $iCountAdd1
    If $i <= $iCountAdd2 Then
    $sTemp = Int($aAdd1[$iCountAdd1 - $i]) + Int($aAdd2[$iCountAdd2 - $i]) + $iCarry
    Else
    $sTemp = Int($aAdd1[$iCountAdd1 - $i]) + $iCarry
    EndIf
    $iCarry = Int($sTemp/1000000000000000000)
    $sOut = StringRight('000000000000000000' & $sTemp, 18) & $sOut
    Next
    Return StringRegExpReplace($sOut, '(\A0+)(\d+)', '$2')
    EndFunc

    [/autoit]
  • txt datei korrigieren

    • Oscar
    • 12. November 2009 um 17:43

    Was für Namen?
    Wo werden die aufgelistet?
    Was willst Du an den Namen korrigieren?
    Wo sind die Namen gespeichert?

    Oder einfach: Poste Dein Script! ;)

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™