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

  • Schalter in einer Funktion

    • BugFix
    • 19. Juli 2009 um 20:38
    Zitat von emeuv

    dies aber ohne Globale Variable.


    Meines Erachtens nicht möglich. Aber warum willst du unbedingt eine Globale Variable vermeiden.

  • Projektidee: AutoIT Setup Builder

    • BugFix
    • 19. Juli 2009 um 20:30
    Zitat von Deepred

    Was ist denn Gobby, wenn ich mal fragen darf? :) Sowas wie ein Workspace?


    Guckst du: Gobby

  • Erste Schritte

    • BugFix
    • 19. Juli 2009 um 17:09

    Ich weiß nicht, welche Version du von TrueImage hast. Schau mal ob unter \Programme\Acronis die Datei "TrueImageCmd.exe" vorhanden ist. Falls ja - damit kannst du per Kommandozeilenaufruf Images erstellen. Das läßt sich gut automatisieren.

  • Erste Schritte

    • BugFix
    • 19. Juli 2009 um 17:01

    Acronis ist nicht für Send/Controlsend geeignet. Würde ich bei einem Imageprogramm eh tunlichst vermeiden.
    Zumindest bei den Versionen, die mir vorliegen, werden keine Windows-Ctrl verwendet.

  • Einen Bot ertsllen

    • BugFix
    • 19. Juli 2009 um 16:36

    Immer wieder dasselbe. :cursing:
    Schau mal hier: Forenregeln

    [Thread Closed]

  • Frage zum Abspeichern mit FileSaveDialog

    • BugFix
    • 19. Juli 2009 um 14:10
    Zitat von RapIt

    Aber wie bekomme ich es hin, dass er dann wirklich am Speicherort eine TXT datei erstellt und den Inhalt des Edit-Fensters hineinschreibt?

    Der FileSaveDialog gibt dir Pfad\Dateinamen zurück unter dem die Datei gespeichert werden soll.
    Also:

    [autoit]

    ; Pfad festlegen
    $path = FileSaveDialog(...)
    ; Inhalt lesen und speichern
    $inhalt = GUICtrlRead($edit)
    $fh = FileOpen($path, 1) ; zum Schreiben öffnen
    FileWrite($fh, $inhalt)
    FileClose($fh)

    [/autoit]
  • Eigene Console

    • BugFix
    • 19. Juli 2009 um 14:05

    Hi,
    hier mal ein Skriptbsp., wie man ein eigenes Consolenfenster erstellt und in die Console schreibt bzw. aus ihr liest.

    Wichtig! Läuft nur wenn es kompiliert wurde!
    [autoit]

    #cs
    Funktioniert nur, wenn es kompiliert wird!
    #ce

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

    Local Const $FOREGROUND_BLUE = 0x1
    Local Const $FOREGROUND_GREEN = 0x2
    Local Const $FOREGROUND_RED = 0x4
    Local Const $BACKGROUND_BLUE = 0x10
    Local Const $BACKGROUND_GREEN = 0x20
    Local Const $BACKGROUND_RED = 0x40
    Local Const $BACKGROUND_INTENSITY = 0x80
    Local Const $BACKGROUND_SEARCH = 0x20
    Local Const $FOREGROUND_INTENSITY = 0x8
    Local Const $FOREGROUND_SEARCH = 0x10
    Local Const $ENABLE_LINE_INPUT = 0x2
    Local Const $ENABLE_ECHO_INPUT = 0x4
    Local Const $ENABLE_MOUSE_INPUT = 0x10
    Local Const $ENABLE_PROCESSED_INPUT = 0x1
    Local Const $ENABLE_WINDOW_INPUT = 0x8
    Local Const $ENABLE_PROCESSED_OUTPUT = 0x1
    Local Const $ENABLE_WRAP_AT_EOL_OUTPUT = 0x2
    Local Const $STD_OUTPUT_HANDLE = -11
    Local Const $STD_INPUT_HANDLE = -10
    Local Const $STD_ERROR_HANDLE = -12
    Local Const $INVALID_HANDLE_VALUE = -1

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

    Global $hConsoleOutput, $hConsoleInput

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

    ; Console starten und Handle für In / Out holen
    If AllocConsole() Then
    $hConsoleOutPut = GetStdHandle($STD_OUTPUT_HANDLE)
    If $hConsoleOutPut = $INVALID_HANDLE_VALUE Then MsgBox(0, 'Fehler', "STDOUT-Handle nicht möglich")
    $hConsoleInPut = GetStdHandle($STD_INPUT_HANDLE)
    If $hConsoleOutPut = $INVALID_HANDLE_VALUE Then MsgBox(0, 'Fehler', "STDIN-Handle nicht möglich")
    Else
    MsgBox(0, 'Fehler', "Console konnte nicht erstellt werden!")
    EndIf

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

    ; Titel setzen und Textattribute gelbe Schrift auf blauem Grund
    SetConsoleTitle('Meine Test-Console')
    If @error Then MsgBox(0, 'Fehler', 'Titel fehlgeschlagen')
    SetConsoleTextAttribute($hConsoleOutPut, BitOR($FOREGROUND_RED,$FOREGROUND_GREEN,$FOREGROUND_INTENSITY,$BACKGROUND_BLUE))
    If @error Then MsgBox(0, 'Fehler', 'Attribute fehlgeschlagen')

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

    ; Text in Console schreiben
    ConsoleWriteLine("Hallo Welt!")
    If @error Then MsgBox(0, 'Fehler', 'Schreibe Zeile fehlgeschlagen')
    _ConsoleWrite("Bitte gib deinen Namen ein: ")
    If @error Then MsgBox(0, 'Fehler', 'Schreiben fehlgeschlagen')

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

    ; Text aus Console in MsgBox verwenden
    MsgBox(0, '', "Dein Name: " & ConsoleReadLine() )

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

    ; alles schließen
    CloseHandle($hConsoleOutPut)
    CloseHandle($hConsoleInPut)
    FreeConsole()

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

    #region - Console Funcs

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

    Func AllocConsole()
    Local $ret = DllCall("kernel32", "long", "AllocConsole")
    If $ret[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

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

    Func FreeConsole()
    DllCall("kernel32", "long", "FreeConsole")
    EndFunc

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

    Func CloseHandle($hObject)
    DllCall("kernel32", "long", "CloseHandle", "long", $hObject)
    EndFunc

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

    Func GetStdHandle($nStdHandle)
    Local $ret = DllCall("kernel32", "long", "GetStdHandle", "long", $nStdHandle)
    If $ret[0] = 0 Then Return SetError(1,0,0)
    Return $ret[0]
    EndFunc

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

    Func WriteConsole($hConsoleOutPut, $sText)
    Local $lpBuffer = DllStructCreate("char[" & StringLen($sText) & "]"), $lpNumberOfCharsWritten = DllStructCreate('int')
    DllStructSetData($lpBuffer, 1, $sText)
    Local $ret = DllCall("kernel32", "long", "WriteConsoleA", "long", $hConsoleOutPut, "ptr", DllStructGetPtr($lpBuffer), _
    "long", StringLen($sText), "ptr", DllStructGetPtr($lpNumberOfCharsWritten), "long", 0)
    If $ret[0] = 0 Then Return SetError(1,0,0)
    Return $ret[0]
    EndFunc

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

    Func ConsoleWriteLine($sInput)
    _ConsoleWrite($sInput & @CRLF)
    If @error Then Return SetError(1,0,0)
    EndFunc

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

    Func _ConsoleWrite($sInput)
    WriteConsole($hConsoleOutPut, $sInput)
    If @error Then Return SetError(1,0,0)
    EndFunc

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

    Func ReadConsole($hConsoleInPut, $ConsoleReadLine)
    Local $lpBuffer = DllStructCreate("char[80]"), $lpNumberOfCharsRead = DllStructCreate('int')
    DllStructSetData($lpBuffer, 1, $ConsoleReadLine)
    Local $ret = DllCall("kernel32", "long", "ReadConsoleA", "long", $hConsoleInPut, "ptr", DllStructGetPtr($lpBuffer), _
    "long", StringLen($ConsoleReadLine), "ptr", DllStructGetPtr($lpNumberOfCharsRead), 'long', 0)
    If $ret[0] = 0 Then Return SetError(1,0,0)
    Return DllStructGetData($lpBuffer, 1)
    EndFunc

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

    Func ConsoleReadLine()
    Local $ZeroPos, $ConsoleReadLine = ''
    For $i = 0 To 79
    $ConsoleReadLine &= Chr(0)
    Next
    $ConsoleReadLine = ReadConsole($hConsoleInPut, $ConsoleReadLine)
    $ZeroPos = StringInStr($ConsoleReadLine, Chr(0))
    If $ZeroPos > 0 Then $ConsoleReadLine = StringLeft($ConsoleReadLine, $ZeroPos - 3)
    Return $ConsoleReadLine
    EndFunc

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

    Func SetConsoleTitle($lpConsoleTitle)
    Local $ret = DllCall("kernel32", "long", "SetConsoleTitleA", "str", $lpConsoleTitle)
    If $ret[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

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

    Func SetConsoleTextAttribute($hConsoleOutPut, $wAttributes)
    Local $ret = DllCall("kernel32", "long", "SetConsoleTextAttribute", "long", $hConsoleOutPut, "long", $wAttributes)
    If $ret[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

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

    #endregion - Console Funcs

    [/autoit]
  • Zeitfenster Im Browser erkennen ?!

    • BugFix
    • 19. Juli 2009 um 09:29
    Zitat von MoneyMike9813

    PS: Kommt mir bitte nicht mit irgendwelchen AGB's gewisser Paidmailer.
    Ich möchte dass programm nur interessehalber schreiben und weil ich es als eine schöne Herausforderung ansehe ;)

    Wenn dich die AGB's der Anbieter genausowenig interessieren, wie unsere Forenregeln, muß dir auch klar sein, dass es von uns keine Hilfe geben wird!

    [Thread Closed]

  • Frage zum Abspeichern mit FileSaveDialog

    • BugFix
    • 19. Juli 2009 um 09:25

    oder du schaust in die AutoIt-Hilfe:
    Appendix -- CLSIDs of Special Folders

  • Bild in Edit einfügen

    • BugFix
    • 18. Juli 2009 um 18:47

    Alternativ kannst du das Control auf einem Child-Window erstellen und diesen Fenster durchscheinend darstellen.

    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $GUImain = GUICreate('Main', 170, 200, -1, -1, Default, $GUI_WS_EX_PARENTDRAG)
    GUICtrlCreatePic(@Systemdir & "\oobe\images\merlin.gif", 10, 10, 150, 180)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    $GUIEdit = GUICreate("", 150, 180, 10, 20, $WS_POPUP, $WS_EX_MDICHILD, $GUImain)
    WinSetTrans($GUIEdit, "", 150)
    $Edit = GUICtrlCreateEdit('', 0, 10, 170, 190)

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

    GUISetState(@SW_SHOW, $GUIEdit)
    GUISetState(@SW_SHOW, $GUImain)

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]
  • Anfängerfrage

    • BugFix
    • 18. Juli 2009 um 13:24

    Alle anderen Fragen sind schon beantwortet. :D
    Du brauchst Notepad nicht automatisieren, sondern kannst die Datei direkt umwandeln. Nicht getestet, aber sollte laufen:

    [autoit]

    #Include <WinAPI.au3>
    Local $fh = FileOpen('UniCodeFile.txt', 32) ; Windows default mode UTF16 Little Endian
    Local $strUC = FileRead($fh)
    Local $len = StringLen($strUC) +1
    FileClose($fh)
    Local $tString = DllStructCreate("wchar[" & $len & "]")
    DllStructSetData($tString, 1, $strUC)
    Local $strANSI = _WinAPI_WideCharToMultiByte(DllStructGetPtr($tString))
    FileWrite(@ScriptDir & '\meineANSI.txt', $strANSI)

    [/autoit]
  • Komplexere Befehle nutzen.

    • BugFix
    • 18. Juli 2009 um 12:52

    Also die Registry-Befehle sind m.E. gut dokumentiert. Wenn es um das Verständnis bezüglich der Registry selbst geht, kannst du ja mal ein wenig googeln. Da findest du sicher gute Tuts.

    Zum Thema Dll:
    Ich habe mal im EN-Forum ein Tut dazu gesehen. Hab den Link aber nicht parat. Das war für den Anfang recht informativ.
    Ansonsten kann ich dir zu diesem Thema nur raten: Üben, Üben, nochmals Üben. Programmiere einfach mal bestehende Funktionen nach, indem du die Dll-Calls verwendest (z.B. StringLower, StringUpper etc.). Hier findest du eine gute Übersicht mit den Dll: Windows API Referenz
    Viel Erfolg, und wenn es irgendwo hakt - einfach fragen ;)

  • Traymenu seit dem läuft der script nichtmehr ?

    • BugFix
    • 18. Juli 2009 um 10:46

    Ah, da hatte ich mich vertan :rolleyes:
    FileInstall braucht ja die Quelle als reinen String. Das hier:

    [autoit]

    Func _Install ()
    For $i = 1 To 10
    DirCreate("C:\BS\PICCHANGE\" & $i)
    FileInstall($i & ".bmp", "C:\BS\PICCHANGE\1\" & $arBild[$i-1] )
    Next
    EndFunc

    [/autoit]

    geht also nicht (leider).
    DirCreate kannst du in der Schleife laufen lassen, aber FileInstall mußt du dann doch für jede Datei einen Befehl schreiben.

  • Traymenu seit dem läuft der script nichtmehr ?

    • BugFix
    • 18. Juli 2009 um 10:27

    Hi,
    ist jetzt nicht getestet - aber ich hab dein Skript erst mal gewaltig gekürzt. Den Aufruf zum Wallpaper wechseln habe ich an AdlibEnable vergeben ;)

    Spoiler anzeigen
    [autoit]

    Global Const $SPIF_SENDWININICHANGE = 0x2
    Global Const $SPIF_UPDATEINIFILE = 0x1
    Global Const $SPI_SETDESKWALLPAPER = 20
    Global $arBild[10]
    For $i = 0 To 9
    $arBild[$i] = "C:\BS\PICCHANGE\" & $i+1 & "\bild.bmp"
    Next
    Global $pos = 0

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

    #Include <Constants.au3>
    $size = FileGetSize("C:\BS\PICCHANGE\1\" & $arBild[0])
    If $size = 0 then _Install ()

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

    Func _Install ()
    For $i = 1 To 10
    DirCreate("C:\BS\PICCHANGE\" & $i)
    FileInstall($i & ".bmp", "C:\BS\PICCHANGE\1\" & $arBild[$i-1] )
    Next
    EndFunc

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

    Opt("TrayMenuMode",1) ; Standard Traymenüeinträge (Script pausieren/beenden) werden nicht angezeigt.

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

    $E = TrayCreateMenu("Einstellungen")
    $I = TrayCreateItem("Intervall", $E)
    $B = TrayCreateItem("Bilder Tauschen", $E)
    $AB = TrayCreateItem("About")
    $EX = TrayCreateItem("Beenden")

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

    TraySetState()
    AdlibEnable('_chgWallpaper', 300000)

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

    While 1
    $msg = TrayGetMsg()
    Switch $msg
    Case $AB
    Msgbox(64,"Über:","AutoIt3-Tray-Beispiel")
    Case $EX
    Exit
    EndSwitch
    WEnd

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

    Func _chgWallpaper()
    If $pos = 10 Then $pos = 0
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, _
    "uint", 0, "str", $arBild[$pos], "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    $pos += 1
    EndFunc

    [/autoit]

    Edit: Noch etwas gekürzt ;)

  • Schrift Größe im Editor

    • BugFix
    • 18. Juli 2009 um 09:54

    Oder einfach in der SciTE-Config anpassen:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • ListViewItem Inhalt auslesen

    • BugFix
    • 18. Juli 2009 um 00:20

    Bitte dran denken, die Funktionen der Listview-UDF erwarten das Handle, NICHT die ID. Auch wenn einige Funktionen mit der ID funktionieren, sollte man lieber gleich das Handle verwenden, erspart einiges an Fehlersuche.

  • ListViewItem Inhalt auslesen

    • BugFix
    • 17. Juli 2009 um 23:40
    Zitat von Dankeschön

    dass ich bei einem Button halt erkennen muss, auf welchen Eintrag die Person geklickt hat.


    Irgendwie verstehe ich kein Wort. Was denn für einen Button? Sehe in deinem Code keinen Button.

    Falls du wissen willst, welches das markierte Item im Listview ist, kannst du den Index mit _GUICtrlListView_GetSelectedIndices holen und den Inhalt mit _GUICtrlListView_GetItemText.

  • office2007

    • BugFix
    • 17. Juli 2009 um 14:32
    Zitat von L3viathan2142

    Die kann man nicht kaufen^^ :rofl: :rofl:
    Gibts nur für seehr große Unternehmen :D :D


    OT:
    Und die bekommen es geschenkt... :rofl:
    /OT

  • Toolbar mit eigenen Bildern

    • BugFix
    • 17. Juli 2009 um 14:25

    Mach es dir einfacher. Wandele die gewünschten Bilder in Icons.
    Dann kannst du mit _GUICtrlToolbar_SetImageList() alle Icon laden und in deiner Toolbar verwenden.

  • WSUS Status Abfragen???

    • BugFix
    • 17. Juli 2009 um 13:27

    Zwei Varianten:
    Alle Aufrufe in einer Schleife ausführen und
    1. Ergebnis umleiten in eine Datei, anhängend (BEFEHL /param >> ergebnis.txt) und anschließend alles auswerten, Log-File schreiben
    oder
    2. Ergebnis umleiten in eine Datei und sofort auswerten (würde ich bevorzugen, erleichtert das Regexen der Ausgabe), Log-File schreiben

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™