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

Beiträge von BugFix

  • Festplattenaktivität auslesen

    • BugFix
    • 21. Juli 2007 um 14:32

    Hier hast du alle Parameter, die du abfragen kannst. Ich hab mal das momentan nicht wichtige auskommentiert und nur für alle HD gemeinsam ('_Total') ausgeben lassen.
    Pack es in eine Schleife - fertig. ;)

    Spoiler anzeigen
    [autoit]

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

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

    $Output=""
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems
    If $objItem.Name = '_Total' Then
    $Output = $Output & "Name: " & $objItem.Name & @CRLF
    ;~ $Output = $Output & "AvgDiskBytesPerRead: " & $objItem.AvgDiskBytesPerRead & @CRLF
    ;~ $Output = $Output & "AvgDiskBytesPerTransfer: " & $objItem.AvgDiskBytesPerTransfer & @CRLF
    ;~ $Output = $Output & "AvgDiskBytesPerWrite: " & $objItem.AvgDiskBytesPerWrite & @CRLF
    ;~ $Output = $Output & "AvgDiskQueueLength: " & $objItem.AvgDiskQueueLength & @CRLF
    ;~ $Output = $Output & "AvgDiskReadQueueLength: " & $objItem.AvgDiskReadQueueLength & @CRLF
    ;~ $Output = $Output & "AvgDisksecPerRead: " & $objItem.AvgDisksecPerRead & @CRLF
    ;~ $Output = $Output & "AvgDisksecPerTransfer: " & $objItem.AvgDisksecPerTransfer & @CRLF
    ;~ $Output = $Output & "AvgDisksecPerWrite: " & $objItem.AvgDisksecPerWrite & @CRLF
    ;~ $Output = $Output & "AvgDiskWriteQueueLength: " & $objItem.AvgDiskWriteQueueLength & @CRLF
    ;~ $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    ;~ $Output = $Output & "CurrentDiskQueueLength: " & $objItem.CurrentDiskQueueLength & @CRLF
    ;~ $Output = $Output & "Description: " & $objItem.Description & @CRLF
    ;~ $Output = $Output & "DiskBytesPersec: " & $objItem.DiskBytesPersec & @CRLF
    $Output = $Output & "DiskReadBytesPersec: " & $objItem.DiskReadBytesPersec & @CRLF
    ;~ $Output = $Output & "DiskReadsPersec: " & $objItem.DiskReadsPersec & @CRLF
    $Output = $Output & "DiskTransfersPersec: " & $objItem.DiskTransfersPersec & @CRLF
    $Output = $Output & "DiskWriteBytesPersec: " & $objItem.DiskWriteBytesPersec & @CRLF
    ;~ $Output = $Output & "DiskWritesPersec: " & $objItem.DiskWritesPersec & @CRLF
    ;~ $Output = $Output & "Frequency_Object: " & $objItem.Frequency_Object & @CRLF
    ;~ $Output = $Output & "Frequency_PerfTime: " & $objItem.Frequency_PerfTime & @CRLF
    ;~ $Output = $Output & "Frequency_Sys100NS: " & $objItem.Frequency_Sys100NS & @CRLF

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

    ;~ $Output = $Output & "PercentDiskReadTime: " & $objItem.PercentDiskReadTime & @CRLF
    ;~ $Output = $Output & "PercentDiskTime: " & $objItem.PercentDiskTime & @CRLF
    ;~ $Output = $Output & "PercentDiskWriteTime: " & $objItem.PercentDiskWriteTime & @CRLF
    $Output = $Output & "PercentIdleTime: " & $objItem.PercentIdleTime & @CRLF
    ;~ $Output = $Output & "SplitIOPerSec: " & $objItem.SplitIOPerSec & @CRLF
    ;~ $Output = $Output & "Timestamp_Object: " & $objItem.Timestamp_Object & @CRLF
    ;~ $Output = $Output & "Timestamp_PerfTime: " & $objItem.Timestamp_PerfTime & @CRLF
    ;~ $Output = $Output & "Timestamp_Sys100NS: " & $objItem.Timestamp_Sys100NS & @CRLF
    If Msgbox(1,"WMI Output",$Output) = 2 Then ExitLoop
    EndIf
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_PerfFormattedData_PerfDisk_PhysicalDisk" )
    Endif

    [/autoit]
  • GUI Hilfe

    • BugFix
    • 21. Juli 2007 um 13:06

    Hier mal eine Möglichkeit um Koordinaten zu ermitteln. Beenden, indem die Maus auf (0,0) gesetzt wird.

    Spoiler anzeigen
    [autoit]

    AutoitSetOption('MouseCoordMode', 1) ; 0 = relative coords to the active window
    ; 1 = absolute screen coordinates (default)
    ; 2 = relative coords to the client area of the active window
    _CursorPos()
    Func _CursorPos()
    Local $x, $y
    Do
    $pos = MouseGetPos()
    $x = $pos[0]
    $y = $pos[1]
    Select
    Case ((@DesktopWidth-$pos[0]) < 130) And ((@DesktopHeight-$pos[1]) >= 60)
    $x = @DesktopWidth-130
    $y = $pos[1]
    Case ((@DesktopWidth-$pos[0]) < 130) And ((@DesktopHeight-$pos[1]) < 60)
    $x = @DesktopWidth-130
    $y = @DesktopHeight-60
    Case ((@DesktopWidth-$pos[0]) >= 130) And ((@DesktopHeight-$pos[1]) < 60)
    $x = $pos[0]
    $y = @DesktopHeight-60
    EndSelect
    ToolTip('x = ' & $pos[0] & @LF & 'y = ' & $pos[1], $x, $y, 'Cursorposition', 1)
    Until ($pos[0] = 0 And $pos[1] = 0)
    ToolTip('Funktion beendet', $pos[0], $pos[1], 'Cursorposition', 1)
    Sleep(1500)
    ToolTip('')
    EndFunc ;==>_CursorPos

    [/autoit]
  • CSV-Datei in 2D-Array einlesen / Problem: StringSplit()

    • BugFix
    • 21. Juli 2007 um 09:50

    @(VX-)Rexx 
    Ich stimme dir insofern zu, dass dieser Punkt in der bisherigen Doku keinen Eingang gefunden hat und dies wünschenswert wäre.
    Andererseits kann ich mir nicht verkneifen zu sagen, dass jemand der Arrays in einem Array ablegt schon tiefergehende Programmierkenntnisse besitzen sollte (nicht zwingend in AutoIt, nur fürs Verständnis) und somit durch try & error nach spätestens 5 Minuten zu diesem Ergebnis kommt. ;)


    EDIT:
    Ich habe anhand deines Beispiels mal einen Beitrag für unser Wiki geschrieben.
    Arrays als Elemente eines Arrays

  • Despina oder Devin, das ist hier die Frage! *hamlet roxx*

    • BugFix
    • 20. Juli 2007 um 22:58

    Nimm beide, und was dir dann nicht gefällt, gibst du mir. :rofl:

    Nee, ernsthaft. Ist sicher stark von deiner Nutzung abhängig. Ich nehme eig. lieber langsam laufende Platten. Performanceverlust beim Lesen/schreiben halte ich für vernachlässigbar.

  • Der Shutdown-Timer

    • BugFix
    • 20. Juli 2007 um 22:50

    Guck mal hier rein, da verwende ich das:
    ToolTip, beenden mit Mausbewegung bzw. nach Zeitablauf

  • ToolTip, beenden mit Mausbewegung bzw. nach Zeitablauf

    • BugFix
    • 20. Juli 2007 um 22:46

    Wenn ich z.B. aus einer Anwendung in die Zwischenablage kopiere, gebe ich i.A. per ToolTip aus: '...wurde in die Zwischenablage kopiert'. Dahinter ein Sleep, damit der User auch Zeit zum Lesen hat.
    Da jeder unterschiedlich schnell liest, suchte ich nach einer möglichst einfachen Variante um den ToolTip vor Ablauf der Zeit zu killen.
    Daraus ist diese Funktion entstanden.
    Wird während der Tooltip-Anzeige die Maus um mehr als 10 Pixel horizontal oder vertikal bewegt, wird der Tooltip beendet.

    Die Parameter sind identisch, wie bei ToolTip. Hinzugekommen ist $TIME mit Voreinstellung von 3 s.

    Edit:
    Irgendwas findet man immer noch zum Ändern. ;)
    Hab jetzt als Standard (wenn $x oder $y =-1), dass der Tipp an der Mausposition gezeigt wird.

    _ToolTipMouseExit($TEXT, $TIME=-1, $x=-1, $y=-1, $TITLE='', $ICON=0, $OPT='')

    Spoiler anzeigen
    [autoit]

    ;----------------------------------------------------------------------------------------------------------------------
    ; Function _ToolTipMouseExit("text", [time [, x=-1 [, y=-1 [, "title" [, icon [, options]]]]]] )
    ;
    ; Description usual ToolTip, will be terminate with mouse move, latest after time
    ;
    ; Parameter same ase used by ToolTip
    ; if x Or y =-1 then ToolTip will be placed at mouse position
    ; optional $TIME default is 3000 ms
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _ToolTipMouseExit($TEXT, $TIME=-1, $x=-1, $y=-1, $TITLE='', $ICON=0, $OPT='')
    If $TIME = -1 Then $TIME = 3000
    Local $start = TimerInit(), $pos0 = MouseGetPos()
    If ($x = -1) Or ($y = -1) Then
    ToolTip($TEXT, $pos0[0], $pos0[1], $TITLE, $ICON, $OPT)
    Else
    ToolTip($TEXT, $x, $y, $TITLE, $ICON, $OPT)
    EndIf
    Do
    Sleep(50)
    $pos = MouseGetPos()
    Until (TimerDiff($start) > $TIME) Or _
    (Abs($pos[0] - $pos0[0]) > 10 Or _
    Abs($pos[1] - $pos0[1]) > 10)
    ToolTip('')
    EndFunc ;_ToolTipMouseExit

    [/autoit]

    Dateien

    _ToolTipMouseExit.au3 1,14 kB – 619 Downloads
  • CSV-Datei in 2D-Array einlesen / Problem: StringSplit()

    • BugFix
    • 20. Juli 2007 um 16:59

    Nein, es ist kein Bug. Du kannst nur nicht direkt auf ein Array innerhalb eines Array-Elements zugreifen. Du mußt es erst separieren:

    [autoit]

    $Array[3]=$AnotherArray
    ; Anzeigen von $AnotherArray[2]
    $x = $Array[3]
    MsgBox(0, '', $x[2])

    [/autoit]
  • Der Shutdown-Timer

    • BugFix
    • 20. Juli 2007 um 16:27

    Wenn ich das richtig sehe, ermittelst du die abgelaufene Zeit durch ein Sleep(1000) in deiner For-Schleife.
    Damit kannst du diese Schleife natürlich kaum verlassen.
    Wenn du mit einer gegebenen Zeitspanne arbeiten möchtest und gleichzeitig Interaktion zulassen willst, empfiehlt sich der Einsatz von: TimerInit() und TimerDiff(). Probiers mal.

  • englische Sprachdateien über deutsche Installation bügeln ?

    • BugFix
    • 20. Juli 2007 um 09:17

    Das installierte Windows ist nicht multilingual, umstellen geht also nicht.
    Naja, Hauptsache die Anwendung läuft in englisch, wäre halt nur von der Optik schöner, wenn es gleichmäßig wär.
    Trotzdem Danke.

  • Variable in Pfadangabe

    • BugFix
    • 17. Juli 2007 um 23:47

    Hallo, wozu gibt es denn Makros in Autoit ? ;)

    [autoit]

    DirCopy(@AppDataDir & "\Mozilla\Firefox", "D:\Backup\" , 1)

    [/autoit]
  • englische Sprachdateien über deutsche Installation bügeln ?

    • BugFix
    • 17. Juli 2007 um 19:55

    Hi,
    folgendes Problem. Ich bereite einige hier in DE ausrangierte Diagnostik-PC fürs Ausland vor.
    Auch hier habe ich das Problem, dass ich keine Windows-Neuinstallation durchführen kann, da dann die verankerten Lizenzinformationen futsch sind.

    Für den Auslandseinsatz soll der PC mit englischer Sprache laufen. Kein Problem für die Anwendersoftware, da kann ich das umstellen.
    Jetzt hätte ich aber gern auch Windows auf englisch umgestellt. Ist das überhaupt irgendwie möglich (Sprachdateien importieren ?) oder nicht?

    System ist Win2K.

  • SATA-Problem

    • BugFix
    • 17. Juli 2007 um 08:47

    Hallo Bernd,
    Danke :kiss: - genau so hat es geklappt.

    Auch wenn mir nicht ganz klar ist wieso. Ich hatte zu diesem PC keine separaten SATA-Treiber (nur RAID-Treiber, die ich aber mit meiner Win2K-Version nicht verwenden kann, da SP4 erforderlich und das darf ich wegen der installieren Software nicht aufspielen - darunter läuft die nicht). Habe nur die Chipsatz- und Grafiktreiber installiert und dann auf SATA geklont. Booten ging dann anstandslos.

    Ich weiß noch von 'nem Notebook mit SATA, dass dort im Gerätemanager nach der Installation auch ein SATA-Controller zu finden war.
    Das ist bei dem PC nicht der Fall (vllt. wg. Dual-Channel ?).

    Egal - es funzt, und das ist wichtig.

  • Problem mit dem Run-Befehl

    • BugFix
    • 15. Juli 2007 um 15:36

    Unter welchem Namen hast du es denn kompiliert? Es darf natürlich NICHT der Name einer existierenden Datei sein -sonst treten benannte Effekte auf.

  • GUICtrlEditGetSelTxt

    • BugFix
    • 15. Juli 2007 um 12:31

    Hi,
    ist mir bisher gar nicht aufgefallen - aber die Funktionen zum Edit-Ctrl geben entweder einen Zeilen- oder einen Zeichen-Index zurück.
    Man kann mit keiner Funktion direkt den markierten Text ausgeben.

    Hierzu habe ich jetzt eine Funktion hinzugefügt: GUICtrlEditGetSelTxt($h_edit)

    Spoiler anzeigen
    [autoit]

    ;----------------------------------------------------------------------------------------------------------------------
    ; Fuction _GUICtrlEditGetSelTxt($h_edit)
    ;
    ; Description Get selectet text from an edit-control
    ;
    ; Parameter $h_edit edit control
    ;
    ; Return Succes selected text
    ; Failure 0 set @error = 1; error from _GUICtrlEditGetSel()
    ; set @error = 2; nothing selected
    ;
    ; Requirement #include <GuiEdit.au3>
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _GUICtrlEditGetSelTxt($h_edit)
    Local $sel = _GUICtrlEditGetSel($h_edit)
    If ($sel == $EC_ERR) Then
    SetError(1)
    Return 0
    ElseIf (Not IsArray($sel)) Or ($sel[1] = $sel[2]) Then
    SetError(2)
    Return 0
    EndIf
    Local $selTxt = ''
    $arTxt = StringSplit(GUICtrlRead($h_edit),'')
    For $i = $sel[1]+1 To $sel[2]
    $selTxt &= $arTxt[$i]
    Next
    Return $selTxt
    EndFunc ;==>_GUICtrlEditGetSelTxt

    [/autoit]

    Dateien

    _GUICtrlEditGetSelTxt.au3 1,61 kB – 207 Downloads
  • Nur sichtbares aus Edit auslesen

    • BugFix
    • 15. Juli 2007 um 12:14

    Cursor an den Anfang setzen (Position 0):

    [autoit]

    _GUICtrlEditSetSel ($edit, 0, 0)

    [/autoit]

    Edit: Wenn du weißt, wieviel Zeichen du markieren möchtest:

    [autoit]

    _GUICtrlEditSetSel ($edit, 0, $anzahl)

    [/autoit]
  • Nur sichtbares aus Edit auslesen

    • BugFix
    • 15. Juli 2007 um 11:40

    Dann bleibt dir nur erst zu markieren:

    Spoiler anzeigen
    [autoit]

    #include <GuiEdit.au3>
    HotKeySet("!s", "_selectionRead") ; Auswahl zeigen mit Alt+s

    GUICreate("Test", 200, 100)
    $a = GUICtrlCreateEdit("", 20, 20, 150, 32, $WS_HSCROLL, $WS_EX_LAYERED )
    GUISetState(@SW_SHOW)

    $b = _StringRepeat("1234567890", 15)
    GUICtrlSetData($a, $b)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    Sleep(10)
    WEnd

    Exit

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

    Func _selectionRead()
    $sel = _GUICtrlEditGetSel($a)
    If IsArray($sel) Then
    $editTxt = GUICtrlRead($a)
    $arTxt = StringSplit($editTxt,'')
    $selTxt = ''
    For $i = $sel[1]+1 To $sel[2]
    $selTxt &= $arTxt[$i]
    Next
    EndIf
    MsgBox(0, '', "Select: " & $selTxt)
    EndFunc

    [/autoit]


    EDIT: Post Nr. 888 - Schnapszahl, ich gebe einen aus :D
    :tassen:

  • Nur sichtbares aus Edit auslesen

    • BugFix
    • 15. Juli 2007 um 11:17

    Verstehe ich nicht, wenn es nur eine Zeile ist, dann ist dies doch der gesamte Inhalt des Edits - also: GUICtrlRead($Edit).

    Oder ist das Editfeld so schmal, dass du nur die Hälfte der Zeile siehst, und du möchtest diesen Teil auslesen?

  • Nur sichtbares aus Edit auslesen

    • BugFix
    • 15. Juli 2007 um 10:58

    Also, du kannst die erste sichtbare Zeile ermitteln ( _GUICtrlEditGetFirstVisibleLine( ) ). Allerdings habe ich im Moment keine Idee, wie du die letzte sichtbare Zeile feststellen kannst, evtl. berechnen aus der Höhe des Editbereichs ( _GUICtrlEditGetRECT( ) ) und Schrifthöhe.

    Alternativ, den gewünschten Bereich markieren. Mit _GUICtrlEditGetSel( ) erhältst du dann Start-und Endposition des markierten Bereiches.

  • MSGBOX von externem Programm auslesen

    • BugFix
    • 14. Juli 2007 um 19:10

    Sag mal, wieso eigentlich WinActivate() ?
    Du willst doch wissen ob das Fenster aktiv ist, also WinActive().
    Oder liege ich da falsch?

  • MSGBOX von externem Programm auslesen

    • BugFix
    • 14. Juli 2007 um 18:11
    [autoit]

    $text = WinGetText($Title [,Text])

    [/autoit]

    $Title ist bei dir aber: "Microsoft Business Solutions-Navision", also:

    [autoit]

    $text = WinGetText("Microsoft Business Solutions-Navision")

    [/autoit]

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™