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

  • Frage zur Informatik

    • BugFix
    • 15. August 2012 um 17:55

    Also ich persönlich sehe keinen fundamentalen Zusammenhang zwischen Informatik und Logistik. Das sind doch deutlich unterschiedliche Paar Schuhe.
    Basierend auf deiner Transportaussage, wäre dann die Medizin zwangsläufig auch Logistik. Dort geht es um Transporte von Nährstoffen, Botenstoffen, elektrischen Reizen etc. pp.
    Man könnte diesen Zusammenhang wohl auf fast Alles konstruieren.
    Für Vergleiche würde ich immer die Kerninhalte heranziehen.

  • Arraylimit von 65.530 übersteigen

    • BugFix
    • 14. August 2012 um 17:06

    Nun, ich finde ~65.000 Elemente im Listview völlig ausreichend.
    Ich persönlich verwende _ArrayDisplay nur bei kleinen Arrays. Sind es große Mengen an Einträgen gebe ich das lieber in die Konsole aus.

  • Ameise (Turingmaschine)

    • BugFix
    • 14. August 2012 um 09:03
    Zitat von x0r

    kann es sein, dass beim Minimieren des GUI die bisher gemalten Pixel unsichtbar werden?


    Korrekt, das ist das normale Verhalten, wenn mit GDI oder WinAPI-Befehlen gezeichnet wird.

  • Desktop Widget

    • BugFix
    • 14. August 2012 um 08:41

    Es fällt mir schwer, das zu bewerten.
    Im Moment sehe ich die Vorstellung eines (durchaus interessanten) Projektes ohne Bezug zu AutoIt.

    Zitat

    Beispiele für Auto-It folgen.

    Vielleicht sagst du hierzu ein paar mehr Worte.
    - Erstellst du eine UDF, basierend auf den Dll-Funktionen?
    - Ist geplant, dass die Widgets ausschließlich in AutoIt konzipiert werden können? (ohne Nutzung einer fremden IDE)

  • Ordnernamen lokalisiert, _GetFolderLocalized

    • BugFix
    • 12. August 2012 um 13:42

    Hi,

    in Windows 7 (vllt. auch schon Vista?) werden die allgemein vorhandenen Ordner (Eigene Bilder etc.) in der Sprache der Installation angezeigt, der tatsächliche Ordnerpfad ist aber immer identisch (in englisch hinterlegt).
    Windows führt eine Lokalisierung durch, indem in jedem Ordner die Datei "desktop.ini" mit dem Verweis auf den Lokalisierungsstring in der "shell32.dll" hinterlegt wird. (Falls ihr die Originalnamen angezeigt bekommen möchtet, einfach den Lokalisierungsstring in der INI auskommentieren. Die Ini ist als Systemdatei in der Standardeinstellung nicht sichtbar.)

    Um Programme mehrsprachig zu gestalten, lassen sich mit der folgenden Funktion für die hinterlegten Ordner (Eigene Bilder etc.), die landesspezifischen Bezeichnungen (abhängig von der Windows-Installation) ermitteln.
    Beim Testen am eigenen System werdet ihr keine Wirkung feststellen können, da ihr dort eine deutsche Installation habt und dementsprechend auch die deutsche Bezeichnung wieder zurückgegeben wird.


    _GetFolderLocalized
    [autoit]

    ;===============================================================================
    ; Function Name....: _GetFolderLocalized
    ; Description......: Returns localized folder name for german counterpart
    ; Parameter(s).....: German folder name as follows:
    ; .................: 'Programme'
    ; .................: 'Programme (x86)'
    ; .................: 'Startmenü'
    ; .................: 'Autostart'
    ; .................: 'Eigene Bilder'
    ; .................: 'Eigene Dokumente'
    ; .................: 'Eigene Musik'
    ; .................: 'Eigene Videos'
    ; .................: 'Öffentliche Bilder'
    ; .................: 'Öffentliche Dokumente'
    ; .................: 'Öffentliche Musik'
    ; .................: 'Öffentliche Videos'
    ; Requirement(s)...: Windows 7
    ; Return Value(s)..: Localized folder name, by using installed system language
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GetFolderLocalized($_sFolderGER)
    Local $sDrive = StringLeft(@WindowsDir, 1)
    Local $sUser = @UserName
    Local $iIndex = -1
    Local $aFolder[12][2] = [ _
    ['Programme' , $sDrive & ':\Program Files' ], _
    ['Programme (x86)' , $sDrive & ':\Program Files (x86)' ], _
    ['Startmenü' , $sDrive & ':\Users\' & $sUser & '\AppData\Roaming\Microsoft\Windows\Start Menu' ], _
    ['Autostart' , $sDrive & ':\Users\' & $sUser & '\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup'], _
    ['Eigene Bilder' , $sDrive & ':\Users\' & $sUser & '\Pictures' ], _
    ['Eigene Dokumente' , $sDrive & ':\Users\' & $sUser & '\Documents' ], _
    ['Eigene Musik' , $sDrive & ':\Users\' & $sUser & '\Music' ], _
    ['Eigene Videos' , $sDrive & ':\Users\' & $sUser & '\Videos' ], _
    ['Öffentliche Bilder' , $sDrive & ':\Users\Public\Pictures' ], _
    ['Öffentliche Dokumente' , $sDrive & ':\Users\Public\Documents' ], _
    ['Öffentliche Musik' , $sDrive & ':\Users\Public\Music' ], _
    ['Öffentliche Videos' , $sDrive & ':\Users\Public\Videos' ]]
    For $i = 0 To 11
    If $aFolder[$i][0] = $_sFolderGER Then
    $iIndex = $i
    ExitLoop
    EndIf
    Next
    If $iIndex = -1 Then Return SetError(1, 0, 0)
    Local $sPathIni = $aFolder[$iIndex][1] & '\desktop.ini'
    Local $fh = FileOpen($sPathIni), $sLine, $iNumber = -1
    While 1
    $sLine = FileReadLine($fh)
    If @error = -1 Then ExitLoop
    If StringInStr($sLine, 'LocalizedResourceName') Then
    $iNumber = StringRegExpReplace($sLine, '(.+shell32\.dll,-)(\d+)\z', '$2')
    ExitLoop
    EndIf
    WEnd
    FileClose($fh)
    If $iNumber = -1 Then Return SetError(2, 0, 0)
    Local $aRet = DllCall("kernel32.dll", "handle", "LoadLibraryExW", "wstr", "shell32.dll", "ptr", 0, "dword", 0x02)
    If @error Then Return SetError(@error, @extended, 0)
    Local $hDll = $aRet[0]
    $aRet = DllCall("user32.dll", "int", "LoadStringW", "handle", $hDll, "uint", $iNumber, "wstr", "", "int", 4096)
    If @error Then Return SetError(@error, @extended, 0)
    Local $sLocale = $aRet[3]
    DllCall("kernel32.dll", "bool", "FreeLibrary", "handle", $hDll)
    Return $sLocale
    EndFunc ;==>_GetFolderLocalized

    [/autoit]

    Dateien

    _GetFolderLocalized.au3 3,87 kB – 358 Downloads
  • Problem beim Auslesen eines Werts mit "SteinBetween"

    • BugFix
    • 12. August 2012 um 01:18

    Ich mache hier dicht, dass ist der zweite Thread zum Thema Captcha automatisiert lesen.
    Diesmal gibt es als Bonus für's verarschen wollen noch eine Verwarnung. :evil:

  • ListView - bestimmte Zeilen (Text) farbig

    • BugFix
    • 11. August 2012 um 16:44

    Wenn du ganze Zeilen färben möchtest, geht das einfacher:

    [autoit]

    #Include <GuiListView.au3>

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

    Local $gui = GUICreate('Test 1')
    Local $LV = GUICtrlCreateListView("Col 1|Col 2", 15, 15, 300, 250)
    Local $hLV = GUICtrlGetHandle($LV)
    _GUICtrlListView_SetColumnWidth($hLV, 0, 148)
    _GUICtrlListView_SetColumnWidth($hLV, 1, 148)

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

    Global $aLV_Item[30]
    For $i = 1 To 30
    $aLV_Item[$i-1] = GUICtrlCreateListViewItem(Random(10000, 1000000, 1) & '|' & Random(10000, 1000000, 1), $LV)
    Next

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

    GUISetState()

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

    _SetItemColor($aLV_Item[1], 0xFFFF00) ; Zeile 2 färben
    Sleep(2000)
    _SetItemColor($aLV_Item[1]) ; Zeile 2 zurücksetzen

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

    Do
    Until GUIGetMsg() = -3
    GUIDelete($gui)

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

    Func _SetItemColor($ID_Item, $iColor=0xFFFFFF)
    GUICtrlSetBkColor($ID_Item, $iColor)
    EndFunc

    [/autoit]
  • Funktionieren bei Euch noch die User-CallTipps, also Einträge in au3.user.calltips.api?

    • BugFix
    • 7. August 2012 um 23:14

    Hi,
    also eine Interaktion mit Notepad++ kannst du meines Erachtens ausschliessen.
    Es ist zwar ebenso wie SciTE auf Scintilla Basis, aber das allein erlaubt keine unkontrollierte Verbindung zwischen beiden.
    Die Lokalisierung der User Calltipps im Userprofil ist aber nichts Neues, die ist seit ca. 2 Jahren dort untergebracht. ;)
    Wenn ich am WE zurück bin, schaue ich mal in meinen Aufzeichnungen dazu nach. Irgendwann hatte ich da ein Skript erstellt, das die Calltipps neu im richtigen Pfad anlegt.

  • Fenster / PopUp schliessen?

    • BugFix
    • 5. August 2012 um 09:23

    Du solltest bei einem Fenster dieser Klasse zwingend auf weitere Erkennungsmerkmale prüfen. Denn "[CLASS:#32770]" ist eine Fensterklasse, die nicht spezifisch für dein Programm ist. Dialogboxen sind meist in dieser Fensterklasse und mit (?) VC, VB (?) erstellte Fenster wohl auch. ;)
    Du könntest z.B. über den Prozeß, der das Fenster generiert, den Fenstertitel abfragen. Bemühe mal die Suche im Forum. Dazu wurden schon Skripte gepostet.

  • Input-Feld soll nur bei {enter} Aktionen auslösen

    • BugFix
    • 4. August 2012 um 23:54

    Oder so, da wird ENTER auch ohne Eintrag angenommen:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #Include <GUIConstantsEx.au3>

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

    Global Const $WM_COMMAND = 0x0111

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

    $hGUI = GUICreate('TEST')
    $input1 = GUICtrlCreateInput('', 40, 30, 60, 20)
    $input2 = GUICtrlCreateInput('', 40, 60, 60, 20)
    $input3 = GUICtrlCreateInput('', 40, 90, 60, 20)
    $input4 = GUICtrlCreateInput('', 40, 120, 60, 20)

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

    GUISetState(@SW_SHOW, $hGUI)

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

    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND') ; == registriert Windows-Message "WM_COMMAND" und weist dieser Msg die gleichnamige Funktion zu

    [/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)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Select
    Case $iCode = 0x0
    Local $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($hGUI, '', ControlGetFocus($hGUI)))
    Switch $ID
    Case $input1
    ConsoleWrite('ENTER - Input-1' & @CRLF)
    Case $input2
    ConsoleWrite('ENTER - Input-2' & @CRLF)
    Case $input3
    ConsoleWrite('ENTER - Input-3' & @CRLF)
    Case $input4
    ConsoleWrite('ENTER - Input-4' & @CRLF)
    EndSwitch
    EndSelect
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]
  • "OOP" problem

    • BugFix
    • 3. August 2012 um 17:53
    Zitat von taugenix

    Bist du beruflich Programmierer?? Würde mich mal interessieren.


    Beruflich habe ich gar nix mit Programmierung zu tun. :D (Ausser, dass ich eigene Programme für die Arbeit nutze)
    Aber ich habe seit meiner Kindheit in den 70er Jahren mit Rechentechnik (so hieß das damals :D) zu tun. Hat mich immer interessiert, angefangen mit Lochkarten über Eigenbau-PC bis heute.
    Alles, was ich kann und weiß in dem Bereich, habe ich mit Learning-By-Doing erworben. Try&Error ist immer noch eine der besten Methoden um Ergebnisse dauerhaft zu speichern. :thumbup:

  • "OOP" problem

    • BugFix
    • 3. August 2012 um 16:42

    Zeile 93:

    [autoit]

    _ArrayAdd(.NODES, $oNode)

    [/autoit]

    kann nicht funktionieren. AutoIt erwartet die Referenz auf ein Array. Du lieferst mit .NODES jedoch einen Ausdruck.
    Du mußt das Array auslesen, den Wert hinzufügen und dann das Array zurückschreiben:

    [autoit]

    Func addNode(ByRef $oParent, $Type, $Name, $Page)
    Local $oNode = 0
    With $oParent
    $oNode = createNode($oParent, .ID, $Type, $Name, $Page)
    Local $aTmp = .NODES
    _ArrayAdd($aTmp, $oNode)
    .NODES = $aTmp
    EndWith
    EndFunc ;==>addNode

    [/autoit]

    Diese Zeile verwirrt mich:

    [autoit]

    _AutoItObject_AddProperty($oNode, "NODES[10]", $ELSCOPE_PUBLIC)

    [/autoit]

    Wieso NODES[10]?? Das ist nur der Name für die Property, auch wenn du da eckige Klammern drumsetzt wird kein Array draus.

  • Fehlermeldungen unterdrücken und Script einfach beenden

    • BugFix
    • 3. August 2012 um 14:29
    Zitat von Funprogrammer

    Gibt es eine Möglichkeit, bei einem Fehler das Script ohne der Anzeige von Fehlermeldungen, einfach zu beenden?


    Es gibt keine Möglichkeit allgemein zu sagen: Bei Fehler ==> Ende
    Du mußt schon hinter jede mögliche Fehlerquelle die Zeile einfügen:

    [autoit]

    If @error Then Exit

    [/autoit]

    Voraussetzung: Der entsprechende Funktionsaufruf liefert einen Fehler.

  • ListView - mehrere Zeilen in Zelle => Auf welche Zeile geklickt?

    • BugFix
    • 3. August 2012 um 13:59

    Also ich finde sowas übersichtlich in etwa der Form

    Code
    SPALTE 1 | SPALTE 2
    - Bild - | Allgemeine Bezeichnung

    Und mit Klick auf Bezeichnung oder auch Bild, ist egal, blendest du ein Child in Listenform mit Detaileinträgen ein. Da erfolgt dann die Auswahl.
    Alternativ machst du für jede Version eine eigene Spalte.

  • ListView - mehrere Zeilen in Zelle => Auf welche Zeile geklickt?

    • BugFix
    • 3. August 2012 um 13:29
    Zitat von veronesi

    Nun habe ich mir überlegt dass ich evtl. in EINER ZELLE mehrere Zeilen Text einbringen könnte.


    In einem Standard-Listview sind m.W. keine mehrzeiligen (Sub)Item möglich. Insofern stellt sich die Frage gar nicht mehr.

  • RGB Farbcode über HSL Farbcode verändern (Sättigung & Helligkeit)

    • BugFix
    • 3. August 2012 um 10:58

    Und falls du noch andere Farbräume benötigst, schau mal hier.

  • Neuanschaffung: Drucker

    • BugFix
    • 2. August 2012 um 18:31

    Das kommt immer drauf an, was und wie oft du drucken willst.
    Druckst du nur 2-3 mal im Monat was Farbiges ist ein Tintenstrahldrucker absoluter Schwachsinn. Da du dann mi dem Reinigen der Düsen mehr Tinte verballerst als mit Drucken. Und sehr wahrscheinlich ist nach spätestens 6 Monaten der Druckkopf eingetrocknet. Den zu reinigen ist fast unmöglich, die Teile sind ganz bescheiden verbaut.
    Also bei wenig Drucken führt kein Weg am Laser vorbei. Insgesamt gesehen sparst du damit im Vergleich zum Tintenstrahler. Allerdings sind die Anschaffungskosten für Laserprinter mit top Fotodruck noch etwas intensiv.

    Und wenn es geht - nimm kein Multifunktionsgerät. Ist eins kaputt, ist gleich alles Schrott. :whistling:

  • Zeile in XML-Datei mittels AutoIT-Fenster ändern

    • BugFix
    • 1. August 2012 um 23:08

    Lies mal die Hilfe zu den Befehlen. ;)

    Du brauchst nur:

    [autoit]

    _ReplaceStringInFile('Pfad_Deiner_Datei", 'SUCHSTRING', 'ERSETZSTRING')

    [/autoit]
  • ini-Datei sortieren

    • BugFix
    • 31. Juli 2012 um 20:11

    Ich habe das auch mal gemacht, um Spielstände zu speichern. Da brauchte ich auch eine Sortierung beim Speichern, damit beim Laden der ganzen Sektion in ein Array sofort die korrekte Reihenfolge existierte.
    Ich suche mal nach dem Skript.

  • Daten aus CSV Datei in ein Array Übernehmen

    • BugFix
    • 31. Juli 2012 um 10:52

    Kannst du die Erstellung der CSV-Datei nicht beeinflussen?
    Dein Beispiel liefert einen recht wilden Mix von Daten, die mal in Anführungszeichen eingefasst sind und mal nicht. Hier sollte eigentlich gelten: Alles oder nichts.
    Da in der Überschrift alle Feldnamen in Anführungszeichen eingefasst sind leitet sich daraus eigentlich auch die Bewertung des Dateiinhaltes ab. Also alles mit Anführungszeichen. Somit arbeitest du bereits mit einer fehlerhaften Datei.
    Ich verwende allerdings in CSV-Dateien niemals Anführungszeichen, da diese Dateien perse als Text behandelt werden ist eine Stringeinfassung eigentlich sinnfrei.

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™