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

  • SplashImage / -Text, randlos, formatierbar

    • BugFix
    • 22. Juni 2009 um 16:58

    Hi,
    ich habe hier mal SplashImage und SplashText in einer Funktion vereint.
    Die Anzeige erfolgt randlos. Beim Text kann Textfarbe, Hintergrundfarbe (oder Transparenz), Schrifthöhe und Font gesetzt werden.
    Die richtige Höhe für die Anzeige müßt ihr ggf. austesten.
    Für Image können wie im Original nur gif, jpg, bmp verwendet werden.

    Edit:
    - Bei Anzeige von Bildern braucht die Bildgröße nicht mehr übergeben werden, dies wird in der Funktion selbst ermittelt.
    - Fehlerbehandlung hinzugefügt.

    Edit2:
    - Benötigter Platz für Text wird selbst berechnet, keine Größenangabe mehr erforderlich. (Breite u. Höhe entfallen als Param)
    - Position ist per Standard rechts unterhalb der Maus

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <StructureConstants.au3>
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <FontConstants.au3>

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

    _SplashOn('Hello World Bla Bla Blub' & @crlf & 'Zeile 2', True, -1, -1, -1, -1, 0xFFFC91, 0, 16)
    Sleep(300)
    _SplashOn(@Systemdir & "\oobe\images\mslogo.jpg")
    Sleep(300)
    _SplashOn(@Systemdir & "\oobe\images\oemlogo.gif")
    Sleep(300)
    _SplashOn(@Systemdir & "\setup.bmp", False)
    Sleep(300)
    For $i = 60 To 30 Step -3
    _SplashOn("Hello world!", True, -1, -1, 300, 0x0000FF, -1, 1, $i, 'Comic Sans MS')
    Next
    For $i = 30 To 60 Step 3
    _SplashOn("Hello world!", True, -1, -1, 300, 0x0000FF, -1, 1, $i, 'Comic Sans MS')
    Next

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

    ;==================================================================================================
    ; Function Name: _SplashOn($Item, $fMouse=True, $left=-1, $top=-1, $timeout=-1, _
    ; $txtCol=-1, $bkCol=-1, $trans=1, $size=-1, $font=-1, $weight=400)
    ; Description:: Show an SplashImage (gif,jpg,bmp) or an SplashText
    ; Parameter(s): $Item - Path picture file or SplashText; Autodetection if file or text
    ; optional $fMouse - True (default) use mousepos for $left and $top
    ; optional $left - left margin (default=-1 horizontal centered)
    ; optional $top - upper margin (default=-1 vertikal centered)
    ; optional $timeout- time how long to show picture/text in ms (default=-1, 3000 ms)
    ; optional $txtCol - SplashText: text color RGB (default=-1, red)
    ; optional $bkCol - SplashText: back color RGB (default=-1, black)
    ; optional $trans - SplashText: background transparency yes/now (default=1, yes)
    ; optional $size - SplashText: font size (default=-1, 30) ; 14 conforms approximately 12 at TimesNewRoman
    ; optional $font - SplashText: font name (default=-1, Arial)
    ; optional $weight - normal (400) = -1 (Standard), bold (600)
    ; Return: Success - 1
    ; Failure - 0 set @error: 1= given file doesn't exist; 2= no size given for textarea
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _SplashOn($Item, $fMouse=True, $left=-1, $top=-1, $timeout=-1, _
    $txtCol=-1, $bkCol=-1, $trans=1, $size=-1, $font=-1, $weight=400)
    Local $width, $height
    If $fMouse Then
    Local $MPos = MouseGetPos()
    $left = $MPos[0]
    $top = $MPos[1]
    EndIf
    If $timeout < 0 Then $timeout = 3000
    If $txtCol < 0 Then $txtCol = 0xFF0000
    If $bkCol < 0 Then $bkCol = 0x000000
    If $trans < 0 Then $trans = 0
    If $size < 0 Then $size = 30
    If $font = -1 Then $font = 'Arial'
    If StringRegExp(StringLeft($Item, 3), '[a-zA-Z]:\\') Then ; picture
    If Not FileExists($Item) Then Return SetError(1,0,0)
    ;~ If ($width = -1) Or ($height = -1) Then
    Local $objShell = ObjCreate("Shell.Application")
    Local $objFSO = ObjCreate("Scripting.FileSystemObject")
    Local $objFile = $objFSO.GetFile($Item)
    Local $FileName = $objFSO.GetFileName($objFile)
    Local $objFolder = $objShell.Namespace($objFSO.GetParentFolderName($objFile))
    For $strFileName In $objFolder.Items
    If $objFolder.GetDetailsOf($strFileName, 0) <> $FileName Then ContinueLoop
    $width = StringRegExpReplace($objFolder.GetDetailsOf($strFileName, 27), '(\d+).*', '$1')
    $height = StringRegExpReplace($objFolder.GetDetailsOf($strFileName, 28), '(\d+).*', '$1')
    Next
    ;~ EndIf
    Local $gui = GUICreate("", $width, $height, $left, $top, $WS_POPUP, $WS_EX_TOPMOST)
    Local $ctrl = GUICtrlCreatePic($Item, 0, 0, $width, $height)
    GUISetState(@SW_SHOW)
    Local $pos = WinGetPos($gui), $combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
    Local $ctrl_pos = ControlGetPos($gui, "", $ctrl)
    Local $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
    _WinAPI_CombineRgn($combined_rgn, $combined_rgn, $ctrl_rgn, $RGN_OR)
    _WinAPI_DeleteObject($ctrl_rgn)
    _WinAPI_SetWindowRgn($gui, $combined_rgn)
    Sleep($timeout)
    GUIDelete($gui)
    Else ; text
    Local $gui = GUICreate('')
    _GDIPlus_Startup()
    Local $hFormat = _GDIPlus_StringFormatCreate(0)
    Local $hFamily = _GDIPlus_FontFamilyCreate($font)
    Local $style = 0
    If $weight > 400 Then $style = 1
    Local $hFont = _GDIPlus_FontCreate($hFamily, $size, $style, 3)
    Local $tLayout = _GDIPlus_RectFCreate(15, 171, 0, 0)
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($gui)
    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $Item, $hFont, $tLayout, $hFormat)
    Local $iWidth = Ceiling(DllStructGetData($aInfo[0], "Width"))
    Local $iHeight = Ceiling(DllStructGetData($aInfo[0], "Height"))
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ShutDown()
    GUIDelete($gui)
    $width = $iWidth
    $height = $iHeight
    If $left = -1 Then $left = Int((@DesktopWidth/2) - ($width/2))
    If $top = -1 Then $top = Int((@DesktopHeight/2) - ($height/2))
    Local $tRECT, $hFont, $hOldFont, $hDC
    If $left + $width > @DesktopWidth Then $left -= $width
    If $top + $height > @DesktopHeight Then $top -= $height
    $tRECT = DllStructCreate($tagRect)
    DllStructSetData($tRECT, "Left", $left)
    DllStructSetData($tRECT, "Top", $top)
    DllStructSetData($tRECT, "Right", $left + $width)
    DllStructSetData($tRECT, "Bottom", $top + $height)
    $hDC = _WinAPI_GetDC(0)
    $hFont = _WinAPI_CreateFont($size, 0, 0, 0, $weight, False, False, False, $DEFAULT_CHARSET, _
    $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, $font)
    $hOldFont = _WinAPI_SelectObject($hDC, $hFont)
    Local $sH = Hex($txtCol,6)
    $txtCol = '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
    $sH = Hex($BkCol,6)
    $bkCol = '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
    _WinAPI_SetTextColor($hDC, $txtCol)
    _WinAPI_SetBkColor($hDC, $bkCol)
    If $trans Then _WinAPI_SetBkMode($hDC, $TRANSPARENT)
    Local $timer = TimerInit()
    Do
    _WinAPI_DrawText($hDC, $Item, $tRECT, $DT_CENTER)
    Sleep(20)
    Until TimerDiff($timer) > $timeout
    _WinAPI_SelectObject($hDC, $hOldFont)
    _WinAPI_DeleteObject($hFont)
    _WinAPI_ReleaseDC(0, $hDC)
    _WinAPI_InvalidateRect(0, 0)
    $tRECT = 0
    EndIf
    Return 1
    EndFunc ;==>_SplashOn

    [/autoit]

    Dateien

    _SplashOn.au3 5,89 kB – 638 Downloads
  • Excel

    • BugFix
    • 22. Juni 2009 um 12:17
    Zitat von subzero007

    Neue


    ?( Was genau soll uns das jetzt sagen... ?

  • Treeview mit Mausklick ausgewähltes Item auslesen?

    • BugFix
    • 22. Juni 2009 um 11:56
    Zitat von chip

    wie soll ich nun aber aus GUICtrlRead($RechnerTreeView) die ItemId herrausbekommen.

    Rückwärts die ID zu erfragen ist zwar auch möglich, aber viel einfacher ist es doch die ID beim Erstellen des Item in einem Array abzuspeichern. Am Besten als 2D zusammen mit dem Item-Text.

  • Jüngste Datei finden unterordner einbeziehen.

    • BugFix
    • 22. Juni 2009 um 11:42

    Du kannst ein Array natürlich auch mit Do-Until durchlaufen, aber einfacher ist For-Next.
    So sollte es funktionieren:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include '_GetFilesFolder_Rekursiv.au3'
    ;~ Global $counter ;zähler der das ende des Array bestimmen soll <== nicht nötig
    ;~ Global $filenr ;nummer des Feldes im Array was verwendet wird <== nicht nötig
    Global $joungest ;name des Jüngsten Files
    ;~ Global $date <== nicht nötig
    Global $Folder
    Global $joungest = ''
    Global $path = "e:\dd\"
    Global $V_Check ; <== falls das Array außerhalb der Func genutzt werden soll, auch außerhalb deklarieren

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

    _check()

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

    ; Hier Liegen die Funktionen
    Func _check()
    Local $file, $getTimeOld, $getTimeNew
    $V_Check = _GetFilesFolder_Rekursiv($path, '*', 0) ; < Parameter für NUR Files übergeben, Liest inhalt des angegebenen Ordner, by Bugfix
    For $i = 1 To UBound($V_Check) -1
    $file = $V_Check[$i]
    $getTimeNew = FileGetTime($file, Default, 1)
    If $joungest = '' Then
    $joungest = $file
    $getTimeOld = $getTimeNew
    Else
    If $getTimeNew > $getTimeOld Then
    $joungest = $file
    $getTimeOld = $getTimeNew
    ConsoleWrite('jüngste (Moment): ' & $joungest & @TAB & $getTimeOld & @CRLF)
    EndIf
    EndIf
    Next
    ConsoleWrite(@CRLF & 'jüngste (Gesamt): ' & $joungest & @TAB & $getTimeOld & @CRLF)
    EndFunc

    [/autoit]
  • Fragen über AutoIt

    • BugFix
    • 22. Juni 2009 um 08:23

    Ich würde mal sagen: Wahrscheinlichkeit geht gegen null.
    Es ist sicher nicht die Intention der Entwickler AutoIt in diese Richtung zu führen, ich würde auch keinen Sinn darin erkennen.
    Damit du AutoIt-Befehle ausführen kannst, benötigst du zwangsläufig einen Interpreter. Wenn du den wegrationalisieren willst, kannst du die Sprache in der existierenden Form nicht mehr nutzen.

  • Welchen Internet Browser nutzt ihr - Umfrage ?

    • BugFix
    • 21. Juni 2009 um 14:42

    Wollte mich auch noch eintragen. :)
    - K-Meleon
    und auch Iron, die datenschutzmäßig unbedenkliche Version des Google-Chrom.

  • Prozeßvergleich

    • BugFix
    • 20. Juni 2009 um 13:28
    Zitat von Alina

    Hast Du mal ein Bsp. zum testen? Bin gerade zu ..... um das hin zu bekommen.


    Ersetze im Bsp. einfach: HotKeySet('#!p', '_showP') durch AdlibEnable( '_showP', "ZeitIntervall")

  • Jüngste Datei finden unterordner einbeziehen.

    • BugFix
    • 20. Juni 2009 um 13:16

    Verwende doch mal Rekursive Dateiauflistung.
    Guckst du: Rekursive Datei/Ordner Auflistung per Objekt ;)

  • Alle Werte von einem zweidimensonalen Array mit allen Werten eines eindimensionalen Arrays vergleichen

    • BugFix
    • 20. Juni 2009 um 13:07
    Zitat von MCTAST245

    Wo besteht der Unterschied/Vorteil bei Verwendung von???
    For $i = 0 To UBound($MandatoryIniArray) -1
    zu der Schleife
    For $i = 0 To $MandatoryIniArray[0]


    Wenn eine Funktion ein Array zurückgibt mit Anzahl der Elemente an Index [0] kann man natürlich damit arbeiten. Ich bevorzuge aber auch die UBound-Abfrage. So brauch ich mir nie Gedanken machen, ob denn ein Zähler mitgeführt wird. Und beim Lesen von Quelltext ist es meiner Meinung nach auch übersichtlicher, da UBound sofort sagt: bis zum letzten Element.

  • Array Problem

    • BugFix
    • 18. Juni 2009 um 19:29

    Local $Ip[2]
    For $i = 0 to 2
    Na, dann zähle mal. :D

  • Example von AutoIt kompilieren - LINKER ERROR

    • BugFix
    • 18. Juni 2009 um 16:07

    Da man sich in AutoIt nicht mit Linkern herumschlagen muß ;) können wir wenig zu deinem Problem sagen. Da solltest du dich an C-Forum wenden.
    (übrigens: Ohne jeden Code kann man eh ganz schwer was sagen)

  • Signatur Problem :D

    • BugFix
    • 18. Juni 2009 um 09:32
    Zitat von Signatur 'PokerFace'

    - Wordsturtz


    Aua-Aua, Oscars Spiel so zum Absturtz bringen... :rofl:

  • Name suchen und anklicken

    • BugFix
    • 18. Juni 2009 um 09:24
    Zitat von Nekroneo

    ich versuche eine art bot zu schreiben,


    Beachte bitte unsere: Forenregeln!

    [closed]

  • Wortsturz (Spiel für Kinder)

    • BugFix
    • 17. Juni 2009 um 20:44

    Tolle Idee :thumbup:
    Vielleicht noch etwas um mehr Variation in die Punktevergabe zu bringen:
    Mach die Punktezahl abhängig von der Höhe aus der der Buchstabe fallengelassen wird, also wenn du bis zum Schluß wartest und hin- und herbewegst gibt es die wenigsten Punkte. Läßt du den Buchstaben gleich nach seinem Erscheinen fallen, gibt es die meisten Punkte.

  • Arraybereiche Überschneidung feststellen

    • BugFix
    • 16. Juni 2009 um 19:35

    Das kannst du so machen:

    [autoit]

    Local $array[3][2] = [ _
    ['12:00:00','13:00:00'], _
    ['14:30:00','14:45:00'], _
    ['12:15:00','13:30:00']]

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

    $aCopy = $array
    For $i = 0 To UBound($array) -1
    For $j = 0 To UBound($aCopy) -1
    If $i = $j Then ContinueLoop
    If $array[$i][0] > $aCopy[$j][0] And $array[$i][0] < $aCopy[$j][1] Then _
    ConsoleWrite($array[$i][0] & '-' & $array[$i][1] & @CRLF & _
    $aCopy[$j][0] & '-' & $aCopy[$j][1] & @CRLF)
    Next
    Next

    [/autoit]
  • Fremddateien "includen" (ohne FileInstall)

    • BugFix
    • 14. Juni 2009 um 22:33

    Was das Einbinden von Bildern etc. angeht, so bleibt sich das sicher mit Fileinstall letztendlich gleich.
    Ein echter Vorteil (im Handling) ergibt sich beim Einbinden von Dll als Name.dll.au3. Diese kann man dan einfach per #include in das Skript einbinden, ohne sich um den Dateipfad zu kümmern. (s. SQLite-UDF)

    Edit: Ein deutlicher Unterschied zum FileInstall - Du darfst Variablen und Makros verwenden. :D

  • Fremddateien "includen" (ohne FileInstall)

    • BugFix
    • 14. Juni 2009 um 21:37

    Falls du die Windows-Suche genutzt hast: Diese sucht nicht im Temp-Verzeichnis. ;)

  • Postzeit auslesen

    • BugFix
    • 14. Juni 2009 um 17:42
    Zitat von Ph1b

    Nur wenn ich das wieder mit IE mache, und iebodyreadhtml mache klappts wieder nicht.


    Dann lass dir doch die Source in die Console ausgeben, die kann sich bei _INetGetSource und _IEBodyReadHTML etwas unterscheiden.

    Da fällt mir auf: du hast ja gar nicht die Source gelesen! - Sondern mit _IEDocReadHTML !! DAS ist ein Unterschied!

  • Postzeit auslesen

    • BugFix
    • 14. Juni 2009 um 17:29

    Noch zwei Sachen. Der string davor ist nicht eindeutig und kommt noch häufiger im Quelltext vor. Da mußt du die ganze Zeile nehmen.
    Der String danach ist auch nicht korrekt, es fehlen: Zeilenumbruch, 3x TAB, wieder Zeilenumbruch, 3x TAB. ;)

    [autoit]

    #include <INet.au3>
    #include <string.au3>
    $source = _INetGetSource("http://board.raidrush.ws/showthread.php?t=605689")
    $ftime = _StringBetween($source, '<a name="post8376871"><img class="inlineimg" src="http://www.xup.in/000/board.raidrush.ws/a_rr_style/statusicon/post_old.gif" alt="Alt" border="0" /></a>', @CRLF & @TAB & @TAB & @TAB & @CRLF & @TAB & @TAB & @TAB & "<!-- / status icon and date")
    If IsArray($ftime) Then
    msgbox(0, "Time", StringStripWS($ftime[0], 3))
    Else
    MsgBox(0, '', 'Fehler')
    EndIf

    [/autoit]

    Noch besser geht es mit Regulären Ausdrücken.

  • loop-funktion gesucht

    • BugFix
    • 14. Juni 2009 um 17:13

    Und bitte die Forenregeln berücksichtigen.
    Auszug:

    Zitat

    Folgende Inhalte sind nicht erwünscht oder gar komplett verboten.
    ....
    - Tools, um Nachrichten unerwünscht oft zu versenden (Spamming-Tools)

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™