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

  • 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 – 363 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?

  • Dateien ohne Dateiendung

    • BugFix
    • 18. Mai 2012 um 20:41

    Das ist easy, einfach die umbenannten Dateipfade mit zurückgeben lassen.

    Spoiler anzeigen
    [autoit]

    $sPfad = "D:\para\dib\"
    $aRenamedFiles = _AddExt_txt($sPfad)

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

    ; == Bearbeitung

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

    ; == Rückbenennen
    _Rename_Back($aRenamedFiles)

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

    Func _AddExt_txt($_sPath)
    Local $oFSO = ObjCreate('Scripting.FileSystemObject')
    Local $oFile, $sExt
    Local $aFiles = _GetFilesFolder_Rekursiv($_sPath, -1, 0)
    Local $sRet = ''
    For $i = 1 To $aFiles[0]
    $oFile = $oFSO.GetFile($aFiles[$i])
    $sExt = $oFSO.GetExtensionName($oFile)
    If $sExt = '0' Then
    $oFSO.MoveFile($aFiles[$i], $aFiles[$i] & '.txt')
    $sRet &= $aFiles[$i] & '.txt' & Chr(0)
    EndIf
    Next
    Return StringSplit(StringTrimRight($sRet, 1), Chr(0))
    EndFunc

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

    Func _Rename_Back($_aFiles)
    For $i = 1 To $_aFiles[0]
    FileMove($_aFiles[$i], StringTrimRight($_aFiles[$i], 4))
    Next
    EndFunc

    [/autoit]
  • Dateien ohne Dateiendung

    • BugFix
    • 18. Mai 2012 um 19:59

    Festzustellen, ob eine Datei keine Endung hat ist mit AutoIt an sich nichht möglich, da nur der Punkt als Abgrenzung zur Extension keine Sicherheit bietet, schließlich gibt es auch Dateien mit Punkt im Namen.
    Deshalb braucht es hier eine Lösung, die explizit auf die Erweiterung zugreifen kann.

    Spoiler anzeigen
    [autoit]

    $sPfad = "D:\para\dib\"
    _AddExt_txt($sPfad)

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

    Func _AddExt_txt($_sPath)
    Local $oFSO = ObjCreate('Scripting.FileSystemObject')
    Local $oFile, $sExt
    Local $aFiles = _GetFilesFolder_Rekursiv($_sPath, -1, 0)
    For $i = 1 To $aFiles[0]
    $oFile = $oFSO.GetFile($aFiles[$i])
    $sExt = $oFSO.GetExtensionName($oFile)
    If $sExt = '0' Then $oFSO.MoveFile($aFiles[$i], $aFiles[$i] & '.txt')
    Next
    EndFunc

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    Case '3'
    $sDelim = ';'
    Case '4'
    $sDelim = '|'
    Case Else
    $sDelim = @CRLF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles, StringLen($sDelim))
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]
  • Frage zu Doppelklick abfragen in Listbox

    • BugFix
    • 17. Mai 2012 um 20:46

    Hier liegt der Fehler

    [autoit]

    Switch $hWndFrom
    Case $List_r_Report ; Events der Listbox

    [/autoit]


    Switch verwendet das Handle und im Case-Zweig gibst du die ID an. Verwende auch dort das Handle:

    [autoit]

    GUICtrlGetHandle($List_r_Report)

    [/autoit]

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™