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. Oscar

Beiträge von Oscar

  • Farbe von Eingabecursor-Markierung ändern

    • Oscar
    • 7. Dezember 2008 um 10:08

    Ah, das war das richtige Stichwort! Danke!

    Nach ein wenig rumprobieren kam das hier raus:

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

    Beispielscript:

    [autoit]


    #include<WinAPI.au3>
    #include<WindowsConstants.au3>
    GUICreate('test', 200, 80)
    GUISetBkColor(0x000000)
    GUICtrlCreateInput('beispieltext', 10, 10, 180, 20)
    GUICtrlSetBkColor(-1, 0xffaa66) ; die Farben hier in RGB-Form
    Global $aElements[2] = [$COLOR_HIGHLIGHTTEXT, $COLOR_HIGHLIGHT]
    Global $aColors[2] = [0xffffff, 0xff0000], $aSaveColors[2] ; die Farben hier in BGR-Form angeben!
    $aSaveColors[0] = _WinAPI_GetSysColor($COLOR_HIGHLIGHTTEXT)
    $aSaveColors[1] = _WinAPI_GetSysColor($COLOR_HIGHLIGHT)
    _WinAPI_SetSysColors($aElements, $aColors)
    GUISetState()
    Do
    Until GUIGetMsg() = -3
    _WinAPI_SetSysColors($aElements, $aSaveColors)

    [/autoit]

    So sieht das doch gleich viel besser aus. BugFix, vielen Dank! :thumbup:

    Edit: Achso, noch ein Hinweis (falls das noch jemand gebrauchen kann): die Farben sind nicht im RGB-Format, sondern müssen in BGR-Form angegeben werden.

  • noch ein neuer

    • Oscar
    • 7. Dezember 2008 um 09:38

    Für gewöhlich schreibt man in einer Uservorstellung zwar etwas mehr (Name, Alter, Hobbys oder so) über sich selbst, aber trotzdem herzlich willkommen! :)

  • Farbe von Eingabecursor-Markierung ändern

    • Oscar
    • 7. Dezember 2008 um 09:35

    Ich brauch mal eure Hilfe.
    Kann man irgendwie die Farbe der Markierung (im untenstehenden Beispiel das Grau) ändern?

    Screenshot:
    Crypting2.au3

    Beispielscript:

    [autoit]


    GUICreate('test', 200, 80)
    GUISetBkColor(0x000000)
    GUICtrlCreateInput('beispieltext', 10, 10, 180, 20)
    GUICtrlSetBkColor(-1, 0xffaa66)
    GUISetState()
    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • sicherheit von autoit-programmen

    • Oscar
    • 7. Dezember 2008 um 09:09

    Man kann das Passwort auch Stück für Stück im Quellcode zusammensetzen, z.B.:

    [autoit]


    $passwort &= 'pa'
    [...]
    $passwort &= 'ss'
    [...]
    $passwort &= 'wo'
    [...]

    [/autoit]

    Natürlich nicht mit einer Variablen, die $passwort heißt, sondern mit einer möglichst nichtssagenden Variablen.
    Und zum Schluss noch den Obfuscator drüberjagen. Dann wird es für einen, der nach dem Passwort sucht schon ziemlich langwierig.
    Aber 100% ist der "Schutz" natürlich trotzdem nicht.

  • Bin neu hier und habe direkt eine Frage

    • Oscar
    • 7. Dezember 2008 um 09:00

    Du hast das nicht so geändert, wie Du das da geschrieben hast ("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbaudio\Enum\usbstor"), oder?
    Das "usbstor" am Ende gibt es in dem Zweig nämlich nicht. Zumindest unter XP nicht.

    Aber unter "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbaudio\Enum" wird bei mir mein USB-Headset eingetragen, sobald es angeschlossen ist.
    Wenn das bei Dir nicht der Fall ist (vielleicht wegen Vista), dann weiß ich auch nicht weiter...

  • Bin neu hier und habe direkt eine Frage

    • Oscar
    • 6. Dezember 2008 um 22:45

    So, ich habe das gerade mal mit meinem USB-Headset getestet. Dieses Script hier sollte aber eine ID ausgeben:

    Spoiler anzeigen
    [autoit]


    Global $usbstor = 'HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbaudio\Enum'
    Global $gui_titel = 'test'
    _RegID()
    Func _RegID()
    MsgBox(0, $gui_titel, 'Falls das Headset momentan eingesteckt ist,' & @CRLF & 'bitte entfernen und danach auf [Ok] klicken!')
    $count = RegRead($usbstor, 'count')
    MsgBox(0, $gui_titel, 'Bitte jetzt das Headset einstecken!' & @CRLF & 'Er wird automatisch erkannt.', 5)
    While RegRead($usbstor, 'count') = $count
    Sleep(100)
    WEnd
    $count = RegRead($usbstor, 'count')
    $sID = RegRead($usbstor, $count - 1)
    ClipPut($sID)
    MsgBox(0, $gui_titel, 'Das Headset hat die ID= "' & $sID & '"' & @CRLF & 'Diese ID befindet sich nun in der Zwischenablage!')
    EndFunc

    [/autoit]

    Bitte die ID mal posten!

  • Rekursive Funktion per Button beenden

    • Oscar
    • 6. Dezember 2008 um 11:44

    Bugfix, da sind IMHO zwei Fehler drin. Zum einen funktionieren während eines Sleeps die GUI-Events nicht und zum anderen dauert die Funktion über 9 Sekunden (wird aber durch AdlibEnable alle 6 Sekunden aufgerufen).

    Edit: Der OnEvent-Mode ist dafür besser geeignet:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 454, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'End')
    $Button1 = GUICtrlCreateButton("Start", 128, 128, 65, 25, 0)
    GUICtrlSetOnEvent(-1, 'start')
    $Button2 = GUICtrlCreateButton("Stop", 128, 168, 65, 25, 0)
    GUICtrlSetOnEvent(-1, 'stop')
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $Enable = False
    While True
    If $Enable Then
    _Sleep(3000)
    Send("Test")
    Send("{NUMPADENTER}")
    _Sleep(3000)
    Send("test2")
    _Sleep(3000)
    Send("{NUMPADENTER}")
    EndIf
    Sleep(10)
    WEnd

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

    Func End()
    Exit
    EndFunc

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

    Func Start()
    $Enable = True
    EndFunc

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

    Func Stop()
    $Enable = False
    EndFunc

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

    Func _Sleep($ms)
    Local $timer = TimerInit()
    While TimerDiff($timer) < $ms
    Sleep(10)
    WEnd
    EndFunc

    [/autoit]

    Hoffentlich wird's nicht wieder nur ein Bot... :S

  • ClipboardMemo

    • Oscar
    • 6. Dezember 2008 um 08:18

    Ja, stimmt! Einmal reicht. :)

    Es gibt eine neue Version (siehe Post #1).

  • Inetget Ordner Herunterladen?

    • Oscar
    • 6. Dezember 2008 um 07:10

    Wenn Du eine neue Version auf den Server packst, dann schreib doch in die Datei ("update.txt") zusätzlich alle neuen Dateien rein, dann weiß Dein Programm, welche Dateien gedownloadet werden müssen:

    [autoit]


    $test = FileReadLine("update.txt", 0)
    If @error = -1 Then
    InetGet("http://padmak.kilu.de/update/update.txt", "update.txt")
    EndIf
    InetGet("http://padmak.kilu.de/update/update.txt", "update" & @MDAY & ".txt")
    $file = FileReadLine("update.txt", 0)
    $file1 = FileReadLine("update" & @MDAY & ".txt", 0)
    If $file = $file1 Then
    MsgBox(0, "Aktuell", "Ihr Programm ist auf dem Neuesten Stand")
    Else
    MsgBox(0, "Nicht Aktuell", "Ihr Programm ist veraltet.")
    $hFile = FileOpen("update" & @MDAY & ".txt", 0)
    FileReadLine($hFile) ; erste Zeile enthält die Programmversion, überspringen
    While True
    $sLine = FileReadLine($hFile)
    If @error Then ExitLoop
    InetGet("http://padmak.kilu.de/update/" & $sLine, $sLine)
    WEnd
    FileClose($hFile)
    EndIf

    [/autoit]

    und die update.txt-Datei müsste dann in etwa so aussehen:

    Code
    1.0.0.0
    programm.exe
    programm.ico
    beschreibung.txt
    irgendwas.dll

    In der ersten Zeile die Versionsnummer und in darunterliegenden Zeilen jeweils eine der neuen Dateien.

  • _GUICtrlIpAddress_Create erscheint auf allen Tabs

    • Oscar
    • 6. Dezember 2008 um 06:55

    Stimmt, habe das gerade getestet! Und das betrifft wohl alle Funktionen aus den UDFs. Die wollen beim erstellen der GUI-Elemente alle ein Handle zu der GUI und somit bleiben TABs da außen vor.
    Sollte man in Zukunft vielleicht drauf achten, dass die UDFs nicht TAB-kompatibel sind. :(

  • Bin neu hier und habe direkt eine Frage

    • Oscar
    • 6. Dezember 2008 um 06:27

    Hallo und herzlich willkommen hier im Forum!

    Bei Deinem Problem kann ich evtl. helfen. Teste doch mal dieses Script und poste, ob dort eine ID zurückgegeben wird:

    [autoit]


    Global $usbstor = 'HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbstor\Enum'
    Global $gui_titel = 'test'
    _RegID()
    Func _RegID()
    MsgBox(0, $gui_titel, 'Falls das Headset momentan eingesteckt ist,' & @CRLF & 'bitte entfernen und danach auf [Ok] klicken!')
    $count = RegRead($usbstor, 'count')
    MsgBox(0, $gui_titel, 'Bitte jetzt das Headset einstecken!' & @CRLF & 'Er wird automatisch erkannt.', 5)
    While RegRead($usbstor, 'count') = $count
    Sleep(100)
    WEnd
    $count = RegRead($usbstor, 'count')
    $sID = RegRead($usbstor, $count - 1)
    ClipPut($sID)
    MsgBox(0, $gui_titel, 'Das Headset hat die ID= "' & $sID & '"' & @CRLF & 'Diese ID befindet sich nun in der Zwischenablage!')
    EndFunc

    [/autoit]
  • ClipboardMemo

    • Oscar
    • 5. Dezember 2008 um 22:05

    Freut mich, dass es euch gefällt. :)

    Es gibt "leider" schon wieder eine neue Version (siehe Post #1).

  • ClipboardMemo

    • Oscar
    • 5. Dezember 2008 um 19:53

    Ich glaube, das lag an meiner WM_COMMAND-Routine. Habe das jetzt anders gelöst und hoffe mal, dass das so stabiler läuft.
    Außerdem gab es noch einen Bug bei der CopyTo-Funktion. Falsche Parameter-Übergabe. :rolleyes:

  • ProcessWait bzw. ProcessWaitClose wie "verODERN"

    • Oscar
    • 5. Dezember 2008 um 19:02

    Ja, das funktioniert auch!
    :)

    Edit: Wobei ja eigentlich die While...WEnd-Schleife besser ist, da bereits am Schleifenanfang geprüft wird und so die Schleife u.U. gar nicht durchlaufen werden muss (spart in dem Fall die 200 ms Wartezeit, falls bereits ein Browserfenster offen ist):

    [autoit]


    While ProcessExists('firefox.exe') + ProcessExists('iexplore.exe') + ProcessExists('opera.exe') = 0
    Sleep(200)
    WEnd

    [/autoit]
  • ProcessWait bzw. ProcessWaitClose wie "verODERN"

    • Oscar
    • 5. Dezember 2008 um 18:55

    Na dann so:

    [autoit]


    Do
    Sleep(200)
    Until ProcessExists('firefox.exe') + ProcessExists('iexplore.exe') + ProcessExists('opera.exe') <> 0

    [/autoit]
  • ProcessWait bzw. ProcessWaitClose wie "verODERN"

    • Oscar
    • 5. Dezember 2008 um 18:37

    Nein, so wird das nix!

    Das musst Du in einer Schleife abfragen. Am besten mit ProcessExists.

  • ClipboardMemo

    • Oscar
    • 5. Dezember 2008 um 15:54

    Version: 2.0 ( 11.12.08 )

    Dieses Programm sammelt alle Texte aus der Zwischenablage in einem Editfeld. Sobald also der Benutzer einen Text markiert und [STRG]+[code=c] drückt, wird der Text auch in das Editfeld übernommen (angehängt).
    Zusätzlich bietet das Programm noch die Möglichkeit die gesammelten Texte abzuspeichern, sowie Dateien (deren kompletter Name & Pfad sich im Editfeld befindet) zu kopieren.

    Weitere Eigenschaften:
    - Fenster ist in der Größe veränderbar
    - Die Position und Größe des Fensters werden in einer Inidatei gespeichert, sodass das Fenster beim nächsten Start wieder genau so geöffnet wird, wie man es beendet hat.
    - Das Fenster dockt am Bildschirmrand an.
    - Der Inhalt des Editfeldes wird automatisch in einer Datei (autosave.txt) gespeichert und bei einen Programm-Neustart daraus wiederhergestellt.
    - Man kann im Traymenü mit "Settings/Start with Windows" eine Verknüpfung im Autostart anlegen. Beim Autostart wird das Programm minimiert gestartet!
    - Beim Klick auf den Schließen-Button bzw. drücken von [ALT]+[x] wird das Programm nicht beendet, sondern in die Trayleiste minimiert.
    - Zum Beenden des Programms gibt es den Hotkey [ALT]+[e] sowie einen Eintrag im Traymenü.

    Screenshot:
    ClipboardMemo-Screenshot.png

    Im ZIP-Archiv befindet sich das Script, die Icons und die kompilierte Exe.

    Fehler und/oder Verbesserungsvorschläge bitte melden! :)

    ( Version 1.1 ) Mir ist gerade selbst eine Verbesserung eingefallen. Es gibt im TotalCommander die Möglichkeit Dateien zu markieren und dann im Menü "Markieren" den Eintrag "Kopiere Namen mit Pfad in die Zwischenablage" auszuwählen. Und wenn mein Programm jetzt Dateipfade erkennt, bietet es die Möglichkeit alle Dateien, deren Dateipfad sich im Editfeld befindet, zu einem auszuwählenden Ordner zu kopieren. So kann man Dateien aus verschiedenen Verzeichnissen in ein gemeinsames Zielverzeichnis kopieren. :)

    ( Version 1.2 ) Ein paar kleine Bugs beseitigt.

    ( Version 1.3 ) Es gab noch einen Bug beim schließen des FileSelectFolders. Außerdem gibt es jetzt im Traymenü unter "Settings" die Möglichkeit das überschreiben beim "Dateien kopieren" einzustellen. Und die neuen Einträge von der Zwischenablage werden jetzt immer unten angefügt, auch wenn man den Cursor irgendwo weiter oben in das Editfeld setzt.

    ( Version 1.4 ) Das Programm kann jetzt nur noch einmal gestartet werden. Außerdem gibt es nun die Möglichkeit den Inhalt des Editfeldes wieder zurück in die Zwischenablage zu kopieren. Und wenn das Programm in den Tray minimiert ist, kann man es jetzt mit einem Doppelklick auf das Trayicon wieder anzeigen lassen.

    ( Version 1.5 ) Die Toolbarleiste gefiel mir nicht so, weshalb ich sie durch Buttons ersetzt habe (siehe Screenshot). Da funktioniert wenigstens auch der OnEvent-Mode.

    ( Version 1.6 ) Hotkey zum beenden auf [ALT]+[e] sowie den Hotkey "MinimizeToTray" auf [ALT]+[x] geändert. Die Icons befinden sich nun in der Datei "icons.dll". Test auf "\" am Ende von @ScriptDir, damit das Programm auch im Hauptpfad funktioniert.

    ( Version 1.7 ) Wenn man im Explorer eine oder mehrere Datei(en) ins Clipboard kopiert, wird nun der Pfad zu der Datei aufgenommen. So klappt das "Dateien kopieren" nicht nur mit dem TotalCommander.

    ( Version 1.8 ) Man kann nun auch Verzeichnisse in das Edit aufnehmen, die dann bei "Copy Files" komplett (inkl. Dateien und Unterverzeichnisse) in das Zielverzeichnis kopiert werden. Die Overwrite-Settings gelten auch hierfür.

    ( Version 1.9 ) Man kann im Traymenü mit "Settings/Start with Windows" eine Verknüpfung im Autostart anlegen. Beim Autostart wird das Programm minimiert gestartet!

    ( Version 2.0 ) Andocken des Fensters am Bildschirmrand. Abspeichern des Editinhaltes in eine Datei (autosave.txt), damit der Inhalt einen Programm-Neustart übersteht.

    Dateien

    ClipboardMemo.zip 27,82 kB – 328 Downloads
  • Hiho

    • Oscar
    • 4. Dezember 2008 um 23:50

    Na dann, herzlich willkommen hier im Forum. :)

    Bist Du denn programmiertechnisch "vorbelastet"? Oder anders gefragt: schonmal programmiert?

  • InternetExplorer mit URL-Kontrolle

    • Oscar
    • 4. Dezember 2008 um 22:46

    Nein, in dem Browserfenster kannst Du die Seiten (zu denen die IP-Adressen in dem Array eingetragen sind) nicht aufrufen. Bei dem Script kannst Du z.B. nicht https://autoit.de/www.heise.de aufrufen.

  • Rausfinden ob das Win OS DE oder EN ist!

    • Oscar
    • 4. Dezember 2008 um 22:27

    Wenn dann vor dem Return, weil "Return" beendet die Funktion.
    Wenn Du also zu der jeweiligen Sprache noch etwas verändern willst, dann zwischen dem jeweiligen Case und dem Return.

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™