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

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 20:02

    Dann suche halt weiter oben :D
    Verändere den Wert für $y_start = ... , mach ihn etwas kleiner (so 10 - 20 Pixel)

  • erweiterte Zwischenablage - Ideen

    • BugFix
    • 14. Juli 2008 um 18:08
    Zitat von sc4ry

    der text in spalte 1 kopiert wird


    Kopieren oder Verschieben?

    Zitat von sc4ry

    standardmäßig soll eine zeile markiert sein und beim scrollen dann jeweils die markierung hoch oder runterlaufen.


    Das widerspricht der obigen Funktion. Mit dem Wechsel der Markierung würde die Aktion zum Verschieben/Kopieren in Spalte 1 veranlaßt.

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 17:57
    Zitat von qui xux

    das grün liegt außerhalb des symbols


    Probiere aus, in welchem Abstand es liegt und ziehe diesen Abstand vom $match ab (also z.B. $match[0] -30 ). Der Y-Wert dürfte passen.

  • Registry-Funktionen per Objekt

    • BugFix
    • 14. Juli 2008 um 17:53

    Hi,
    3 nützliche "Helferlein":

    _GetRegSubKeys($HKEY)
    Ermittelt die Unterschlüssel für den übergebenen Schlüssel

    _GetRegRights($HKEY)
    Ermittelt die Rechte des Abfragenden für den übergebenen Schlüssel

    _GetRegValues($HKEY)
    Ermittelt alle Namen, Typen und Werte in einem gegebenen Schlüssel

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    $ar = _GetRegSubKeys('HKLM\Software')
    _ArrayDisplay($ar, "SubKeys von Software")
    MsgBox(0, 'Rechte für Software', _GetRegRights('HKLM\Software'))
    $ar = _GetRegValues('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\Autoit')
    If IsArray($ar) Then
    _ArrayDisplay($ar)
    Else
    MsgBox(0, '', 'Fehler')
    EndIf
    ;========================================================================================
    ; Function Name: _GetRegSubKeys($HKEY)
    ; Description: Ermittelt die Unterschlüssel für den übergebenen Schlüssel
    ; Parameter(s): $HKEY der Registryschlüssel
    ; Return Value(s): Erfolg Array mit den Unterschlüsseln
    ; Fehler Leerstring (keine Unterschlüssel vorhanden oder Schlüssel existiert nicht)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegSubKeys($HKEY)
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $arrSubKeys = '', $subkey
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    $oReg.EnumKey ($HKEY, $strKeyPath, $arrSubKeys)
    Return $arrSubKeys
    EndFunc ;==>_GetRegSubKeys

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

    ;========================================================================================
    ; Function Name: _GetRegRights($HKEY)
    ; Description: Ermittelt die Rechte des Abfragenden für den übergebenen Schlüssel
    ; Parameter(s): $HKEY der zu prüfende Registryschlüssel
    ; Return Value(s): String mit Auflistung der Rechte:
    ; Q Key Query Value
    ; S Key Set Value
    ; C Key Create Sub Key
    ; D Delete
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegRights($HKEY)
    Local $bHasAccessRight, $sRights = ''
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0001, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'Q'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0002, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'S'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0004, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'C'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x00010000, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'D'
    Return $sRights
    EndFunc ;==>_GetRegRights

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

    ;========================================================================================
    ; Function Name: _GetRegValues($HKEY)
    ; Description: Ermittelt alle Namen, Typen und Werte in einem gegebenen Schlüssel
    ; Parameter(s): $HKEY der Registryschlüssel
    ; Return Value(s): Erfolg Array[i][0] = Name
    ; Array[i][1] = Typ
    ; Array[i][2] = Wert
    ; Fehler Leerstring (Schlüssel existiert nicht oder ist ohne Einträge)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegValues($HKEY)
    Local $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    Local $arrValueNames, $arrValueTypes, $strValue
    $oReg.EnumValues($HKEY, $strKeyPath, $arrValueNames, $arrValueTypes)
    $OEvent = ObjEvent($oReg, "EnumValues")
    If Not IsArray($arrValueNames) Then Return ''
    Local $arOut[UBound($arrValueNames)][3]
    For $i = 0 To UBound($arrValueNames) -1
    $arOut[$i][0] = $arrValueNames[$i]
    Switch $arrValueTypes[$i]
    Case 1
    $arOut[$i][1] = 'REG_SZ'
    $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 2
    $arOut[$i][1] = 'REG_EXPAND_SZ'
    $oReg.GetExpandedStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 3
    $arOut[$i][1] = 'REG_BINARY'
    $oReg.GetBinaryValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 4
    $arOut[$i][1] = 'REG_DWORD'
    $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 7
    $arOut[$i][1] = 'REG_MULTI_SZ'
    $oReg.GetMultiStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    EndSwitch
    $arOut[$i][2] = $strValue
    Next
    Return $arOut
    EndFunc ;==>_GetRegValues
    Func MyErrFunc()
    Return
    Endfunc

    [/autoit]
  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 17:04

    Wenn es so, wie in deiner Zeichnung ist, liegt ja das Farbsymbol neben dem eigentlichen Icon.
    Also mußt du doch Pixelweise scannen (wie von mir am Anfang empfohlen) um das erste Grün, das wohl über dem richtigen Icon liegt, auch zu erwischen.

  • MsgBox Flags

    • BugFix
    • 14. Juli 2008 um 16:37

    Oder guggst du hier.
    Aber auch in SciTE ( Alt+W )

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 16:33
    Zitat von qui xux

    dass er das symbol rechts nebendran bewegt und nicht das bei dem die grüne fläche aufpopt


    Das liegt wohl daran, dass das grüne Feld nicht über dem eigentlichen Icon, sondern rechts daneben erscheint. Dann setze das Raster auf 5 Pixel herunter, dann ist die Chance größer, dass der über dem richtigen Icon liegende Bereich erwischt wird.

    Zitat von qui xux

    ich hätte aber gerne, dass sie weiter läuft und er das gesammte raster absuchet


    Grundsätzlich kein Problem, entferne ExitLoop aus der Schleife und probiere.

  • Gobby - Dateien gemeinsam bearbeiten

    • BugFix
    • 14. Juli 2008 um 16:20

    Ist eine xml-Datei, sollte nicht allzu schwierig sein, dass zu erstellen. Ist halt nur einiges an Arbeit ;)

  • StringRegExp bringt Skript zum Absturz

    • BugFix
    • 14. Juli 2008 um 15:48
    Zitat von HowToBen


    Hm, wenn ich da die WS raus mach, findet StringRegExp doch keinen Match mehr.


    :) Stimmt, ich dachte auch mehr an nur die Umbrüche.
    Wie gehst du vor? Alles in ein Array listen und iterieren oder zeilenweise einlesen und prüfen?

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 15:17

    Na dann eben in 10-er Pixelblöcken die Maus setzen und jeweils den Bereich 10x10 rechts von der Maus scannen:

    [autoit]

    Global $x_start = 100, $x_end = 300, $y_start = 100, $y_end = 200
    Global $x_ziel = 400, $y_ziel = 500, $color = 0x66FF00, $match
    For $i = $x_start To $x_end Step 10
    For $k = $y_start To $y_end Step 10
    MouseMove($i, $k, 5)
    $match = PixelSearch($i, $k, $i+10, $k+10,$color)
    If IsArray($match) Then
    MouseClickDrag('left', $match[0], $match[1], $x_ziel, $y_ziel, 1)
    ExitLoop(2)
    EndIf
    Next
    Next

    [/autoit]
  • Gui Fragen

    • BugFix
    • 14. Juli 2008 um 15:10

    Schau in der Hilfe zu GUICreate(), dort findest du Styles und Extended-Styles. Einfach den Links folgen.

  • StringRegExp bringt Skript zum Absturz

    • BugFix
    • 14. Juli 2008 um 15:07

    Vielleicht kannst du ja mal dein Pattern posten.
    Vielleicht besteht ein Problem bei Zeilenumbrüchen, entferne die einfach mal vor dem Check (StringStripWS).

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 14:22

    War mir schon klar, aber das Springen im 50 Pixel-Takt ist Quatsch.

    Zitat

    Du müßtest dann die Maus Pixel für Pixel bewegen und jedesmal scannen ob das Symbol auftaucht.


    Deshalb auch mein obiges Bsp. ;)

  • Prozessstop automatisch erkennen

    • BugFix
    • 14. Juli 2008 um 13:48

    Vielleicht bringt es dir was die Prozesseigenschaften auszuwerten.
    Mal ein Bsp. für die ersten 5 Durchläufe, die Daten aller Prozesse im 2 Sekunden-Takt:

    Spoiler anzeigen
    [autoit]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $objRefresher = ObjCreate("WbemScripting.SWbemRefresher")
    $colItems = $objRefresher.AddEnum _
    ($objWMIService, "Win32_PerfFormattedData_PerfProc_Process").objectSet
    $objRefresher.Refresh
    $str = ''

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

    For $i = 1 to 5
    For $objItem in $colItems
    $str &= "Caption: " & $objItem.Caption & @LF
    $str &= "Creating Process ID: " & $objItem.CreatingProcessID & @LF
    $str &= "Description: " & $objItem.Description & @LF
    $str &= "Elapsed Time: " & $objItem.ElapsedTime & @LF
    $str &= "Handle Count: " & $objItem.HandleCount & @LF
    $str &= "ID Process: " & $objItem.IDProcess & @LF
    $str &= "I/O Data Bytes Per Second: " & $objItem.IODataBytesPersec & @LF
    $str &= "I/O Data Operations Per Second: " & $objItem.IODataOperationsPersec & @LF
    $str &= "I/O Other Bytes Per Second: " & $objItem.IOOtherBytesPersec & @LF
    $str &= "I/O Other Operations Per Second: " & $objItem.IOOtherOperationsPersec & @LF
    $str &= "I/O Read Bytes Per Second: " & $objItem.IOReadBytesPersec & @LF
    $str &= "I/O Read Operations Per Second: " & $objItem.IOReadOperationsPersec & @LF
    $str &= "I/O Write Bytes Per Second: " & $objItem.IOWriteBytesPersec & @LF
    $str &= "I/O Write Operations Per Second: " & $objItem.IOWriteOperationsPersec & @LF
    $str &= "Name: " & $objItem.Name & @LF
    $str &= "Page Faults Per Second: " & $objItem.PageFaultsPersec & @LF
    $str &= "Page File Bytes: " & $objItem.PageFileBytes & @LF
    $str &= "Page File Bytes Peak: " & $objItem.PageFileBytesPeak & @LF
    $str &= "Percent Privileged Time: " & $objItem.PercentPrivilegedTime & @LF
    $str &= "Percent Processor Time: " & $objItem.PercentProcessorTime & @LF
    $str &= "Percent User Time: " & $objItem.PercentUserTime & @LF
    $str &= "Pool Nonpaged Bytes: " & $objItem.PoolNonpagedBytes & @LF
    $str &= "Pool Paged Bytes: " & $objItem.PoolPagedBytes & @LF
    $str &= "Priority Base: " & $objItem.PriorityBase & @LF
    $str &= "Private Bytes: " & $objItem.PrivateBytes & @LF
    $str &= "Thread Count: " & $objItem.ThreadCount & @LF
    $str &= "Virtual Bytes: " & $objItem.VirtualBytes & @LF
    $str &= "Virtual Bytes Peak: " & $objItem.VirtualBytesPeak & @LF
    $str &= "Working Set: " & $objItem.WorkingSet & @LF
    $str &= "Working Set Peak: " & $objItem.WorkingSetPeak & @LF
    ConsoleWrite( $str & @CRLF & @CRLF)
    $str = ''
    Sleep (2000)
    $objRefresher.Refresh
    Next
    Next

    [/autoit]

    Edit:
    Evtl. bringt dich ja das Auflisten der Threads/ ~status weiter.
    Auflisten kannst du so:

    Spoiler anzeigen
    [autoit]

    $objDictionary = ObjCreate("Scripting.Dictionary")
    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $colProcesses = $objWMIService.ExecQuery("Select * from Win32_Process")

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

    For $objProcess in $colProcesses
    $objDictionary.Add ($objProcess.ProcessID, $objProcess.Name)
    Next

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

    $colThreads = $objWMIService.ExecQuery ("Select * from Win32_Thread")

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

    For $objThread in $colThreads
    $intProcessID = Int($objThread.ProcessHandle)
    $strProcessName = $objDictionary.Item($intProcessID)
    ConsoleWrite( $strProcessName & @TAB & $objThread.ProcessHandle & _
    @TAB & $objThread.Handle & @TAB & $objThread.ThreadState & @CRLF)
    Next

    [/autoit]
  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 13:22

    Ich verstehe nicht, welchen Sinn das hier haben soll:

    [autoit]

    for $i = 2 to 5
    MouseMove ( $xcords[$i] , $ycords[$i]) ; <- soll die koordinaten checken gegebenenfalls das symbol verschieben
    call ("checkgreen")
    sleep ( 100)
    Next

    [/autoit]


    Das Prüfen der Koordinaten (Auffinden Symbol) erledigst du doch mit Pixelsearch. Wozu willst du da auf einer Waagerechten in 50 Pixel Abständen rumspringen, um dann doch jedesmal denselben Bereich abzusuchen ?
    Du müßtest dann die Maus Pixel für Pixel bewegen und jedesmal scannen ob das Symbol auftaucht.

    Edit:
    Also ich glaube, du suchst sowas:

    [autoit]

    Global $x_start = 100, $x_end = 300, $y_start = 100, $y_end = 200
    Global $x_ziel = 400, $y_ziel = 500, $color = 0x66FF00
    For $i = $x_start To $x_end
    For $k = $y_start To $y_end
    MouseMove($i, $k, 1)
    If PixelGetColor($i, $k) = $color Then
    MouseClickDrag('left', $i, $k, $x_ziel, $y_ziel, 1)
    ExitLoop(2)
    EndIf
    Next
    Next

    [/autoit]
  • Mit AutoIt bei ICQ einloggen?

    • BugFix
    • 14. Juli 2008 um 12:49
    Zitat von Protokollbeschreibung OSCAR

    Der FLAP-Header beginnt mit dem hexadezimalen Wert 2A zur Erkennung des FLAP-Pakets. Es folgt ein Channel (siehe unten), eine Sequenznummer zur Fehlererkennung und die Größe der angehängten Daten.


    Darum sagte ich ja, du mußt erstmal das Protokoll nachbauen. Den Receive zerlegen in die einzelnen Protokollbestandteile und entsprechend reagieren.

    Edit: Anscheinend hast du noch nicht danach gesucht, hier das offengelegte OSCAR Protokoll

  • Gobby - Dateien gemeinsam bearbeiten

    • BugFix
    • 14. Juli 2008 um 12:27

    Spinne, es ist empörend, dass du uns das Teil so lange verschwiegen hast. :rofl:
    Nee, ernsthaft, sieht gut aus - vielleicht können wir alternativ zur ShoutBox eine ScriptBox auf der Basis einbauen :D


    Edit:
    Nachdem ich die Posts getrennt habe, hier nochmal der Link zu Gobby

  • Mit AutoIt bei ICQ einloggen?

    • BugFix
    • 14. Juli 2008 um 12:20

    Du mußt dir das Protokoll nachbauen. Wenn du dann die Startsequenz sendest bekommst du ein Receive. Das mußt du auswerten. Dann wirst du auch die angeforderten User/PW-Sequenzen entdecken. Ist aber recht anspruchsvoll. Und vergiß nicht MD5-Checksumme, sonst bekommst du eh keine Verbindung.
    Personalisiere doch einfach einen bestehenden Client.

  • Taste "wiederholt drücken" und "lösen" per Script

    • BugFix
    • 14. Juli 2008 um 12:13

    oder so:

    [autoit]

    Global $start = False
    HotKeySet('^1', '_start_stop')

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

    Func _start_stop()
    $start = Not $start
    If $start Then
    AdlibEnable('_leer', 50)
    Else
    AdlibDisable()
    EndIf
    EndFunc

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

    Func _leer()
    Send('{SPACE}')
    EndFunc

    [/autoit]
  • Zu zweit an einem Projekt online arbeiten

    • BugFix
    • 14. Juli 2008 um 11:21

    Eine etwas andere Möglichkeit wäre, dass du deinen Kumpel per VNC direkt auf deinen PC zugreifen lassen kannst. Dann arbeitet zwar auch immer nur einer, aber der andere ist live dabei und sieht es und kann reagieren.
    Und per TeamSpeak könnt ihr euch abstimmen :)

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™