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

  • MountFolders - Ordner automatisch als Laufwerk einbinden lassen

    • BugFix
    • 10. November 2012 um 12:29

    Ist schon seit knapp 4 Jahren bei den Skripten gepostet: Virtuelles Laufwerk ;)

  • Path UDF - Funktionen spezialisiert auf Pfad- und Dateiangaben (FINAL)

    • BugFix
    • 3. November 2012 um 18:40

    Frage: Warum überhaupt RegExp für solch kurze Strings?
    RegExp ist sinnvoll bei großen Texten, die man damit gut parsen kann. Ich bin mir ziemlich sicher, dass die AutoIt-Stringfunktionen für solch kurzen Stringlängen effektiver sind (auch wenn RegExp immer cool aussieht ;)).

  • CSS - Darstellungsproblem

    • BugFix
    • 3. November 2012 um 13:35

    Hab das Problem gefunden: Die Liste ist Schuld.
    Bei Verwendung einer Liste in einem Container wird diese immer mit Rand links dargestellt. Diesen Rand kann man nicht beeinflussen.
    Also habe ich statt der Liste einen Container mit den Links der Navigation verwendet: Nun passt es.

  • GUI Input eingabe -> Controls erscheinen -> Input Zeichen löschen -> Controls verstecken

    • BugFix
    • 3. November 2012 um 08:54

    Ich habe das Skript von Torni mal noch etwas überarbeitet und kommentiert.

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Form1_1 = GUICreate("Form1", 310, 220, 273, 249)
    $Input1 = GUICtrlCreateInput("", 24, 40, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
    $Label1 = GUICtrlCreateLabel("Password:", 24, 16, 67, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "Trebuchet MS")
    $Group1 = GUICtrlCreateGroup("Install Printer ", 24, 72, 273, 129)
    GUICtrlSetFont(-1, 9, 400, 0, "Trebuchet MS")
    GUICtrlSetState(-1, $GUI_HIDE)
    $Button1 = GUICtrlCreateButton("Button1", 112, 168, 75, 17)
    GUICtrlSetState(-1, $GUI_HIDE)
    $Label2 = GUICtrlCreateLabel("Install Generic / Text Only @ LPT1", 40, 104, 238, 22)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlSetFont(-1, 10, 400, 0, "Trebuchet MS")
    GUICtrlSetState(-1, $GUI_HIDE)
    $Progress1 = GUICtrlCreateProgress(64, 136, 166, 9)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND') ; == Registrieren der Windows-Message WM_COMMAND

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

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

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) ; == Auswerten der Windows-Message WM_COMMAND
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    ; == WENN ( Code=Änderung_im_Control ) UND ( CTRL-ID=$input1 )
    If $iCode = $EN_CHANGE And $iIDFrom = $input1 Then
    If GUICtrlRead($Input1) = "test" Then ; == WENN Ctrl-Inhalt = "test"
    _SetState($GUI_SHOW) ; == Ctrls zeigen
    Else ; == in jedem anderen Fall
    _SetState($GUI_HIDE) ; == Ctrls verstecken
    EndIf
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func _SetState($_iState)
    GUICtrlSetState($Group1, $_iState)
    GUICtrlSetState($Button1, $_iState)
    GUICtrlSetState($Label2, $_iState)
    GUICtrlSetState($Progress1, $_iState)
    EndFunc

    [/autoit]
  • Anzahl von Registrierungseinträgen auslesen

    • BugFix
    • 2. November 2012 um 18:02

    Hab mal die Delete-Funktion (per WMI) erstellt:

    btw.: Diese Funktion läuft ohne #RequireAdmin

    [autoit]


    ; Bsp.
    _RegDeleteKey("HKEY_CURRENT_USER", "TEST\BLA")

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

    Func _RegDeleteKey($HKEY, $strKeyPath)
    If StringRight($HKEY, 1) = '\' Then $HKEY = StringTrimRight($HKEY, 1)
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $sNames, $sKeyName
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    Local $iRet = $oReg.DeleteKey($HKEY, $strKeyPath)
    If $iRet <> 0 Then
    $iRet = $oReg.EnumKey($HKEY, $strKeyPath, $sNames)
    For $sKeyName In $sNames
    $iRet = _RegDeleteKey($HKEY, $strKeyPath & "\" & $sKeyName)
    Next
    $oReg.DeleteKey($HKEY, $strKeyPath)
    EndIf
    EndFunc ;==>_RegDeleteKey

    [/autoit]
  • Anzahl von Registrierungseinträgen auslesen

    • BugFix
    • 2. November 2012 um 17:34

    Hi,
    hier tritt folgendes Problem auf:
    Hier wird versucht mit dem Löschen eines Schlüssels auch die Unterschlüssel zu löschen --- DAS kann nicht gehen.
    Windows löscht intern zu jedem Parent.Key erstmal alle Sub.Keys, aus alten DOS-Zeiten bekannt: Verzeichnisse mit Inhalt kann man nicht Löschen. Die modernen Löschbefehle nehmen dem User die Arbeit ab, sodass man davon nichts mitbekommt.
    Es wird also eine rekursive Funktion benötigt, die für jeden Schlüssel prüft, ob er Unterschlüssel hat und erst bei "Nein" den Schlüssel löscht. Also von Innen nach Aussen Löschen.

  • Wiki Live Search - the easiest way

    • BugFix
    • 1. November 2012 um 22:27

    Naja, in der Adresszeile des Browsers ein "w Suchbegriff" tuts auch... :whistling:

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 1. November 2012 um 15:36

    Eine smarter Editor, ohne Frage - also wenn ich das richtig sehe, sind die Sprachreferenzen über XML-Files (o.ä.) gelöst. Das ist nix für mich. Da ist ja ein Blick in einen Kochtopf voller Spaghetti wesentlich strukturierter. :D

  • TreeView rechte Mausclick

    • BugFix
    • 1. November 2012 um 15:22

    Ohne Bsp. Code wird dir da niemand helfen können. Oder glaubst du, dass jemand sich erstmal hinsetzt, dein Problem anhand der recht vagen Infos nachskriptet und dir dann eine Lösung präsentiert?

  • Ältere Dateien Löschen

    • BugFix
    • 31. Oktober 2012 um 13:45
    Zitat von TheLuBu

    Es gibt nur ein ReDim kurz vor dem Return des Arrays,


    Und im Normalfall nicht mal dieses. Denn das passiert nur, wenn keine Ergebnisse gefunden wurden, dann wird das aus dem Stringsplit entstandene 2-Elementige Array ReDim't auf 1 Element mit Wert "0". ;)

  • DllStruct Speichern

    • BugFix
    • 31. Oktober 2012 um 13:36
    Zitat von Mars

    Das Array im Array dürfte jedem ein Begriff sein.
    Leider funktionniert Struct im Struct bei AutoIt nicht, warum ?


    Naja...
    Man kann schon Struktur in einer Struktur speichern. Kommt nur drauf an, wie man es verwaltet. Ein Pointerarray macht sich dafür recht gut.
    Hier mal ein Bsp.:

    Spoiler anzeigen
    [autoit]

    ; == 3 Verschiedene Strukturen in einer MainStruktur speichern ==

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

    $iElements = 9 ;<== Summe der Elemente in den zu speichernden Strukturen
    $struct1 = 'int;int;'
    $shift1 = 0 ;<== shift gibt den Versatz der Struktur in der Mainstruktur an = Summe vorherig angeordneter Strukturelemente
    $struct2 = 'int;byte;char[5];'
    $shift2 = 2
    $struct3 = 'hwnd;hwnd;int;int;'
    $shift3 = 5

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

    Global $aStruct = DllStructCreate('ptr[' & $iElements & '];' & $struct1 & $struct2 & $struct3)
    For $i = 1 To $iElements
    DllStructSetData($aStruct, 1, DllStructGetPtr($aStruct, $i +1), $i)
    Next

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

    ; == in Strukturen schreiben ==

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

    ; == struct1
    _DllArrayStructSetData($aStruct, 0, 1, 64)
    _DllArrayStructSetData($aStruct, 0, 2, 128)
    ; == struct2
    _DllArrayStructSetData($aStruct, 2, 1, 30)
    _DllArrayStructSetData($aStruct, 2, 2, 8)
    _DllArrayStructSetData($aStruct, 2, 3, 'hallo')
    ; == struct3
    _DllArrayStructSetData($aStruct, 5, 1, WinGetHandle('') )
    _DllArrayStructSetData($aStruct, 5, 2, 0x135790)
    _DllArrayStructSetData($aStruct, 5, 3, 256)
    _DllArrayStructSetData($aStruct, 5, 4, 512)

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

    ; == aus Strukturen lesen ==

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

    ; == struct1
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct1, 0, 1) & @CRLF )
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct1, 0, 2) & @CRLF )
    ; == struct2
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct2, 2, 1) & @CRLF )
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct2, 2, 2) & @CRLF )
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct2, 2, 3) & @CRLF )
    ; == struct3
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 1) & @CRLF )
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 2) & @CRLF )
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 3) & @CRLF )
    ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 4) & @CRLF )

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

    Func _DllArrayStructSetData(ByRef $_aStruct, $_iShift, $_iElement, $_value, $_iIndex=0)
    If $_iIndex > 0 Then
    Return DllStructSetData($_aStruct, 1 + $_iShift + $_iElement, $_value, $_iIndex)
    Else
    Return DllStructSetData($_aStruct, 1 + $_iShift + $_iElement, $_value)
    EndIf
    EndFunc

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

    Func _DllArrayStructGetData(ByRef $_aStruct, $_sStruct, $_iShift, $_iElement, $_iIndex=0)
    If StringRight($_sStruct, 1) = ';' Then $_sStruct = StringTrimRight($_sStruct, 1)
    Local $aElements = StringSplit($_sStruct, ';')
    Local $structElement = $aElements[$_iElement]
    Local $ptr = DllStructGetData($_aStruct, 1, $_iShift + $_iElement)
    Local $tmpStruct = DllStructCreate($structElement, $ptr)
    If $_iIndex > 0 Then
    Return DllStructGetData($tmpStruct, 1, $_iIndex)
    Else
    Return DllStructGetData($tmpStruct, 1)
    EndIf
    EndFunc

    [/autoit]
  • CSS - Darstellungsproblem

    • BugFix
    • 30. Oktober 2012 um 20:14
    Zitat von peethebee

    Netscape-Alpha


    ?(
    Meines Wissens nutze ich Netscape nicht. Es sei denn es ist versteckter Bestandteil von FF, IE oder Chrom ;)

  • CSS - Darstellungsproblem

    • BugFix
    • 30. Oktober 2012 um 19:47

    Hab nun dieses jsFiddle gefunden, alles eingetragen und...
    Es sieht so aus, wie es soll!! jsFiddle
    Aber das ist völlig wertlos, sowie ich es über einen Browser ausgebe wird es verfälscht. ;(
    In meinem Editor (Webocton) wird auch alles korrekt dargestellt.

  • CSS - Darstellungsproblem

    • BugFix
    • 30. Oktober 2012 um 18:58

    Hi,
    ich kämpfe gerade mit der Gestaltung einer Website.
    Eigentlich ein recht triviales Outfit: Wie mit Frames einen Container für Titel, einen für Naviagation und einen für Inhalt.

    Struktur
    Code
    ______________________________________________________________________________________________________________________________
    |  __________________________________________________________________________________________________________________________  |
    | |                                                                                                                          | |<-- body
    | |  <div id="titel"> <p> ... </p> </div>                                                                                    | |
    | |                                                                                                                          | |
    | |__________________________________________________________________________________________________________________________| |
    |  ________________________________   _______________________________________________________________________________________  |
    | |                                | |                                                                                       | |
    | | <div id="navigation">          | |  <div id="content"> ... </div>                                                        | |
    | |                                | |                                                                                       | |
    | | <ul>                           | |                                                                                       | |
    | | <li><strong> .. </strong></li> | |                                                                                       | |
    | | <li><a href=".."> .. </a></li> | |                                                                                       | |
    | | <li><a href=".."> .. </a></li> | |                                                                                       | |
    | | <li><a href=".."> .. </a></li> | |                                                                                       | |
    | | <li><a href=".."> .. </a></li> | |                                                                                       | |
    | | </ul>                          | |                                                                                       | |
    | |                                | |                                                                                       | |
    | | </div>                         | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |                                | |                                                                                       | |
    | |________________________________| |_______________________________________________________________________________________| |
    |______________________________________________________________________________________________________________________________|
    Alles anzeigen


    Hier die zugehörige CSS-Datei:

    CSS
    Code
    body{
        overflow:scroll;
        margin: 0;
        background-image: url("../images/bild_3_800x600.gif");
        }
    
    
    #titel{
        background-color: #BE4A4A;
        position: absolute;
        width: 400%;
        height: 70px;
        font-size: 3em;
        font-family: Comic;
        color: #FFFFFF;
        }
    
    
    #titel p {
        margin-top: 10px;
        margin-left: 4%;
        }
    
    
    #navigation{
        background-color: #BE4A4A;
        position: absolute;
        left: 0px;
        top: 60px;
        width: 160px;
        height: 500%;
        }
    
    
    #navigation ul {
        margin-left: 10px;
        margin-top: 100px;
        font-size: x-large;
        }
    
    
    #navigation a {
        color: #ffff00;
        text-decoration: none;
        display: block;
        padding: 0.3em 0.3em 0.3em .5em;
        border-left: solid 10px #E49898;
        }
    
    
    #navigation a:hover {
        color: #FFC000;
        text-decoration: underline;
        border-left: solid 10px #FFC000;
        }
    
    
    #navigation strong {
        color: #620062;
        border-left: solid 10px #620062;
        padding: 0.3em 0.3em 0.3em .5em;
        }
    
    
    #navigation li {
        list-style-type: none;
        }
    
    
    #content {
        position: absolute;
        top: 70px;
        left: 160px;
        margin-left: 10px;
        margin-top: 10px;
        width: 85%;
        height: 85%;
        }
    Alles anzeigen

    Nun würde ich eigentlich erwarten, dass folgendes im Navigationsbereich zu sehen ist:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Stattdessen erhalte ich aber:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.


    Woher kommt der linke Rand, in der Liste? Wie bekomme ich das richtig hin?

    Bilder

    • wrong.png
      • 12,28 kB
      • 228 × 441
  • Ladebalken im Batch Programmieren an einer If schleife hängend geht das?

    • BugFix
    • 29. Oktober 2012 um 12:11

    Funktioniert das Bsp. nicht, das ich gepostet habe?

  • Update der Excel UDF die mit AutoIt ausgeliefert wird - 2014-03-22 - Fünfte Beta verfügbar

    • BugFix
    • 28. Oktober 2012 um 11:03

    Ich habe gerade in einem Hilfethread ein Handling für wahlweises Öffnen oder referenzieren, wenn bereits geöffnete für Workbooks gepostet.
    Nun habe ich daraus noch eine Funktion erstellt, vielleicht auch von Interesse:

    [autoit]

    ;===============================================================================
    ; Function Name....: _ExcelBook_OpenRefer
    ; Description......: - Opens an ExcelBook in existing Excel-Application
    ; .................: - Opens an ExcelBook in new Excel-Application if no Excel runs
    ; .................: - Refers to an always opened ExcelBook
    ; Parameter(s).....: $_sPath Path to the ExcelBook
    ; .................: $_fVisible WorkBook is visible (1=default)
    ; Return Value(s)..: Reference to the Excel object
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _ExcelBook_OpenRefer($_sPath, $_fVisible=1)
    Local $oBook, $fOpen = False, $oExcel = ObjGet('', 'Excel.Application')
    If @error Then
    $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = $_fVisible
    $oBook = $oExcel.Workbooks.Open($_sPath)
    Else
    $oBook = $oExcel.WorkBooks
    For $book In $oBook
    If $book.Path & '\' & $book.Name = $_sPath Then
    $oBook($book.Name).Activate
    $oExcel.Visible = $_fVisible
    $fOpen = True
    ExitLoop
    EndIf
    Next
    If Not $fOpen Then
    $oExcel.Visible = $_fVisible
    $oBook = $oExcel.Workbooks.Open($_sPath)
    EndIf
    EndIf
    Return $oExcel
    EndFunc ;== _ExcelBook_OpenRefer

    [/autoit]
  • DOS-Fenster schließen (press Esc)

    • BugFix
    • 28. Oktober 2012 um 09:21

    Dann mußt du den Prozeß der dort über CMD laufen soll per Run() starten mit STDOUT-Flag.
    Wenn der gewünschte Inhalt (press Esc) ausgegeben wird, schließt du das CMD-Fenster. ( Mir rollen sich immer die Fußnägel auf, wenn ich DOS-Fenster höre/lese :rofl: )

  • Excel ist geöffnet, Wie übernehme ich die Datei und wechsle in Sheet 2

    • BugFix
    • 28. Oktober 2012 um 00:33

    So kannst du prüfen ob
    - Excel bereits mit deinem Workbook geöffnet ist
    - Excel ohne das Workbook geöffnet ist
    - Excel nicht geöffnet ist
    Entsprechend erfolgt der Zugriff auf die Tabelle.

    [autoit]

    Global $myPath = "DEINE.xls"

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

    Global $fOpen = False, $oBook, $oExcel = ObjGet('', 'Excel.Application') ; Zugriff auf geöffnetes Excel
    If @error Then
    ; == Excel ist nicht geöffnet, neues Excel-Objekt erstellen
    _OpenXLS(0)
    Else
    ; == in Excel geöffnete Workbooks auflisten
    $oBook = $oExcel.WorkBooks
    For $book In $oBook
    If $book.Path & '\' & $book.Name = $myPath Then
    ;~ ConsoleWrite($book.Path & '\' & $book.Name & @CRLF)
    $oBook($book.Name).Activate
    $oExcel.Visible = 1 ; nur wenn Tabelle sichtbar sein soll
    $book.Sheets(2).Select()
    $fOpen = True
    ExitLoop
    EndIf
    Next
    EndIf
    If Not $fOpen Then _OpenXLS($oExcel) ;

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

    Func _OpenXLS($_oExcel)
    If Not IsObj($_oExcel) Then $oExcel = ObjCreate("Excel.Application") ; Excel-Objekt erstellen
    $oExcel.Visible = 1 ; 0=unsichtbar/ 1=sichtbar
    $oBook = $oExcel.Workbooks.Open($myPath) ; Datei öffnen
    $oBook.Sheets(2).Select()
    EndFunc

    [/autoit]
  • Lochkarten codieren

    • BugFix
    • 27. Oktober 2012 um 21:10

    Das hättest du vor 3 Jahren fragen müssen. Damals habe ich alle Unterlagen (Programmierhanbücher, Codieranweisungen etc. pp.) zur Lochkartentechnik entsorgt.
    Habe mir das im zarten Alter von 10 Jahren (1971) begeistert reingezogen.
    Es gab verschiedene Lochkartensysteme. 80 x 12 war ein Standard, wir hatten damals glaub ich mit 8 Zeilen gearbeitet (Löcher rechteckig) + eine durchgängige Positionslochung (rund).

  • Mehrere Edits und ES_WANTRETURN

    • BugFix
    • 27. Oktober 2012 um 18:57
    Zitat von minx

    da ich den Pfeiltasten keine anderen Accelerators mehr zuweisen kann


    Klar geht das, in den zugeordneten Funktionen der Dummies kannst du doch je nach aktueller ID (Fokus) andere Aktionen ausführen. ;)

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™