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

  • Script funktioniert nicht, wenn noch eine IE-Instanz bereits läuft

    • BugFix
    • 21. Mai 2012 um 19:20

    Frag doch einfach ab ob eine IE-Instanz offen ist und beende diese falls vorhanden.

  • Transparenz bei MouseOver switchen

    • BugFix
    • 21. Mai 2012 um 19:08
    Zitat von Tweaky

    Vielleicht könntest du noch einbauen, dass das Fenster sich langsam ändert :whistling:

    Dem Wunsch konnte Rechnung getragen werden. 8o

  • Input vergrößern

    • BugFix
    • 21. Mai 2012 um 14:47

    Ich hab dir mal eine Lösung gebastelt, positionieren und Größe kannst du ja noch anpassen.
    - Bei Schreibbeginn im Input öffnet sich das große Input
    - Bei ENTER wird das große Input geschlossen und der Inhalt in das kleine übernommen.

    Spoiler anzeigen
    [autoit]

    $hLargeInput = GUICreate('', @DesktopWidth-120, 20, -1, -1, BitOR($WS_POPUP,$WS_THICKFRAME))
    $inLarge = GUICtrlCreateInput("", -1, -1, @DesktopWidth-120, @DesktopHeight/2)
    $hLargeIn = GUICtrlGetHandle($inLarge)

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

    $hGUI = GUICreate('TEST')
    $input = GUICtrlCreateInput('', 40, 30, 60, 20)
    $hIn = GUICtrlGetHandle($input)
    GUISetState(@SW_SHOW, $hGUI)

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While True
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Select
    Case $hWndFrom = $hIn And $iCode = $EN_CHANGE
    GUISetState(@SW_HIDE, $hGUI)
    GUISetState(@SW_SHOW, $hLargeInput)
    GUICtrlSetData($inLarge, GUICtrlRead($input))
    ControlFocus($hLargeInput, '', $inLarge)
    Case $iCode = 0x0
    If WinActive($hLargeInput) Then
    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_HIDE, $hLargeInput)
    GUICtrlSetData($input, GUICtrlRead($inLarge))
    ControlFocus($hGUI, '', $input)
    EndIf
    EndSelect
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]
  • Transparenz bei MouseOver switchen

    • BugFix
    • 21. Mai 2012 um 13:41
    Zitat von shadow667

    sollte wohl eher

    [autoit]

    WinSetTrans($_hGui, '', $_iTrans)

    [/autoit]

    heissen


    Ja, war ein Schreibfehler.
    Sehr aufmerksames Publikum. :thumbup:

  • Transparenz bei MouseOver switchen

    • BugFix
    • 21. Mai 2012 um 10:50

    Vermutlich existiert es schon in irgendeiner Form, ich hatte nur gerade nix gefunden, deshalb diese Variante von mir.
    In Abhängigkeit ob die Maus (nicht) über dem Fenster ist, wird die Transparenz zwischen 2 Werten geswitcht. Standardmäßig zwischen 150 und 255 (undurchsichtig).
    Falls ihr das Fenster beim Erstellen nicht auf Transparenz setzt, passiert das nach dem ersten Bewegen der Maus vom Fenster herunter automatisch.

    Edit 21.05.2012:
    Auf mehrfachen Wunsch einer einzelnen Dame :rofl: habe ich noch einen optionalen Parameter für einen "smoothigen" Übergang der Transparenz eingebaut.
    Einfach die Zeit in ms angeben und dann wird die Transparenz innerhalb dieser Zeitspanne schrittweise geändert. 500 ms ist eine recht "angenehme" Zeitspanne.

    Spoiler anzeigen
    [autoit]

    #Region - TimeStamp
    ; 2012-05-21 19:02:36
    #EndRegion - TimeStamp

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

    #include <WinAPI.au3>

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

    $hGUI = GUICreate('TEST')
    WinSetTrans($hGUI, '', 150)
    GUISetState()

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

    While True
    _TransOffByMouseOver($hGUI, -1, -1, 500) ; == letzter Parameter ist Zeit in ms für den Übergang der Transparenz
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    WEnd

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

    ;===============================================================================
    ; Function Name....: _TransOffByMouseOver
    ; Description......: Verändert Transparenz eines Fensters bei Maus über/nicht über Fenster
    ; Parameter(s).....: $_hGui Fensterhandle
    ; .................: $_iTrans Transparenz bei Maus nicht über Fenster (Standard 150)
    ; .................: $_iTransOff Transparenz bei Maus über Fenster (Standard 255, undurchsichtig)
    ; ........optional.: $_iTimeSmooth Zeit für den weichen Übergang der Transparenz in ms, Standard=0
    ; Requirement(s)...: #include <WinAPI.au3>
    ; Return Value(s)..: nichts
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _TransOffByMouseOver($_hGui, $_iTrans=-1, $_iTransOff=-1, $_iTimeSmooth=0)
    If $_iTrans = -1 Then $_iTrans = 150
    If $_iTrans < 0 Then $_iTrans = 0
    If $_iTransOff = -1 Then $_iTransOff = 255
    If $_iTransOff > 255 Then $_iTransOff = 255
    If $_iTimeSmooth < 0 Then $_iTimeSmooth = 0
    Local $tGui = _WinAPI_GetWindowRect($_hGui)
    Local $posMouse = MouseGetPos(), $iStep, $ret, $iCurr = $_iTrans, $timer
    Local Static $fTrans = True
    $ret = DllCall("user32", "long", "PtInRect", "ptr", DllStructGetPtr($tGui), "long", $posMouse[0], "long", $posMouse[1])
    If $ret[0] Then
    If $fTrans Then
    $fTrans = False
    If $_iTimeSmooth > 0 Then
    $iStep = Ceiling(($_iTransOff-$_iTrans)/($_iTimeSmooth/10))
    While $iCurr < $_iTransOff
    $iCurr += $iStep
    If $iCurr > $_iTransOff Then
    WinSetTrans($_hGui, '', $_iTransOff)
    ExitLoop
    EndIf
    WinSetTrans($_hGui, '', $iCurr)
    $timer = TimerInit()
    Do
    Until TimerDiff($timer) >= 10
    WEnd
    Else
    WinSetTrans($_hGui, '', $_iTransOff)
    EndIf
    EndIf
    Else
    If Not $fTrans Then
    $fTrans = True
    If $_iTimeSmooth > 0 Then
    $iCurr = $_iTransOff
    $iStep = Ceiling(($_iTransOff-$_iTrans)/($_iTimeSmooth/10))
    While $iCurr > $_iTrans
    $iCurr -= $iStep
    If $iCurr < $_iTrans Then
    WinSetTrans($_hGui, '', $_iTrans)
    ExitLoop
    EndIf
    WinSetTrans($_hGui, '', $iCurr)
    $timer = TimerInit()
    Do
    Until TimerDiff($timer) >= 10
    WEnd
    Else
    WinSetTrans($_hGui, '', $_iTrans)
    EndIf
    EndIf
    EndIf
    EndFunc ;==>_TransOffByMouseOver

    [/autoit]
  • [Webhoster] Freehoster - Welchen ?

    • BugFix
    • 20. Mai 2012 um 23:07

    Man sollte sich einfach mal klarmachen, dass man nichts umsonst bekommt. Denn auch die Freehoster sind nicht gratis, sondern versüßen uns das Leben mit Werbung. :wacko:
    Erst recht, wenn man bestimmte Anforderungen hat, sollte man von vornherein nach kostengünstigen statt freien Anbietern suchen.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 20. Mai 2012 um 20:55

    Ich habe gerade soviel Baustellen offen, dass ich dieses hier etwas vertagt habe. Ist aber nicht vergessen und wird hoffentlich in Kürze nachgebessert.
    Ich grübel gerade noch an einer effizienten Methode um auf Updates automatisch reagieren zu können. Bei Standard-Includes ist das kein Problem, da gibt es ja eine AutoIt-Version, die sich abfragen läßt. Aber von allen Eigenen Includes evtl. Änderungen bei jedem Start zu prüfen bzw. neue Dateien einzulesen erscheint mir wenig sinnvoll. Oder ich verlege das ins SciTE-Startup, sodass es schon vor dem Aufruf der Funktion erledigt wird.
    Naja, ich finde schon eine Lösung :D - kann halt nur noch etwas dauern.

  • Ordner in einer bestimmten Verzeichnisebenentiefe relativ zum Startordner ermitteln

    • BugFix
    • 20. Mai 2012 um 20:28

    Hi,
    vielleich hat noch wer Verwendung dafür.
    Mit der Funktion lassen sich Ordnernamen (oder kpl. Pfade) in relativer Tiefe zum Startordner ausgeben.
    Dazu wird ab Startordner rekursiv bis zur angegebenen Tiefe nach allen Verzeichnissen gesucht und die Ordner der letzten Ebene werden ausgegeben. Wahlweise wird der kpl. Pfad oder nur der Ordnername zurückgegeben.

    _GetFolderInRelativeDepth
    [autoit]

    #Region - TimeStamp
    ; 2012-05-20 20:17:50 v 0.1
    #EndRegion - TimeStamp

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

    ;===============================================================================
    ; Function Name....: _GetFolderInRelativeDepth
    ; Description......: Gibt alle Ordner (kpl. Pfade, od. nur Ordnername) in relativer Tiefe zum übergebenen Ordner zurück
    ; Parameter(s).....: $_sRootFolder Pfad unterhalb dem gesucht werden soll
    ; .................: $_iDepth Pfadebene unterhalb des Startordners
    ; .................: $fFullPath 1=Rückgabe der kpl. Ordnerpfade (Standard), 0=nur Ordnernamen
    ; Return Value(s)..: Erfolg Array mit den Ordner(Pfaden) der Ebene
    ; .................: Fehler 0, @error=1 (keine Ordner in dieser Ebene)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GetFolderInRelativeDepth($_sRootFolder, $_iDepth, $fFullPath=1)
    Local $sFound, $hSearch = FileFindFirstFile($_sRootFolder & '\*.*'), $iRow = $_iDepth-1
    If $_iDepth < 2 Then $iRow = 2
    Local $aFolder[$iRow][2] = [[1]], $sOut = '', $iCurrDepth = 0, $i
    While True
    $sFound = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sFound), 'D') Then
    If $_iDepth = 1 Then
    If $fFullPath Then
    $sOut &= $_sRootFolder & '\' & $sFound & Chr(0)
    Else
    $sOut &= $sFound & Chr(0)
    EndIf
    Else
    ReDim $aFolder[$iRow][$aFolder[$iCurrDepth][0] +1]
    $aFolder[$iCurrDepth][0] += 1 ; == UBound in dieser Zeile
    $aFolder[$iCurrDepth][$aFolder[$iCurrDepth][0] -1] = $_sRootFolder & '\' & $sFound
    EndIf
    EndIf
    WEnd
    If $_iDepth = 1 Then
    If $sOut = '' Then Return SetError(1,0,0)
    Return StringSplit(StringTrimRight($sOut, 1), Chr(0))
    EndIf
    For $i = 0 To UBound($aFolder) -2 ; == Ordnerebene über Zieltiefe
    For $j = 0 To UBound($aFolder,2) -1
    If $aFolder[$i][$j] = '' Then ExitLoop
    $hSearch = FileFindFirstFile($aFolder[$i][$j] & '\*.*')
    While True
    $sFound = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($aFolder[$i][$j] & '\' & $sFound), 'D') Then
    If $aFolder[$i][0] = UBound($aFolder,2) Then
    ReDim $aFolder[$iRow][$aFolder[$i][0] +1]
    $aFolder[$i][0] += 1
    EndIf
    EndIf
    WEnd
    Next
    Next
    $i = UBound($aFolder) -1
    For $j = 0 To UBound($aFolder,2) -1
    If $aFolder[$i][$j] = '' Then ExitLoop
    $hSearch = FileFindFirstFile($aFolder[$i][$j] & '\*.*')
    While True
    $sFound = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($aFolder[$i][$j] & '\' & $sFound), 'D') Then
    If $fFullPath Then
    $sOut &= $aFolder[$i][$j] & '\' & $sFound & Chr(0)
    Else
    $sOut &= $sFound & Chr(0)
    EndIf
    EndIf
    WEnd
    Next
    If $sOut = '' Then Return SetError(1,0,0)
    Return StringSplit(StringTrimRight($sOut, 1), Chr(0))
    EndFunc ;==>_GetFolderInRelativeDepth

    [/autoit]

    Dateien

    _GetFolderInRelativeDepth[0.1].au3 2,97 kB – 465 Downloads
  • Daten aus Excel auslesen und ins ERP einlesen

    • BugFix
    • 20. Mai 2012 um 15:33
    Zitat von Ramona86

    wie kann ich nur so viele Zeilen lesen wie auch beschrieben sind?


    Gibt verschiedene Möglichkeiten. Ich habe z.B. die Funktion _ExcelBookGetWidth() erstellt, mit der sich das abfragen läßt.
    Andere Variante:

    [autoit]

    ; === letzte Zeile
    ConsoleWrite('Anzahl Zeilen: ' & $oExcel.Worksheets(1).UsedRange.Rows.Count & @CRLF)

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

    ; === letzte Spalte
    ConsoleWrite('Anzahl Spalten: ' & $oExcel.Worksheets(1).UsedRange.Columns.Count & @CRLF)

    [/autoit]
  • Kleines Problem bei Funktionsaufruf

    • BugFix
    • 20. Mai 2012 um 15:25
    Zitat von Beep (1000 1000)

    dass es sich in dem "echten" Script eher um 24-150 oder mehr buttons handelt


    Wozu gibt es Arrays... :whistling:

  • Kleines Problem bei Funktionsaufruf

    • BugFix
    • 20. Mai 2012 um 15:05

    Das kannst du so lösen:

    [autoit]

    $bt1= GUICtrlCreateButton(..)
    GUICtrlSetOnEvent(-1, 'EventHandler')
    $bt2= GUICtrlCreateButton(..)
    GUICtrlSetOnEvent(-1, 'EventHandler')
    $bt3= GUICtrlCreateButton(..)
    GUICtrlSetOnEvent(-1, 'EventHandler')
    $bt4= GUICtrlCreateButton(..)
    GUICtrlSetOnEvent(-1, 'EventHandler')

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

    ;......

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

    Func EventHandler()
    Switch @GUI_CtrlId
    Case $bt1
    ;..
    Case $bt2
    ;..
    Case $bt3
    ;..
    Case $bt4
    ;..
    EndSwitch
    EndFunc

    [/autoit]
  • Kleines Problem bei Funktionsaufruf

    • BugFix
    • 20. Mai 2012 um 14:47

    Du kannst OnEvent-Funktionen NICHT mit Parameter aufrufen. Steht auch so in der Hilfe.

  • mehrzeilige Variable nach @CRLF Splitten

    • BugFix
    • 20. Mai 2012 um 14:44

    Wenn StringSplit dir nur Müll zurückgibt, solltest du vielleicht mal einen Blick auf den 3.ten Parameter werfen. Der Fehler sitzt meist 60 cm vor dem Monitor. :D

  • Tipp für 3D Programmierer: Texturierte 3D Models von Gegenständen mit normaler Webcam erstellen

    • BugFix
    • 19. Mai 2012 um 23:18
    Zitat von minx

    Das altbekannte Win7 Cam Problem?


    Ist nur bei eingen wenigen Hardwaresituationen ein Problem und hat mit Win7 als solchem gar nix zu tun.

  • Bild zentrieren

    • BugFix
    • 19. Mai 2012 um 13:53

    Wenn das Bild genauso groß ist, wie die GUI, zentrierst du das Bild (mit der GUI) durch Angabe von "-1" oder "Default" bei Position X und Y für die GUI.

  • Daten aus Excel auslesen und ins ERP einlesen

    • BugFix
    • 19. Mai 2012 um 13:12
    Zitat von Ramona86

    muss ich die abläufe noch mit dem AU3record aufnehme


    Davon möchte ich dir dringend abraten. Dieses Tool ist nur dann halbwegs brauchbar, wenn du gar kein Standard-Control auf der Anwendung hast und tatsächlich rumklicken mußt mit Maus-Simulation.
    Der erste Weg sollte immer das AutoIt-Windows-Info-Tool sein. Da siehst du, ob die Fenster/Controls per ID oder CLASS ansprechbar sind. Nur, wenn das erfolglos ist, sollte man auf die Krücke der Mausklickerei zurückgreifen.

  • Tool: Formatierung Controls

    • BugFix
    • 19. Mai 2012 um 12:59

    - Syntax Funktionsaufrufe an neue Version angepaßt
    - ColorPicker hinzugefügt

  • Tool für universelle Ausfüllungen jeglicher Textfelder

    • BugFix
    • 19. Mai 2012 um 09:35

    Zumindest in einem Teil (Captcha) Verstoß gegen Forenregeln.

    [CLOSED]

  • Dateien ohne Dateiendung

    • BugFix
    • 18. Mai 2012 um 20:59

    He Dino, ich dachte, es ist selbstverständlich, dass du die Funktion (von hier) auch wieder mit nutzt. Ich habe nur die Änderungen gepostet. :P

  • Dateien ohne Dateiendung

    • BugFix
    • 18. Mai 2012 um 20:47
    Zitat von AspirinJunkie

    Gibt es einen Punkt im Dateinamen hat die Datei auch eine Endung.


    OK, wenn dem so ist, lag ich daneben. ;)
    Ich war immer der Meinung, dass Dateinamen ohne Endung aber mit Pukt im Namen möglich sind. Das Windows alles, was nach einem Punkt kommt als Endung interpretiert, heißt ja noch lange nicht, dass dem auch so ist. Oder?

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™