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

Beiträge von name22

  • Auswahlmenü erstellen

    • name22
    • 31. Dezember 2010 um 21:51
    Zitat


    edit: irgendwie wird das in zwei zeilen angezeigt ...


    Hängt höchstwahrscheinlich mit deinem Browser zusammen... Mit Firefox und IE gibts keine Probleme.

  • Funktionen von DLLs auslesen und anwenden

    • name22
    • 31. Dezember 2010 um 01:01

    Mit dependencywalker kannst du die Funktionen einer DLL auflisten, aber ob du so herausfindest wie die DLLCalls dafür in AutoIt aussehen müssen... :S

  • Dateien Sortieren

    • name22
    • 31. Dezember 2010 um 00:56

    Ich hab mal ein Beispiel geschrieben...

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Array.au3>

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

    $sPath = @ScriptDir & "\Test"
    $aFiles = _FileListToArray($sPath, "*", 1)

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

    $i = 1
    While $i <= $aFiles[0]
    $aResult = StringRegExp($aFiles[$i], "(.*?)\d", 1)
    If Not @error Then
    DirCreate($sPath & "\" & $aResult[0])
    FileMove($sPath & "\" & $aFiles[$i], $sPath & "\" & $aResult[0])
    _ArrayDelete($aFiles, $i)
    $aFiles[0] -= 1
    $j = 1
    While $j <= $aFiles[0]
    If StringInStr($aFiles[$j], $aResult[0]) Then
    FileMove($sPath & "\" & $aFiles[$j], $sPath & "\" & $aResult[0])
    _ArrayDelete($aFiles, $j)
    $aFiles[0] -= 1
    EndIf
    $j += 1
    WEnd
    EndIf
    $i += 1
    WEnd

    [/autoit]


    Das Script packt alle Dateien, die bis zur ersten Ziffer im Dateinamen übereinstimmen in jeweils einen Ordner.

  • Dateien Sortieren

    • name22
    • 30. Dezember 2010 um 23:43

    Im Grunde brauchst du nur die Befehle:

    [autoit]

    _FileListToArray ;Dateien in Array einlesen
    DirCreate ;Ordner für Dateien erstellen
    FileMove ;Dateien in Ordner verschieben
    StringInStr ;Dateinamen nach Wort durchsuchen

    [/autoit]


    Also einfach die Dateien in ein Array einlesen und danach in einer For Schleife nach und nach die Dateinamen überprüfen und die Dateien ggf. in den erstellten Ordner verschieben.

  • Komplexeres? schnelles durchsuchen größerer Arrays

    • name22
    • 30. Dezember 2010 um 02:32

    Vielleicht mit Befehlen wie

    [autoit]

    Binary
    ;oder
    Chr

    [/autoit]


    Aber alle 20.000 Einträge in deinem Array so umzuwandeln würde möglicherweise auch einige Zeit in Anspruch nehmen... :S

  • AutoIt wird blockiert

    • name22
    • 30. Dezember 2010 um 01:18

    Send simuliert auch nur Tastatureingaben, und HotKeySet kann ja nicht wissen ob sie von dir oder einem Send Befehl stammen. Also wird, sobald ein Leerzeichen in dem String der Send Funktion steht, die Funktion erneut aufgerufen und das ganze geht dann wieder von vorne los, was in der Endlosschleife resultiert. ;)

  • Shockwave klappt nicht. Liegts an x64?

    • name22
    • 30. Dezember 2010 um 01:02

    Vielleicht hat ja auch die Fehlermeldung recht, und der Flashplayer ist auf dem System nicht installiert. ;)

  • ComboBox2 inhalt abhäning von Combobox1

    • name22
    • 30. Dezember 2010 um 01:00

    Dann mach es nicht mit If Bedingungen :rolleyes: . Du kannst ja Arrays verwenden wie in meinem Beispiel, oder eine Kombination aus autoBert's Script und Arrays...

  • AutoIt wird blockiert

    • name22
    • 30. Dezember 2010 um 00:58

    Wieso hast du diese 2 Zeilen auskommentiert? Die sorgen doch dafür, dass nur einmal die Funktion aufgerufen wird. :huh:

    [autoit]

    HotKeySet ("{SPACE}", "_Test")

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

    While (1)
    Sleep(1000)
    WEnd

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

    Func _Test()
    HotKeySet ("{SPACE}")
    Send("Hi, was geht?")
    HotKeySet ("{SPACE}", "_Test")
    EndFunc

    [/autoit]
  • Maus ziehen

    • name22
    • 29. Dezember 2010 um 22:22

    Solche Befehle vergisst man halt, wenn man so lange nichts mehr in dieser Richtung gescriptet hat :pinch: .

  • Maus ziehen

    • name22
    • 29. Dezember 2010 um 22:06

    So.

    [autoit]

    MouseDown("left")
    MouseMove(200, 200)
    MouseUp("left")

    [/autoit]
  • HotKey Space

    • name22
    • 29. Dezember 2010 um 21:47

    Wozu brauchst du das denn? Es gibt normalerweise nämlich immer eine bessere Alternative zu Send... Möchtest du die Eingabe an ein Control in einem Fenster senden?
    Jedesmal wenn per Send die Leertaste gedrückt wird, wird auch die FUnktion erneut aufgerufen, daher die Endlosschleife ;). So kannst du das Problem umgehen.

    Spoiler anzeigen
    [autoit]

    HotKeySet ("{SPACE}", "_Test")

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

    While Sleep(100)
    WEnd

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

    Func _Test()
    HotKeySet ("{SPACE}")
    Send("Hi, was geht?")
    HotKeySet ("{SPACE}", "_Test")
    EndFunc

    [/autoit]
  • GUI erstellen

    • name22
    • 29. Dezember 2010 um 21:41

    Am besten schaust du dir die "wichtigenLinks" hier am linken Rand an und vielleicht auch noch ein paar Scripts die einfache GUI's verwenden. ;)

  • ComboBox2 inhalt abhäning von Combobox1

    • name22
    • 29. Dezember 2010 um 21:39

    Das geht z.B. so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIComboBox.au3>

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

    Global $aCombo[11][2]
    $aCombo[0][0] = 10

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

    For $i = 1 To $aCombo[0][0]
    $aCombo[$i][0] = Chr($i + 64)
    $aCombo[$i][1] = $aCombo[$i][0] & 1 & "|" & $aCombo[$i][0] & 2 & "|" & $aCombo[$i][0] & 3
    Next

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

    $hWnd = GUICreate("Test", 200, 55)
    $cCombo1 = GUICtrlCreateCombo("", 5, 5, 190, 25)
    $cCombo2 = GUICtrlCreateCombo("", 5, 30, 190, 25)
    GUISetState()

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

    _GUICtrlComboBox_BeginUpdate($cCombo1)
    For $i = 1 To $aCombo[0][0]
    _GUICtrlComboBox_AddString($cCombo1, $aCombo[$i][0])
    Next
    _GUICtrlComboBox_EndUpdate($cCombo1)

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

    $iLastSel = -1

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    $iCurSel = _GUICtrlComboBox_GetCurSel($cCombo1)
    If $iCurSel <> $iLastSel Then
    GUICtrlSetData($cCombo2, "")
    GUICtrlSetData($cCombo2, $aCombo[$iCurSel + 1][1])
    $iLastSel = $iCurSel
    EndIf
    WEnd

    [/autoit]
  • 3 dimensionale Arrays vergleichen

    • name22
    • 29. Dezember 2010 um 21:01

    Nein, so kannst du nur den Inhalt von einem Array in eine andere Variable übertragen ($aTest1 = $aTest2).

  • Fragen zu transparenten Fenstern

    • name22
    • 29. Dezember 2010 um 20:42

    Klar geht GraphicsClear ;). Und mit GraphicsMeasureString kannst du die Stringbreite messen und diesen von der Fensterbreite subtrahieren um die X Koordinate zu erhalten.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>
    #include <Constants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{ESC}", "_Exit")

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

    $iGUIWidth = 200
    $iGUIHeight = 50

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

    $hWnd = GUICreate("Test", $iGUIHeight, 50, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW))
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

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

    $hPen = _GDIPlus_PenCreate(0xFF000000, 2)

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

    $hDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDC)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iGUIWidth)
    DllStructSetData($tSize, "Y", $iGUIHeight)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    $hBrush = _GDIPlus_BrushCreateSolid(0xFFFBF3FE)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 12)
    $tLayout = _GDIPlus_RectFCreate()

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

    $i = 1

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

    While Sleep(1000)
    _GDIPlus_GraphicsClear($hBuffer, 0x00000000)
    $aMeasure = _GDIPlus_GraphicsMeasureString($hBuffer, $i, $hFont, $tLayout, $hFormat)
    DllStructSetData($aMeasure[0], "X", $iGUIWidth - DllStructGetData($aMeasure[0], "Width"))
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $i, $hFont, $aMeasure[0], $hFormat, $hBrush)

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

    $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)

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

    _WinAPI_SelectObject($hCDC, $hBitmapTmp)
    _WinAPI_UpdateLayeredWindow($hWnd, $hDC, 0, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($hBitmapTmp)

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

    $i += 1
    WEnd

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_Shutdown()
    _WinAPI_ReleaseDC($hWnd, $hDC)
    _WinAPI_DeleteDC($hCDC)
    Exit
    EndFunc

    [/autoit]


    Du hast vergessen den Brush etc. wieder aus dem Speicher zu entfernen (BrushDispose)...

  • Fragen zu transparenten Fenstern

    • name22
    • 29. Dezember 2010 um 19:36

    Hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>
    #include <Constants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{ESC}", "_Exit")

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

    $vU32DLL = DllOpen("User32.dll")

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

    $iGUIColorBG = 0xFFFFFFFF
    $iGUIWidth = @DesktopWidth
    $iGUIHeight = @DesktopHeight

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

    $hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight, 0, 0, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

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

    $hPen = _GDIPlus_PenCreate(0xFF000000, 2)

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

    $hDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDC)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iGUIWidth)
    DllStructSetData($tSize, "Y", $iGUIHeight)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    GUIRegisterMsg($WM_PAINT, "_ReDraw")
    $aMousePosOld = MouseGetPos()

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

    While True
    $aMousePosNew = MouseGetPos()
    If _IsPressed("10", $vU32DLL) Then
    If $aMousePosOld[0] <> $aMousePosNew[0] Or $aMousePosOld[1] <> $aMousePosNew[1] Then _GDIPlus_GraphicsDrawLine($hBuffer, $aMousePosOld[0], $aMousePosOld[1], $aMousePosNew[0], $aMousePosNew[1], $hPen)
    _ReDraw()
    EndIf
    If BitOR(WinGetState($hWnd), 2) <> 2 Then _WinAPI_SetWindowPos($hWnd, $HWND_TOPMOST, 0, 0, 0, 0, BitOR($SWP_NOMOVE, $SWP_NOSIZE))
    $aMousePosOld = $aMousePosNew
    WEnd

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

    Func _ReDraw()
    Local $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_SelectObject($hCDC, $hBitmapTmp)
    _WinAPI_UpdateLayeredWindow($hWnd, $hDC, 0, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($hBitmapTmp)
    EndFunc

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_Shutdown()
    DllClose($vU32DLL)
    Exit
    EndFunc

    [/autoit]


    Shift gedrückt halten, um mit der Maus auf den Bildschirm zu malen. Mit Escape kannst du das ganze beenden ;). Ich hoffe es ist verständlich geschrieben, falls nicht gibt es hier auch noch ein paar andere Scripts die mit dieser Funktion arbeiten z.B. die MouseChaser UDF von H112... Einfach die Forensuche benutzen.

  • Anfänger benötigt für euch sicher einfache Hilfe bei Skript mit mehreren Werten

    • name22
    • 29. Dezember 2010 um 17:18

    Versuch es mal so.

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>

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

    Opt("TrayIconDebug", 1)

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

    $sPath = @ScriptDir & "\Test.xls"
    $iRow = 1
    $oExcel = _ExcelBookOpen($sPath)

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

    While 1
    $sValue = _ExcelReadCell($oExcel, $iRow)
    If @error Or $sValue = "" Then ExitLoop
    WinWaitActive("[CLASS:KCMLMasterForm_32]")
    Send($sValue)
    Sleep(500)
    Send("{ENTER}")
    Sleep(500)
    Send("!ä")
    Sleep(500)
    Send("!m")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Sleep(500)
    Send("*")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Send("!s")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Send("!s")
    Sleep(100)
    $iRow = $iRow + 1
    WEnd

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

    _ExcelBookClose($oExcel, 0)

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

    MsgBox(64, "Info", "Abgeschlossen")

    [/autoit]
  • Fragen zu transparenten Fenstern

    • name22
    • 29. Dezember 2010 um 17:14
    Zitat

    Achso, ok. Geht es denn mit einer anderen Methode?


    Bestimmt, aber ich weiß leider nicht wie :D. Mit _WinAPI_UpdateLayeredWindow geht es vielleicht und ich kann dir sogar ein Beispiel geben wie man die Funktion verwenden kann, aber ich weiß nur wie man das z.B. mit Bitmaps (wie bei meinem GDI+ ToolTip) macht. Wie das mit dem gewöhlichen Fensterinhalt und seinen Controls geht weiß ich nicht. :(

  • 2 Fragen

    • name22
    • 29. Dezember 2010 um 17:10

    Du kannst es auch so machen, aber so wie ich es geschrieben habe kannst du auch Anführungszeichen der selben Art (" oder ') ineinander schreiben. Das musst du z.B. wenn in einem String nicht nur " sondern auch ' vorkommen ;).

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™