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

Beiträge von Friesel

  • Fenster "Benutzerkontensteuerung" per Autoit ausfüllen

    • Friesel
    • 5. Juli 2013 um 18:59

    Wenn man als Administrator angemeldet ist, sollte es für das Ausführen von Diskpart genügen, den Promt zu deaktivieren.
    Du kannst das durch Ändern des folgenden Schlüssels in der Registry vornehmen.

    UAC Promt ausschalten:

    Code
    Windows Registry Editor Version 5.00
    
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
    "ConsentPromptBehaviorAdmin"=dword:00000000


    UAC Promt einschalten:

    Code
    Windows Registry Editor Version 5.00
    
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
    "ConsentPromptBehaviorAdmin"=dword:00000005


    Entweder beides jeweils in eine Textdatei kopieren und als *.reg abspeichern (durch doppelklick auf die Datei dann jeweilige Aktion ausführen) oder in AutoIt folgenden Code benutzen:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    Opt("GUIOnEventMode", 1)

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

    GUICreate("UAC Steuerung", 285, 75)
    GUISetOnEvent(-3, "_Exit")
    GUICtrlCreateButton("UAC Promt ausschalten", 10, 10, 130)
    GUICtrlSetOnEvent(-1, "_UACOff")
    GUICtrlCreateButton("UAC Promt einschalten", 145, 10, 130)
    GUICtrlSetOnEvent(-1, "_UACon")
    GUICtrlCreateButton("Beenden", 10, 40, 265)
    GUICtrlSetOnEvent(-1, "_Exit")

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

    GUISetState()

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

    While Sleep(1000)
    WEnd

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

    Func _UACOff()
    $bUACOff = RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", "REG_DWORD", "00000000")
    Switch $bUACOff
    Case 1
    MsgBox(48, "Erfolg!", "UAC Promt wurde deaktiviert!")
    Case Else
    MsgBox(16, "Fehler!", "Zugriff auf Registry fehlgeschlagen!")
    EndSwitch
    EndFunc ;==>_UACOff

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

    Func _UACon()
    $bUACOff = RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", "REG_DWORD", "00000005")
    Switch $bUACOff
    Case 1
    MsgBox(48, "Erfolg!", "UAC Promt wurde aktiviert!")
    Case Else
    MsgBox(16, "Fehler!", "Zugriff auf Registry fehlgeschlagen!")
    EndSwitch
    EndFunc ;==>_UACon

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Zum Testen kannst du dieses Skript nach Deaktivierung des Promts einfach nochmals starten und es sollte keine Rückfrage mehr kommen.

    Sollte das nicht genügen, mußt du noch den Wert "EnableLUA" im selben Schlüssel von 1 auf 0 stellen, aber dann ist meines Wissens nach ein Neustart erforderlich...
    Weitere Einstellungen findest du in diesem Artikel

    Sanfte Grüße :D

  • Elemente in HTML-Dokument finden und auslesen (DOM?)

    • Friesel
    • 3. Juli 2013 um 00:10

    Wenn du selber was "basteln" willst solltest du dir mal folgende Befehle ansehen:

    _StringBetween -> Eignet sich meiner Meinung nach am besten, um Links usw. aus ner HTML-Datei rauszuoperieren (Achtung: Rückgabewert ist ein Array)
    StringRegExp -> RegEx ist allerdings eine Wissenschaft für sich. Das erfordert einiges an Einarbeitungszeit.

    Viel Erfolg...

    *edit*
    sehe gerade, dass du schon mit RegEx "rumgespielt" hast. Nuja, wie auch immer, vieleicht hilft dir _StringBetween ja weiter...

  • Koordinaten relativ zu einem bestimmten control

    • Friesel
    • 1. Juli 2013 um 15:15
    Zitat von Trolleule1337

    Kann mir jemand erklären was das Beispiel von BugFix soll????? Denn wenn ich das mit ByRef jetzt richtig verstanden habe, macht das nur bei einer Paramterübergabe zwischen zwei Funktionen Sinn...

    Das Beispiel kannte ich noch nicht. Gefällt mir aber, wenn man auf diese Art lokale Variablen in mehreren Funktionen benutzen kann.

    ByRef kannte ich bisher nur so, daß man es benutzt, wenn eine Variable eine besonders große Datenmengen enthält, und dann nicht der gesammte Inhalt in eine neue Variable kopiert werden muß, was bei einer "normalen" Parameterübergabe geschieht.
    Zitat aus der Hilfe:
    [...] ByRef ist zu bevorzugen wenn eine Funktion große Mengen an Daten beinhaltet wie zum Beispiel ein großen Array. [...]

    Zitat von Trolleule1337

    Andy: Aus irgendwelchen nicht zu meinem Problem passenden Funktionen die rauszusuchen, die am ähnlichsten ist und dann irgendwelche programmiertechnischen Klimmzüge zu machen ist alles andere als ein Ausdruck von "Perfektion"!

    Was meinst du damit?


    Danke

    Also ich habe das so verstanden:
    Wenn eine Funktion nicht existiert, dann schreibe ich mir selbst eine, und fange nicht an, umständlich vorhandene Funktionen "umzubiegen"...
    ...und dem kann ich nur 100% zustimmen :thumbup:

  • Koordinaten relativ zu einem bestimmten control

    • Friesel
    • 30. Juni 2013 um 23:47
    Zitat von Trolleule1337

    Wie du siehst verwende ich keine globale Variable...


    Variablen, die außerhalb von Funktionen deklariert werden sind immer Global.
    Da hilft es auch nicht, daß du in den Zeilen 41, 42 und 46 ein Local voranstellst.
    -> Locale Variable im globalen Bereich deklariert = globale Variable

  • Scrollbalken auslesen

    • Friesel
    • 29. Juni 2013 um 09:56

    Puh! Da hab ich ja nen ziemlichen Wust an Code ausgelassen ;(
    Werde mir das später mal genauer zu Gemüte führen.
    Aber ich muss trotzdem fragen; was spricht gegen meinen "unsauberen" Code? Ist Windows so nachsichtig? Hab ich einfach nur "Glück" gehabt? Immerhin funktionierts ja scheinbar genauso gut...

    Das mit den Präfixen klingt ganz einleuchtend, was du schreibst. Vieleicht werde ich meine Notation nochmal überdenken :P

  • Scrollbalken auslesen

    • Friesel
    • 29. Juni 2013 um 08:08

    Danke für's Korrekturlesen :thumbup:

    Werde das gleich abändern. Wegen der Präfixe werde ich mich aber an das Tutorial von Chesstiger halten, wonach Control IDs den Präfix $id haben sollten.
    Ich wollte mich auch eigendlich schon daran halten, aber im Schreibfluss bin ich in alte Gewohnheiten zurückgefallen :rolleyes:

    Bei WM_COMMAND weiss ich allerdings nicht genau, was du meinst. Könntest du das man näher erläutern?

  • Scrollbalken auslesen

    • Friesel
    • 29. Juni 2013 um 07:26

    Ob diese Lösung jetzt so sauber ist, weiß ich nicht aber sie funktioniert tadellos:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GuiConstants.au3>
    #include <GuiEdit.au3>
    #include <string.au3>

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

    Opt("GUIOnEventMode", 1)
    Opt("TrayIconHide", 1)

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

    $hGui = GUICreate("Disclaimer", 300, 500, Default, Default, BitOR($WS_CAPTION, $WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
    ; Schliessen ist jetzt nur durch Klick auf den Button möglich, der nur erscheint, wenn der Text bis ans Ende gescrollt wird.

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

    $idEdit = GUICtrlCreateEdit("", 0, 0, 300, 470, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY)) ;Edit Control besteht aus 34 Zeilen
    $idButton = GUICtrlCreateButton("Bitte aufmerksam Wort für Wort bis zum Ende lesen...", 5, 472, 290)
    GUICtrlSetOnEvent(-1, "_Exit")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUISetState()

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

    _FillEdit(120) ;Edit Control mit sinnlosem Zeug befüllen

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

    $iLength = _GUICtrlEdit_GetLineCount($idEdit) - 34 ;Anzahl aller Zeilen Minus Zeilenanzahl des Edit controls
    ;ist dieser Wert am oberen Ende des Edit erreicht, befindet sich der Scrollbalken am unteren Ende
    If $iLength > 0 Then ;Funtionen nur registrieren, wenn der Text länger ist, als das Edit Control
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, "_CheckPosition", $hGui) ;Position wird überprüft, wenn LMB losgelassen wird
    GUIRegisterMsg($WM_COMMAND, "_CheckPosition") ;Registriert Mausrad, Bild auf/ab und wenn der Curser im Edit Control bewegt wird (unter anderem)
    Else
    GUICtrlSetState($idButton, $GUI_ENABLE) ;Button aktivieren, wenn nicht genügend Zeilen vorhanden sind
    GUICtrlSetData($idButton, "Jetzt hab ich's verstanden, Scheffe!")
    EndIf

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

    While Sleep(1000)
    WEnd

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

    Func _CheckPosition()
    Local $iPos = _GUICtrlEdit_GetFirstVisibleLine($idEdit)
    ConsoleWrite($iPos & "->" & $iLength & @CRLF)
    Switch $iPos
    Case $iLength
    GUICtrlSetState($idButton, $GUI_ENABLE)
    GUICtrlSetData($idButton, "Jetzt hab ich's verstanden, Scheffe!")
    Case Else ;kann man weglassen, wenn der User nur einmal bis zum Ende scrollen soll
    GUICtrlSetState($idButton, $GUI_DISABLE) ;Button wird nur angezeigt, wenn man sich am Ende des Textes befindet
    GUICtrlSetData($idButton, "Lies schneller! Du bist erst bei Zeile " & $iPos + 34)
    EndSwitch
    EndFunc ;==>_CheckPosition

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

    Func _FillEdit($iCount)
    Local $sDisclaimer
    For $i = 1 To $iCount
    $sDisclaimer &= StringFormat("Zeile Nr. %03s: BlaBla Rabarberkompott mit alles und scharf" & @CRLF, $i)
    Next
    $sDisclaimer = StringTrimRight($sDisclaimer, 2) ;abschliessendes @CRLF entfernen
    _GUICtrlEdit_SetText($idEdit, $sDisclaimer)
    EndFunc ;==>_FillEdit

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    Sanfte Grüße :D

  • Fenster mit Stil $WS_POPUP durch Klick auf Taskbar Icon minimieren?

    • Friesel
    • 28. Juni 2013 um 23:15

    Wie war das mit dem Wald und den vielen Bäumen? :wacko:

    Ich hatte mir die Stile alle angesehn und bei $WS_MINIMIZEBOX nicht mal ansatzweise drüber nachgedacht ihn zu benutzen, weil ja in der Hilfe steht, daß ein Fenster mit "Minimieren-Schaltfläche" erzeugt wird.
    Manchmal sollte man über den Tellerrand blicken und einfach alles ausprobieren :D

    Vielen Dank, mistespeed!


    Ps: Ich setzte den Threat noch nicht auf gelöst, falls jemand noch ne Idee wegen Schattenwurf und Minimieren-Animation für Popup-Fenser hat...

  • Fenster mit Stil $WS_POPUP durch Klick auf Taskbar Icon minimieren?

    • Friesel
    • 28. Juni 2013 um 22:17

    Wie der Titel schon sagt, suche ich nach einer Möglichkeit, ein Popup-Fenster, durch Klick auf dessen Taskbar Icon (nicht Tray Icon) zu minimieren.
    Leider habe ich nichts darüber finden können, wie man einen Klick auf das Taskbar Icon auswertet. Ich hoffe, hier hat jemand eine Lösung.
    Und wenn ich schon dabei bin, ich suche noch weitere Möglichkeiten, ein normales Fenster zu "simulieren", also Schattenwurf und Animation beim Minimieren. Gibt es da vieleicht einen DLL-Call oder sowas?
    Zum Schattenwurf habe ich mir gedacht, ein zweites, halb-transparentes Fenster in den Hintergrund zu setzen und mit WM_MOVE mit dem vorderen Fenster zu bewegen...

    Beispiel Skript zum "austoben":

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $hGui = GUICreate("Popup", Default, Default, Default, Default, $WS_POPUP + $WS_BORDER)
    $idClose = GUICtrlCreateButton("Fenster Schließen", 160, 180)
    GUICtrlSetOnEvent(-1, "_Exit")
    GUISetState()

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

    GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

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

    While Sleep(1000)
    WEnd

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

    Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    ConsoleWrite("$hWnd: " & $hWnd & " |$iMsg: " & $iMsg & " |$iwParam: " & $iwParam & " |$ilParam: " & $ilParam & @CRLF)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]


    Mit der Auswertung aus WM_NOTIFY kann ich nicht wirklich was anfangen. Ich habs aber trotzdem mal reingeschrieben.

    Sanfte Grüße :D

  • Bild in Script einfügen

    • Friesel
    • 1. Juni 2013 um 18:59

    Bitte korrigiert mich, wenn ich falsch liege, aber führt das Skript in Beitrag #7 nicht das ganze Prinzinp ad absurdum?
    Wenn man die Datei(en) im temp Speicher auf der Festplatte erzeugt, kann man doch gleich FileInstall nehmen. Nach meinem Verständnis kommt das aufs Selbe raus, oder nicht?

    Und noch ne weitere Frage: hat mal jemand die Performance gemessen und einen Unterschied zwischen FileInstall und der Methode von UEZ festgestellt? Ich meine jetzt die Performance zur Laufzeit, also das eingendliche Kopieren bzw Erstellen der Datei(en).

    *edit*
    Danke für die prompte Antwort, UEZ!
    Na dann isses ja eindeutig, was schneller ist 8o

  • In ListBox items/Einträge verschieben

    • Friesel
    • 31. Mai 2013 um 01:05
    Zitat von VinceA

    Mit Sleep (5000), wartet das Programm nun 5 Sekunden bis ein Event ausgelöst wird oder checkt es alle 5 Sekunden ob was passiert.?
    Kann man die 5000 verändern oder ist das eine Vorgabe?


    Setzt dochmal die Bruchstücke oben zu einem Skript zusammen, dann siehst du, dass es nicht so ist... :D

    Die Endlosschleife mußt du erstellen, da sonst das Programm sofort beendet wird. Die Dauer in Sleep ist beliebig. Wenn du Sleep aber weglässt, steigt die CPU-Last, weil das Programm ja dann unentwegt zwischen While und Wend "rotiert".
    Sobald einer der überwachten Events auftritt, reagiert das Programm darauf, daher OnEventMode :rock:


    *edit*
    Ups! Das Wichtigste für den GuiOnEventMode habe ich vergessen. Am Anfang muß dieser natürlich noch aktiviert werden mit:

    [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit]


    Ist oben in den "Bruchstücken" jetzt korrigiert...

    *edit²*
    "Überaschenderweise" findet man auch so einiges in der Hilfe :rofl:
    GUI-Referenz - GUI-Konzepte -> ganz unten: GUI-Ereignis-Modi
    GUI-Referenz - MessageLoop Modus
    GUI-Referenz - OnEvent Modus

  • In ListBox items/Einträge verschieben

    • Friesel
    • 30. Mai 2013 um 21:23
    Zitat von VinceA

    Da ich mich mit GUIOnEventMode noch nicht so auskenne [...]


    Da gibts eigendlich nicht allzuviel zu verstehen. Meiner Meinung nach sollte man sich aber unbedingt den OnEventMode angewöhnen, allein schon, weil man seine Programme viel übersichtlicher gestalten kann.

    1. Man erstellt eine Gui und weist bestimmten Events Funktionen zu:

    [autoit]

    Opt("GUIOnEventMode", 1)

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

    $wMain = GUICreate("")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") ;==> Die Funktion _Exit wird aufgerufen, sobald das "Schließen" Symbol des Fensters geklickt wurde

    [/autoit]


    2. Nun "füllt" man die Gui mit Controls wie z.B. Buttons:

    [autoit]

    $bBtn1 = GUICtrlCreateButton("Button 1", 100, 20)
    GUICtrlSetOnEvent(-1, "_Button1Fkn") ;==> Die Funktion _Button1Fkn wird aufgerufen, wenn "Button 1" gedrückt wird
    $bBtn2 = GUICtrlCreateButton("Button 2", 200, 20)
    GUICtrlSetOnEvent(-1, "_Button2Fkn") ;==> Die Funktion _Button2Fkn wird aufgerufen, wenn "Button 2" gedrückt wird

    [/autoit]


    3. Jetzt noch die Gui anzeigen lassen und in eine Endlosschleife gehn. Das Programm wartet nun, bis einer der Events ausgelöst wird:

    [autoit]

    GUISetState()

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

    While 1
    Sleep(5000)
    WEnd

    [/autoit]


    4. Dahinter (oder an beliebigen Stellen des Skripts) dann die einzelnen Funktionen erstellen:

    [autoit]

    Func _Button1Fkn()
    ;==> hier Event auswerten
    Beep(600, 100)
    EndFunc

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

    Func _Button2Fkn()
    ;==> hier Event auswerten
    Beep(1200, 100)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
    Zitat von VinceA


    Wie kann ich es machen das nur Einfach Auswahl möglich ist?
    Leider sind meine Versuche fehlgeschlagen es fehlerfrei hinzukriegen.


    Bitte schön:

    Spoiler anzeigen
    [autoit]

    #include <GuiListBox.au3>
    #include <ListboxConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $wMain = GUICreate("VerschiebIt mit AutoIt", 300, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    $lList = _GUICtrlListBox_Create($wMain, "", 0, 0, 240, 300);, $LBS_STANDARD + $LBS_EXTENDEDSEL + $WS_VSCROLL)
    $bBtnUp = GUICtrlCreateButton("Hoch", 245, 110, 50)
    GUICtrlSetOnEvent(-1, "_Move")
    $bBtnDown = GUICtrlCreateButton("Runter", 245, 150, 50)
    GUICtrlSetOnEvent(-1, "_Move")

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

    For $i = 1 To 30
    _GUICtrlListBox_AddString($lList, StringFormat("Zeile Nr. %02s und noch'n bisschen Text dazu", $i));==> StringFormat, damit's hübscher aussieht ;)
    Next

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

    GUISetState()

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

    While 1
    Sleep(5000)
    WEnd

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

    Func _Move()
    $curSel = _GUICtrlListBox_GetCurSel($lList)

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

    If @GUI_CtrlId = $bBtnUp Then
    If $curSel < 1 Then Return ;==> wenn die oberste Auswahl den Anfang der Liste erreicht hat
    $step = -1
    Else
    If $curSel = _GUICtrlListBox_GetCount($lList) - 1 Then Return ;==> wenn die unterste Auswahl das Ende der Liste erreicht hat
    $step = 1
    EndIf

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

    _GUICtrlListBox_SwapString($lList, $curSel, $curSel + $step)
    _GUICtrlListBox_SetCurSel($lList, $curSel + $step)
    EndFunc ;==>_Move

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]
  • _Singleton & Windows 8 funktioniert nicht?

    • Friesel
    • 30. Mai 2013 um 10:22

    Danke für die ausführliche Erklärung!
    So kurz und knapp, wie's in der Hilfe steht, hab ich die Erklärung dort nie so richtig verstanden.
    Da ich neulich ein ähnliches Problem hatte und mein Programm nach dem Entfernen der Dateiendung funktionierte, hab ich mir den Rest "zusammengereimt" ;)
    Sorry für die Fehlinfo... ?(

    Sollte ich meine falsche Antwort oben löschen, bzw. ändern oder alles so lassen ,wie es ist, um den Threat nicht zu verfälschen?

  • _Singleton & Windows 8 funktioniert nicht?

    • Friesel
    • 30. Mai 2013 um 07:10

    Das Makro @ScriptName enthält neben dem Skriptnamen auch die Dateiendung.
    Da der Befehl _Singleton aber nur den Dateinamen überprüft, muß die Endung noch entfernt werden:
    *Erklärung, siehe nächsten Beitrag von misterspeed...

    Spoiler anzeigen
    [autoit]

    ;==> im Nornalfall besteht die Endung aus 3 Zeichen Plus Punkt (.exe). Es genügt also, die letzten 4 Zeichen abzuschneiden
    $$singleton = StringTrimRight(@ScriptName, 4)
    ;==<

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

    ;==> für beliebige Dateiendungen (was eigendlich nicht vorkommen sollte) kann man folgenden RegEx Pattern benutzen
    $singleton = StringRegExpReplace(@ScriptName, "\.[a-zA-Z1-9]{1,}$","")
    ;==< KEINE Garantie auf 100%tige Trefferquote ;)

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

    ;==> die Variable $singleton dann einfach in die If/Then Abfrage einbinden

    [/autoit]
  • In ListBox items/Einträge verschieben

    • Friesel
    • 30. Mai 2013 um 06:48

    Meines Wissens ist gibt es keinen Befehl zum Verschieben der Elemente.
    Daher muß kann man das Ganze "von Hand" machen 8)
    Einfach- und Mehrfachauswahl ist möglich; Auswahl bleibt nach dem Verschieben erhalten; Verschieben kann sofort wiederholt werden...

    Spoiler anzeigen
    [autoit]

    #include <GuiListBox.au3>
    #include <ListboxConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $wMain = GUICreate("VerschiebIt mit AutoIt", 300, 300)
    GUISetOnEvent(-3, "_Exit")

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

    $lList = _GUICtrlListBox_Create($wMain, "", 0, 0, 240, 300, $LBS_STANDARD + $LBS_EXTENDEDSEL + $WS_VSCROLL)
    $bBtnUp = GUICtrlCreateButton("Hoch", 245, 110, 50)
    GUICtrlSetOnEvent(-1, "_Move")
    $bBtnDown = GUICtrlCreateButton("Runter", 245, 150, 50)
    GUICtrlSetOnEvent(-1, "_Move")

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

    For $i = 1 To 30
    _GUICtrlListBox_AddString($lList, StringFormat("Zeile Nr. %02s und noch'n bisschen Text dazu", $i));==> StringFormat, damit's hübscher aussieht ;)
    Next

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

    GUISetState()

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

    While 1
    Sleep(5000)
    WEnd

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

    Func _Move()
    $multiSel = _GUICtrlListBox_GetSelItems($lList);==> gibt Array mit den Indizes der ausgewählten Elemente zurück
    If @GUI_CtrlId = $bBtnUp Then
    If $multiSel[1] < 1 Then Return ;==> wenn die oberste Auswahl den Anfang der Liste erreicht hat
    $first = 1
    $last = $multiSel[0] ;==> $multiSel[0] enthält die Anzahl der ausgewählen Elemente
    $step = -1
    Else
    If $multiSel[$multiSel[0]] = _GUICtrlListBox_GetCount($lList) - 1 Then Return ;==> wenn die unterste Auswahl das Ende der Liste erreicht hat
    $first = $multiSel[0]
    $last = 1
    $step = 1
    EndIf
    $swapString = _GUICtrlListBox_GetSelItemsText($lList)
    _GUICtrlListBox_BeginUpdate($lList)
    For $i = $first To $last Step -$step
    _GUICtrlListBox_DeleteString($lList, $multiSel[$i])
    _GUICtrlListBox_InsertString($lList, $swapString[$i], $multiSel[$i] + $step)
    _GUICtrlListBox_SetSel($lList, $multiSel[$i] + $step)
    Next
    _GUICtrlListBox_EndUpdate($lList)
    EndFunc ;==>_Move

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    P.s.: Bin noch Anfänger und habe mir noch keine einheitliche Notation für die Variablen angewöhnt, daher sind die Variablennamen ziemlich beliebig...
    Falls ein "Profi" das liest: welche Notation sollte man benutzen?

    *edit*
    i2c
    Au weia! Wie peinlich... :cursing:
    Den Befehl hab ich tatsächlich nicht gesehn. Soviel zu meiner Aussage, dass ich noch Anfänger bin :wacko:
    Nuja, vlt kann ich ja mit der Mehrfachauswahl trotzdem noch jemandem helfen...

  • Progress Bar ignoriert die Installation

    • Friesel
    • 28. Mai 2013 um 16:13
    Zitat von Maggus

    Was mich noch stört ist das nach dem Aufruf der msi kurz das Fenster aufpoppt bis es wieder beendet wurde.
    Ich habe die silent Installation, dieses MSI Paketes, nicht anders bewältigen können.
    Gibt es da evtl. noch eine andere Möglichkeit?


    Entweden bei Run das show_flag @SW_HIDE setzen, oder direkt _RunDOS nehmen...

  • HTTP Download und HTTP Proxy

    • Friesel
    • 27. Mai 2013 um 14:06

    Ehrlich gesagt, habe ich keine große Lust mich durch das Skript zu kämpfen... :S

    ...aber die WinHTTP UDF enthält auch den Befehl: _WinHttpSetDefaultProxyConfiguration(). Alledings weiß ich nicht genau, wie der zu benutzen ist. Da mußt du mal die Hilfe bemühen (WinHttp.chm ist im Paket enthalten).
    Die neueste Version gibt es HIER

    Ansonsten solltest du InetGet benutzen, denn der Befehl benutzt immer den in den Internet Optionen von Windows eingestellten Proxy.

  • Binäruhr

    • Friesel
    • 27. Mai 2013 um 13:12
    Zitat von James1337

    Hier auch nochmal ein Skript zur Verdeutlichung.


    Nichts für ungut, aber mit so nem Beispiel kann ich nicht viel anfangen :wacko:

    ...aber ich werd mich jetzt mal durch die Hilfe der GDIplus UDF wühlen, da ich damit noch nie "rumgespielt" habe...danke für den Hinweis.

    *edit*
    Mars: Danke, seh ich mir an...
    P.s.: wollte keinen neuen Beitrag erstellen, weil ich, wie schon gesagt, diesen Threat hier nicht "hijacken" will...daher *edit* ;)

  • Button mit transp. Icon und Farbänderung

    • Friesel
    • 27. Mai 2013 um 11:39

    Moin!

    Ich hab da mal was vorbereitet: 8)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GuiButton.au3>

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

    Opt("GUIOnEventMode", 1)

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

    GUICreate("Shift Buttons", 232, 120)
    GUISetOnEvent(-3, "_Exit")

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

    $lPressed = GUICtrlCreateLabel("@GUI_CtrlId des Buttons: ", 48, 80)

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

    $bIcon = GUICtrlCreateButton("Icon", 20, 30, 25, 25, $BS_ICON) ;==> $BS_ICON weglassen für Buttons mit Text UND Icon (siehe unten)
    _GUICtrlButton_SetImage($bIcon, "shell32.dll", -24) ;==> _GUICtrlButton_SetImage passt die grösse des Icons an, im Gegensatz zu GUICtrlSetImage
    GUICtrlSetOnEvent(-1, "_pressed")

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

    $bColor = GUICtrlCreateButton("Color", 50, 30, 35, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    GUICtrlSetOnEvent(-1, "_pressed")

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

    $bIconText = GUICtrlCreateButton(" Icon UND Text", 90, 30, 120, 25)
    _GUICtrlButton_SetImage($bIconText, "shell32.dll", -239)
    GUICtrlSetOnEvent(-1, "_pressed")

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

    GUISetState()

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

    While 1
    Sleep(5000)
    WEnd

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

    Func _pressed()
    Switch @GUI_CtrlId
    Case $bIcon ;==> es kann auch direkt die CtrlId des geklickten Buttons abgefragefragt werden, also hier 4
    Local Static $changeBtn4 ;==> "Static" bedeutet, dass der Wert der Variablen innerhalb der Funktion erhalten bleibt, ansonsten müsste $change als globale Variable angelegt werden
    If $changeBtn4 = 1 Then
    $changeBtn4 = 0
    _GUICtrlButton_SetImage($bIcon, "shell32.dll", -24)
    Else
    $changeBtn4 = 1
    _GUICtrlButton_SetImage($bIcon, "shell32.dll", -16783)
    EndIf
    Case $bColor ;==> es kann auch direkt die CtrlId des geklickten Buttons abgefragefragt werden, also hier 5
    Local Static $changeBtn5
    If $changeBtn5 = 1 Then
    $changeBtn5 = 0
    GUICtrlSetBkColor($bColor, 0x00FF00)
    Else
    $changeBtn5 = 1
    GUICtrlSetBkColor($bColor, 0xFF0000)
    EndIf
    Case $bIconText ;==> es kann auch direkt die CtrlId des geklickten Buttons abgefragefragt werden, also hier 6
    Local Static $changeBtn6
    If $changeBtn6 = 1 Then
    $changeBtn6 = 0
    _GUICtrlButton_SetImage($bIconText, "shell32.dll", -239)
    GUICtrlSetData($bIconText, " Icon UND Text")
    Else
    $changeBtn6 = 1
    _GUICtrlButton_SetImage($bIconText, "shell32.dll", -240)
    GUICtrlSetData($bIconText, " ICON und TEXT")
    EndIf
    EndSwitch
    GUICtrlSetData($lPressed, "@GUI_CtrlId des Buttons: " & @GUI_CtrlId)
    EndFunc ;==>_pressed

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Sollte ziemlich selbsterklärend sein, sonst frag halt... :rolleyes:

    *edit*
    netter Nick...wir passen gut zusammen :D

  • Binäruhr

    • Friesel
    • 27. Mai 2013 um 10:29
    Zitat von name22

    Nett ;). Man kann sowas natürlich noch verbessern, indem man Doublebuffering benutzt [...]


    Hi!
    Ich habe nicht vor, diesen Threat zu "hijacken", aber wie benutzt man Doublebuffering?

    Ist es z.B. möglich, die Darstellung des Fensters in folgendem "Programm" flüssiger zu gestalten?

    Spoiler anzeigen
    [autoit]

    HotKeySet("{ESC}", "_Exit")

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

    $moveit = GUICreate("", 0, 0, 0, 0)

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

    GUISetState()

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

    $start = 0
    $ende = 1000
    $step = 1

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

    while 1
    For $i = $start To $ende Step $step
    WinMove($moveit, "", 10 + ($i/2), 10 + ($i/4), $i * (16 / 9), $i)
    Next
    If $step = 1 Then
    $start = 1000
    $ende = 0
    $step = -1
    Else
    $start = 0
    $ende = 1000
    $step = 1
    EndIf
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    RedHead: Ja, ganz gut, deine Uhr :thumbup:

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™