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

  • Was ist vorteilhafter?

    • BugFix
    • 23. Juni 2009 um 12:22

    Da sind noch weitere Aspekte zu beachten.
    Wenn du ein wirklich großes Projekt verwaltest, wie z.B. ein Warenwirtschaftssystem, dann sollten all jene Fenster, die in der späteren Arbeit häufig frequentiert werden (Kunden, Artikel, Aufträge, Rechnungen, muß man abwägen) definitiv vorab erstellt werden, da schon mit dem Befüllen der Datenstrukturen genug Zeit drauf geht.
    Eher selten genutzte Fenster (Inventur, Infofenster) kann man dann durchaus zur Laufzeit erstellen.
    Und riesige Schleifen? - Egal ob im OnEventMode oder mit GUIGetMsg, je größer das Projekt desto mehr sollte der Übersicht halber jeder Vorgang in eine eigene Funktion ausgelagert werden. Dann läßt sich auch bei GUIGetMsg die Hauptschleife noch lesen.

  • Slide bar einstellen aber so das er...

    • BugFix
    • 23. Juni 2009 um 00:38

    Im OnEvent-Mode läßt sich das noch etwas straffen. Allerdings ist nach wie vor das Problem des Hineinklickens.
    Hier habe ich jetzt noch etwas verfeinert, sodass beim Ziehen des Sliders zwischen zwei Strichen je nach Position auf- oder abgerundet wird auf den nächsten/vorigen 10er Wert.

    [autoit]

    #include <GUIConstants.au3>
    #include <GuiSlider.au3>
    Opt('GUIOnEventMode', 1)

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

    $Form1 = GUICreate("Test", 275, 103, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_end')
    $Slider1 = GUICtrlCreateSlider(8, 8, 265, 49, BitOR($TBS_AUTOTICKS,$TBS_ENABLESELRANGE))
    GUICtrlSetOnEvent(-1, '_slider')
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _end()
    Exit
    EndFunc

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

    Func _slider()
    GUICtrlSetData($Slider1, _GetRound(Round(GUICtrlRead($Slider1)/10,1))*10)
    EndFunc

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

    Func _GetRound($val)
    Local $d = Int($val/0.5)
    If Mod($d, 2) Then $d += 1
    Return $d/2
    EndFunc

    [/autoit]
  • Slide bar einstellen aber so das er...

    • BugFix
    • 22. Juni 2009 um 22:48
    Zitat von Raupi

    Oder ist das wieder mal ein dummer Vista Fehler ?

    Gut möglich, in XP klappt es wie vom Threadstarter gewünscht ==> wenn du den Slider zwischen 2 Striche ziehst, wandert er zum nächst höheren. (Ziehst du ihn genau auf einen Strich, bleibt er natürlich dort)

    Edit:
    Ich weiß jetzt, was du meinst ==> mit der Maus einfach in den Slider klicken, da bekommst du bei 10er Skalierung immer nur jeden zweiten Strich, das ist völlig normal.

  • Slide bar einstellen aber so das er...

    • BugFix
    • 22. Juni 2009 um 22:37

    Na das geht aber schöner ;)

    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    $Form1 = GUICreate("Test", 275, 103, 193, 125)
    $Slider1 = GUICtrlCreateSlider(8, 8, 265, 49)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')

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

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

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom,$iCode, $tNMHDR, $hWndSlider, $val
    $hWndSlider = $Slider1
    If Not IsHWnd($hWndSlider) Then $hWndSlider = GUICtrlGetHandle($hWndSlider)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    If $hWndFrom = $hWndSlider And $iCode = -16 Then
    GUICtrlSetData($Slider1, Ceiling(GUICtrlRead($Slider1) / 10)*10)
    EndIf
    EndFunc

    [/autoit]
  • 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 – 752 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

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™