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

Beiträge von misterspeed

  • TrayCreateItem aktualisieren?

    • misterspeed
    • 9. August 2011 um 17:54
    [autoit]


    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    $myTray = TrayCreateItem("0 Sekunden")
    $exit = TrayCreateItem("Exit")
    $timer = TimerInit()

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

    do
    TrayItemSetText($myTray, Round(TimerDiff($timer)/1000,0) & " Sekunden")
    Until TrayGetMsg() = $exit

    [/autoit]

    Das Script pausiert allerdings solang man im Traymenü ist, d.h. eine live Aktualisierung ist wohl nicht möglich.

  • prüfen, ob Programm geöffnet ist

    • misterspeed
    • 9. August 2011 um 14:02

    Wie man an den Beschreibungstext direkt kommt weiss ich nicht, aber was du aufjedenfall machen kannst ist folgendes:

    1. processlist() ; um ein Array aller laufenden Prozesse unter dem gegebenen Namen zu bekommen
    2. Den Dateipfad anhand der PID bestimmen: http://www.autoitscript.com/forum/topic/64…s-from-its-pid/
    3. Jenachdem ob dir die Pfadangabe schon ausreicht oder nicht bist du fertig
    4. Brauchst du mehr infos kannst du nun noch die Dateiinformationen wie Versionsnummer etc. aus der exe Datei auslesen

  • Button caption bei Click ändern

    • misterspeed
    • 8. August 2011 um 15:38

    Für dein Problem würde aber auch stringsplit() ausreichen.
    Was die Hilfe angeht verstehe ich deine Frage nicht. Der Scite Editor liefert doch eine vollständige Hilfe inklusive aller enthaltenen UDF (User defined functions) mit, welche recht sinnvoll nach Aufgabenkategorie einsortiert sind:

    [Blockierte Grafik: http://i.imgur.com/QCxnx.png]

    Das ganze gibt es auch auf deutsch, siehe Downloadbereich links von diesem Thread: http://translation.autoit.de/autoitinfo/hil…nd-27_05_11.zip

  • GUI wird in Größe verändert, Werte gespeichert -> Neustart ohne Tab/Listview-Änderung

    • misterspeed
    • 7. August 2011 um 17:35

    Du brauchst die geänderten Werte der Controls garnicht abfragen und speichern, stattdessen benutzt du einfach die Resize Funktion, welche du ja bereits verwendest. Damit diese angewendet wird darfst du die GUI nicht durch die ini Werte erstellen, sondern du änderst die Standard Größe und Position der GUI erst nachdem sie erstellt wurde, so als ob du das Fenster von Hand verändern würdest.

    Hier mal ein angepasstes Script:

    Spoiler anzeigen
    [autoit]


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

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

    Global $idir = @ScriptDir & '\test.ini'
    Global $myGUI

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

    Example()

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

    Func Example()
    Local $radio_1, $radio_2, $msg

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

    $myGUI = GUICreate("GUI",420,400,-1,-1, $WS_SIZEBOX)

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

    $group = GUICtrlCreateGroup("Group", 15, 20, 390, 70) ; Höhe 70 soll nicht veränderbar sein
    GUICtrlCreateGroup("", -99, -99, 1, 1) ;close group
    GUICtrlSetResizing($group, $GUI_DOCKHEIGHT + $GUI_DOCKTOP)

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

    $tab = GUICtrlCreateTab(15, 120, 390, 240)
    GUICtrlSetResizing($tab, $GUI_DOCKTOP + $GUI_DOCKBOTTOM)

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

    $tab0 = GUICtrlCreateTabItem("tab0")
    $list1 = GUICtrlCreateListView("blabla1|blabla2|blabla3|blabla4", 20, 150, 380, 200, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
    ;GUICtrlSetResizing($list1,$GUI_DOCKTOP)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM)

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

    $tab1 = GUICtrlCreateTabItem("tab1")
    $list2 = GUICtrlCreateListView("blabla1|blabla2|blabla3|blabla4", 20, 150, 380, 200, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
    ;GUICtrlSetResizing($list2, $GUI_DOCKTOP)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM)

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

    loadPos() ; lädt letzte Fenstergröße / Position
    GUISetState()
    EndFunc

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

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

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

    Func savePos()
    $c_pos = WinGetPos($myGUI)
    IniWrite($idir, "Position", 'X-Pos', $c_pos[0])
    IniWrite($idir, "Position", 'Y-Pos', $c_pos[1])
    IniWrite($idir, "Position", 'B-Pos', $c_pos[2])
    IniWrite($idir, "Position", 'H-Pos', $c_pos[3])
    EndFunc ;==>_position

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

    Func loadPos()
    $c_pos = WinGetPos($myGUI)
    $x_pos = IniRead($idir, "Position", 'X-Pos', $c_pos[0])
    $y_pos = IniRead($idir, "Position", 'Y-Pos', $c_pos[1])
    $b_pos = IniRead($idir, "Position", 'B-Pos', $c_pos[2])
    $h_pos = IniRead($idir, "Position", 'H-Pos', $c_pos[3])
    WinMove($myGUI,"",$x_pos,$y_pos,$b_pos,$h_pos)
    EndFunc

    [/autoit]
  • Unattended Installation

    • misterspeed
    • 7. August 2011 um 17:04

    Sollte wohl so klappen, sicherer wäre es wohl aber das makro @scriptdir noch dazuzupacken, also exakt so wie du es auch im fileinstall hast:

    [autoit]


    run(@scriptdir & "\Temp\TrueCrypt Setup 7.0a.exe")

    [/autoit]

    Was den Rest anbelangt rate ich dir mal dazu dir die control Funktionen anzusehen und den send Kram zu ersetzen:

    [autoit]


    controlclick
    controlcommand
    controlsettext
    ;usw

    [/autoit]
  • Unattended Installation

    • misterspeed
    • 7. August 2011 um 11:34

    Dein Denkfehler dürfte an shellexecute bzw. am nicht/falsch angegebenen Pfad liegen. Du extrahierst die TC.exe in das Unterverzeichnis "@scriptdir\Temp", also wird er diese auch nicht finden wenn du keinen Pfad dorthin angibst. Wird kein Pfad angegebn sucht die Funktion die Datei direkt im Scriptdir. Warum verwendest du überhaupt shellexecute? Das ist eigentlich dazu gedacht um bekannte Dateiformate mit den dafür definierten Standardprogrammen zu öffnen. Funktioniert zwar natürlich auch bei exe Dateien, aber ein run() würde es genauso tun.

  • Einfügemarke mittig machen

    • misterspeed
    • 6. August 2011 um 10:38

    Und warum musst du das über Tastatur Befehle machen? Du könntest doch auch das gesamte Textfeld oder die gesamte Datei oder was auch immer du hier bearbeiten willst einlesen und dann mit _stringbetween, stringreplace, stringregexpreplace usw. arbeiten, ggf. auch mit Arraysearch, jenachdem wie das Quellmaterial denn ausschaut das du verändern willst. Nachdem du den String verändert hast schreibst du ihn wieder komplett in die Datei oder Das Textfeld der GUI die du hier automattisieren willst.


    Was nun am sinnvollsten ist hängt aber in erster Linie davon ab was du im Detail machen willst. Sofern es um Website Automatisierung geht kommen evtl. auch die Funktionen der IE.au3 oder der FF.au3 in Frage.

    EDIT:

    Grundsätzlich kannst du aber die Zeichenposition eines Suchstrings innerhalb eines Strings mit

    [autoit]

    stringinstr()

    [/autoit]

    erhalten

  • Herausfinden ob ein Programm im Vollbild läuft

    • misterspeed
    • 5. August 2011 um 15:27
    Zitat von autoBert

    Gibt es: ein Screensaver darf ja nur in Erscheinung tretten wenn der Benutzer gerade nichts tut, eal ob im Vollbild oder nicht. Und um dies zu überprüfen ist

    Nicht ganz korrekt. Ein Bildschirmschoner sollte auch nicht starten wenn man zum Beispiel Videos/Filme schaut. Da man währenddessen nicht unbedingt Maus und Tastatur bewegt würde deine Variante wohl nicht ausreichen. Wäre mal interessant wie gängige Videoplayer den Bildschirmschoner deaktivieren.

  • Dateien vergleichen

    • misterspeed
    • 5. August 2011 um 00:52

    Er meinte wohl eher

    [autoit]

    _versioncompare

    [/autoit]
  • Dateien vergleichen

    • misterspeed
    • 4. August 2011 um 22:33

    Datum uns Size kannste darüber bekommen:

    [autoit]

    _FTP_ListToArrayEx

    [/autoit]

    Aber es ist wohl sinnvoller die Textdatei einfach runterzuladen, völlig richtig.

  • Dateien vergleichen

    • misterspeed
    • 4. August 2011 um 22:27

    Geht nicht. Wenn du wissen willst was in der Datei auf dem FTP steht musst du sie runterladen. Ein Vergleich ohne Download ist nur anhand der Dateigröße oder des Dateidatums möglich.

  • _IECreate nachträglich in GUI

    • misterspeed
    • 4. August 2011 um 18:55

    Nein versteh ich nicht so wirklich. :P

    Warum erstellst du nicht von anfang an einen eingebetteten Browser mit iecreateembedded ?
    Was die Captcha Sache angeht verweise ich mal auf die Forenregeln, aber bislang scheinst du ja keine Hilfe bezüglich Captcha Umgehung zu erwarten...

  • Tray Icon klicken und Text in Zwischenablage kopieren / Formate löschen

    • misterspeed
    • 4. August 2011 um 18:30

    Wüsste gerade aber nicht wie man das realisieren können sollte, denn wie bereits erwähnt verliert das aktive Fenster in dem du den Text markiert hast den Fokus sobald du das Traymenü bedienst und dann läuft dein STRG+C eben ins leere. Du müsstest da also das zuletzt aktive Fenster mit winactivate wieder aktivieren und dann dein STRG+C senden lassen. Wie man aber am besten an das zuletzt aktive Fenster rankommt weiß ich nicht.

    EDIT:
    So würde es zumindestens fürs Notepad funktionieren, aber da du ja Programmunabhängig arbeiten willst ist dir der Titel des letzten aktiven Fensters ja leider nicht bekannt...

    [autoit]


    Case $msg = $copy
    WinActivate("Unbenannt - Editor")
    _Strip()

    [/autoit]
  • Tray Icon klicken und Text in Zwischenablage kopieren / Formate löschen

    • misterspeed
    • 4. August 2011 um 16:57

    Ok aber so wie ich das nun gelesen habe macht dein Programm ja bereits genau das was auch PureText macht. Hab mir das zwar jetzt nicht installiert, aber so wie ich den Screenshot des Traymenüs interpretiere kann man über das Tray auch keinen Text kopieren, sondern nur etwas, das sich bereits in der Zwischenablage befindet umwandeln. Das bedeutet, wenn du das Traymenü anstelle des Hotkeys verwendest musst du vorher den Text normal von Hand kopieren.

  • Maus Coordinaten alle 100Ms

    • misterspeed
    • 4. August 2011 um 16:15

    Es wäre noch cooler, wenn du selbst mal etwas von deinen bisherigen Versuchen posten würdest, denn selbst wenn man die Mousepos ohne Adlibregister in der Hauptschleife abfragt sollte das trotzdem noch recht problemlos funktionieren. Adlibregister wird dann interessant, wenn sich dein Programm längere Zeit ausserhalb der Hauptschleife, also in einer Funktion befindet.

  • Website IE Login - hilfe !

    • misterspeed
    • 4. August 2011 um 16:09

    Wie wärs mal wenn du die echte Website URL posten würdest? Ansonsten kann man nur raten.

  • Tray Icon klicken und Text in Zwischenablage kopieren / Formate löschen

    • misterspeed
    • 4. August 2011 um 16:04

    Auf welchen Hilfeeintrag beziehst du dich denn bezüglich der dll? Also ich sehe nachwievor nichts in deinem Script wofür du das brauchen solltest. Du machst ja auch rein garnix mit der dll ausser sie zu öffnen und wieder zu schliessen. Letzteres muss btw in deine exit Funktion, ansonsten wird die dll niemals geschlossen werden. Um irgendetwas mit einer DLL zu machen brauchst du die Funktion dllcall(), davon sehe ich aber nichts in deinem Script.

    Zum Rest:

    Ja sofern du nur per Hotkey arbeitest dürfte das jetzt ja alles funktionieren, auch das STRG+C in deiner Funktion macht bei der Hotkey Nutzung natürlich Sinn, das hatte ich vorher ganz vergessen. Über das Traymenü kann das so aber nicht funktionieren, denn du sendest dann dein STRG+C nicht an das Fenster, in dem du etwas markiert hast, sondern an das Traymenü... dort gibts aber nichts zu kopieren. Ich denke das was du haben möchstest ist viel mehr ein Kontextmenü anstelle eines Traymenüs. Da ist dann aber die Frage ob du Text aus deiner eigenen GUI bearbeiten möchtest (bislang scheinst du keine GUI zu haben) oder aber ob du generell jedes x-beliebige Programm steuern willst. Da wüsste ich auf anhieb nun nicht wie du in fremde Programme ein eigenes Kontextmenü einbetten kannst.

    Ich bezweifle, dass das so ohne weiteres machbar ist.

  • MAC Adresse anzeigen

    • misterspeed
    • 4. August 2011 um 15:19
    [autoit]


    ;...
    $mac=_GetMacAddress($ipadresse)
    ;...
    $macLabel = GUICtrlCreateLabel("LADE", 8, 80, 51, 20) ; du hattest die Variable doppelt verwendet und dir somit das Ergebnis der mac Abfrage mit der controlid überschrieben

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

    msgbox(0,"Ausgabe der MAC Adresse",$mac)
    GUICtrlSetData($macLabel,$mac) ; setzt den label text neu

    [/autoit]

    Das Ergebnis ist zwar immernoch nicht ok, jedoch ist der grundlegende Fehler behoben. Dein Label muss wohl noch ein ganzes Stück breiter gemacht werden und auch das Ergebnis der Abfrage sollte korrekt von den anderen Infos getrennt werden.

  • Website IE Login - hilfe !

    • misterspeed
    • 4. August 2011 um 15:03
    [autoit]


    $oIE = _IECreate ("https://websitebla/web3.exe")

    [/autoit]

    Also ich vermute mal, dass es daran liegt, dass du eine exe Datei auf einem Webspace ansprichst. Kontrollier doch mal ob du das wirklich so haben willst bzw. die URL so korrekt ist. Ich bezweifle es jedenfalls.
    IEloadwait kannste dir im übrigen auch schenken, denn _iecreate wartet standardmässig glaube ich auf das erfolgreiche Laden der angegebenen Seite.

  • Tray Icon klicken und Text in Zwischenablage kopieren / Formate löschen

    • misterspeed
    • 4. August 2011 um 14:09

    Hab dir mal einige Kommentare in deinen Quellcode gepackt:

    Spoiler anzeigen
    [autoit]


    ;#Include <Misc.au3> <--------------- du benutzt überhaupt keine Funktion aus der misc.au3
    Opt("TrayMenuMode",1) ; Standard Traymenüeinträge (Skript pausieren/beenden) werden nicht angezeigt.

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

    Global $sText
    ;$dll = DllOpen("user32.dll") <--------- wozu auch immer du die brauchst

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

    TraySetState()
    TraySetToolTip("CTRL+F9 = Kopiert + entfernt Formate" & @CRLF & "ALT+ESC = Programm schliessen")

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

    HotKeySet("!{ESC}","_exit") ;ALT+ESC
    HotKeySet("^{F9}","_Strip") ;CTRL+F9

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

    TrayCreateItem("")
    $copy = TrayCreateItem("Kopieren")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("Über")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Beenden")
    TraySetState()

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0 ; <----------- wozu soll das gut sein? Nungut es schadet jedenfalls auch nicht...
    ContinueLoop
    Case $msg = $aboutitem
    Msgbox(64,"Über:","Das Tool entfernt alle Formatierungen von den Inhalten der Zwischenablage.")
    Case $msg = $copy
    _Strip()
    ; TrayCreateItem("") <--------------------------------- wieso willst du jedesmal wenn man auf kopieren klickt neue Trennlinien ins Tray einfügen ????
    Case $msg = $exititem
    _exit()
    ; Exitloop <-------- geändert, wozu die schleife verlassen, wenn du sowieso danach das ganze Programm verlässt?
    EndSelect
    WEnd
    ;DllClose($dll) <-------- kA was du pberhaupt mit der dll vor hattest
    ; Exit <---------- entfernt, da exit bereits in der Hauptschleife erfolgt

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

    Func _Strip()
    Send("^c") ; <-------- total sinnlos, denn jedes Fenster in dem du vielleicht Text markiert haben solltest wird den Focus verlieren wenn du im Traymenü rumdrückst, kopieren klappt also garnicht
    Sleep(10)
    $sTest = ClipGet() ; <------------ hossa... du weißt schon, dass deine globale Variable die du wohl daür vorgesehen hast $sText und nicht $sTest heisst ?
    For $i = 0 To 31 ;9 to 13 sind die wichtigsten
    If StringInStr($sText, Chr($i)) Then $sText = StringReplace($sText, Chr($i), "")
    Next
    ClipPut($sTest) ; <----------------- auch hier verwendest du die falsche Variable. Der geänderte Text befindet sich in $sText nicht in $sTest
    EndFunc

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

    Func _exit() ; <------------ ohne diese Funktion war dein Programm überhaupt nicht ausführbar, siehe hotkey, welcher darauf verweist
    Exit
    EndFunc

    [/autoit]

    Grunsätzlich funktioniert das jedenfalls nicht so wie du es gerne haben würdest, selbst wenn du die komentierten Dinge so übernimmst bzw änderst. Du musst deinem Programm schon irgendwie sagen was es denn kopieren soll.

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™