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

Beiträge von veronesi

  • Zeilennummer in EXE suchen

    • veronesi
    • 12. April 2011 um 14:02

    Also, ich habe nun bei mir AutoIt nochmals komplett deinstalliert und (nach Neustart, man weiss ja nie) wieder installiert.
    Es ist wieder das gleiche!

    Auch auf einem neuen (virtuellen) Computer (Win7 x64) habe ich AutoIt kurz installiert. Auch dort bleiben die Fehler.

    Evtl. hast Du an Deiner Installation etwas verändert?
    Oder wurde mit OrganiceIncludes bei Dir etwas verändert, so dass die Fehler auch im "normalen" Tidy nicht mehr erscheinen?

  • Zeilennummer in EXE suchen

    • veronesi
    • 12. April 2011 um 13:56

    ???? OK???
    Wenn Du das obere Script ausführst und dann im vom Tidy geöffneten Editor nachsiehst, hast Du KEINE undeklarierten Variablen??????

    Bei mir sieht der untere Teil vom Tidy-Log so aus:

    #### indicates that this specific variable only occurs one time in the script.
    ---- indicates that this specific variable isn't declared with Dim/Local/Global/Const.

    == Variables ======================================================================================================
    Variable name Dim Used in Row(s)
    ========================= ===== ===================================================================================
    $AnzahlGUI1 00007 00008
    #### $BtnCancel 00007
    #### $BtnClose 00007
    #### $BtnOK 00007
    $WS_MAXIMIZEBOX ----- 00010
    $WS_MINIMIZEBOX ----- 00010
    $WS_OVERLAPPEDWINDOW ----- 00010
    $WS_TABSTOP ----- 00010
    $aGUI1 00008 00010
    $hGUI 00007 00010

  • Zeilennummer in EXE suchen

    • veronesi
    • 12. April 2011 um 13:51

    Hallo

    Lass es mich mal anders erklären.
    Nimm dieses Script:

    [autoit]

    #AutoIt3Wrapper_Run_Tidy=y
    #Tidy_Parameters=/sci 1 /gd /gds

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

    Opt("MustDeclareVars", 1) ;Must declare variables
    #include <WindowsConstants.au3>

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

    Global Enum $hGUI, $BtnOK, $BtnCancel, $BtnClose, $AnzahlGUI1
    Global $aGUI1[$AnzahlGUI1]

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

    $aGUI1[$hGUI] = GUICreate("test", 400, 400, -1, -1, BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_TABSTOP, $WS_OVERLAPPEDWINDOW))

    [/autoit]

    Wie Du sehen kannst, sind alle Includes vorhanden und alle Variablen deklariert. (Sogar mehr als notwendig)
    Mit Ctrl+F5 bekomme ich auch keine Fehlermeldung.

    Wenn ich nun aber eine EXE erzeuge (F7) dann zeigt mir Tidy an, dass folgende Variablen nicht deklariert sind:

    • $WS_MAXIMIZEBOX
    • $WS_MINIMIZEBOX
    • $WS_OVERLAPPEDWINDOW
    • $WS_TABSTOP

    Diese sind aber sehr wohl deklariert, einfach in einer Include!
    Ich möchte gerne diese Fehler in Tidy wegbringen. (Natürlich ohne dass ich den ganzen Inhalt der Include ins Mainfile reinkopiere)

  • Zeilennummer in EXE suchen

    • veronesi
    • 12. April 2011 um 13:41

    Ja, alle #includes sind in den ersten Zeilen des Scriptes.
    Und ich habe ja auch keine Fehler wegen "nicht includierter Dateien". Trotzdem werden mir mit dem Tidy gewisse Variablen als nicht deklariert markiert. (Wie z.B. $WS_EX_LAYERED)

  • Zeilennummer in EXE suchen

    • veronesi
    • 12. April 2011 um 08:11

    Ach ja: Variablen wie $WS_EX_LAYERED werden auch als undeklariert dargestellt.
    Obwohl die ja in einem Include deklariert sind.

    Muss ich da was unternehmen, damit ich diese "Fehler" nicht mehr im TidyLog sehe?

  • Zeilennummer in EXE suchen

    • veronesi
    • 12. April 2011 um 08:02

    Hallo Water,

    danke für Deine Antwort.
    Ich habe es mal mit /sci 1 /gd /gds versucht.

    - Herausgekommen ist, dass alle @XYZ Makros "nicht deklariert" sind. (Also z.B. @IPAddress1 etc.) Ich denke, das ist unkritisch, oder?
    - Zudem sind tatsächlich einige Variablen nicht deklariert. Allerdings sind dies Parameter in der Funktionsübergabe. Diese müssen meines wissens nicht deklariert werden - oder?
    Also z.B.

    [autoit]

    Func _WriteToLogfile($Line, $Error, $ExtendedError, $Value)

    [/autoit]

    Und tatsächlich habe ich eine Variable gefunden, welche nicht deklariert ist: $objItem
    Ich nutze eine WMI Funktion um zu prüfen, ob das Netzwerk verbunden ist.
    Hoffe nun mal, dass es diese Variable gewesen ist.

    Vielen Dank!

  • Zeilennummer in EXE suchen

    • veronesi
    • 12. April 2011 um 07:17

    Hallo zusammen,

    Bei folgendem Problem komme ich nicht mehr weiter.
    Ich habe ein Script, welches auf 27 PCs seit 3 Arbeitswochen jeweils täglich 4-5x ausgeführt wurde. Und immer lief es einwandfrei.
    Doch plötzlich bekommt ein Mitarbeiter die Fehlermeldung wie im Anhang.

    Um nun herauszufinden, welche Zeile das in meinem Script ist, nutze ich den Obfuscator mit den Optionen /cs=0 /cn=0 /cf=0 /cv=0 /sf=0 /sv=0.
    Dabei erhalte ich ein Obfuscated Script. Doch wenn ich darin auf die Zeile 4'827 gehe (+/- 10 Zeilen) habe ich nirgends eine Variable, geschweige denn eine Undeklarierte!

    Natürlich nutze ich in meinem Script

    [autoit]

    Opt("MustDeclareVars", 1)

    [/autoit]

    Leider ohne Erfolg. Ich finde in meinem Script keine undeklarierte Variable. (Auch nicht in den Includes)
    Und zudem lief dieses Programm ja ca. 1'800x in den letzten drei Wochen. Und immer ohne Fehler.

    Ich möchte nun nicht unbedingt mein Script hochladen, da ich eher einen allgemeinen Lösungsansatz suche.

    • Wie kann ich Fehler suchen? (Diesen Thread kenne ich: Tutorial: Wie man Script-Fehler erfolgreich sucht/findet bzw. richtig debuggt
    • Warum kann ich bei dem obfuscateten Script nicht +/- die richtige Zeile finden? Nutze ich die falschen Optionen?

    Vielen Dank für Eure Ideen!
    Veronesi

    Dateien

    Fehlermeldung.jpg 69,39 kB – 0 Downloads
  • TaskScheduler / Aufgabenplaner mittels ObjCreate("Schedule.Service") ansteuern

    • veronesi
    • 9. April 2011 um 14:53

    Also die MsgBox wird nie angezeigt, weil ich in einem automatisierten Script keine Benutzerinteraktionen haben möchte. Es soll alles automatisiert sein. Die war nur für Debugzwecke. Ich habe sie aber drin gelassen, damit man sie jederzeit wieder schnell aktivieren könnte um Fehler zu finden.

    Die Errorfunktion wird nur aufgerufen, wenn ein Fehler aufgetaucht ist, deshalb wird dort dann die Variable gesetzt. Es fehlt also keine If Anweisung.
    Im Prinzip wird also sobald ein beliebiger Fehler auftaucht, nur die Errorvariable gesetzt und dann zurückgesprungen!

    Klar, das könnte man auch noch auf X andere Arten lösen.....
    Gruß Veronesi

  • TaskScheduler / Aufgabenplaner mittels ObjCreate("Schedule.Service") ansteuern

    • veronesi
    • 8. April 2011 um 15:46

    Ist soeben eingetragen worden.
    Wenn jemand den Fehler findet, dann kann ich das Script auch wieder für Win XP anpassen.
    Ich habe momentan leider keine XP Maschine mehr hier.

  • TaskScheduler / Aufgabenplaner mittels ObjCreate("Schedule.Service") ansteuern

    • veronesi
    • 8. April 2011 um 15:29
    Zitat von Micha_he

    Hab es gerade mal unter Win7 getestet als User geht es standardmäßig nicht (was zu erwarten war), aber als Admin ohne Fehler.

    Gewisse Funktionen in CreateTask benötigen Adminrechte. Ist aber oben beschrieben!

  • TaskScheduler / Aufgabenplaner mittels ObjCreate("Schedule.Service") ansteuern

    • veronesi
    • 8. April 2011 um 15:23

    Tschuldigung, habe überlesen, dass Du XP benutzt.
    Mein Code läuft erst ab Windows 7 (evtl. auch Vista). Unter XP geht es nicht.

    Aber da ich praktisch keine XP PCs mehr hier habe, kann ich den Code momentan nicht optimieren!

  • Icon im Systray unter Windows7 anzeigen

    • veronesi
    • 8. April 2011 um 14:31

    Es scheint wirklich nicht möglich zu sein.

    Zitat

    There have been changes to the notification area that give the user much more control over what icons appear on the taskbar. All notification icons are now hidden by default and that visibility cannot be programmatically controlled. Only the user is allowed to choose which notification icons appear on the taskbar. When a notification balloon is displayed, the icon becomes temporarily visible, but even then a user can choose to silence them


    Quelle

    Aber man kann dann halt notfalls mit TrayTip das Icon (meinstens) temporär anzeigen.
    Das reicht für meine Zwecke momentan!
    Veronesi

  • TaskScheduler / Aufgabenplaner mittels ObjCreate("Schedule.Service") ansteuern

    • veronesi
    • 8. April 2011 um 14:03

    Welche UDF / welchen Code hast Du denn verwendet?
    Nimm am Besten meinen aus dem Post über Dir Post 10

  • Icon im Systray unter Windows7 anzeigen

    • veronesi
    • 8. April 2011 um 13:52

    Hmm, das wäre aber sehr schade.
    Mit dem Befehl "_GUICtrlToolbar_MoveButton" kann ich zwar erfolgreich Icons verschieben, jedoch nur innerhalb des ausgeblendeten Bereichs oder innerhalb des sichtbaren Bereichs.

    Eine Verschiebung von Ausgeblendet nach Sichtbar habe ich bis jetzt leider nicht gefunden.

    Ideen sind sehr willkommen.

  • Icon im Systray unter Windows7 anzeigen

    • veronesi
    • 8. April 2011 um 11:21

    Hallo Zusammen,

    Ich suche nach einer Möglichkeit, unter Win7 ein Icon im Systray anzeigen zu lassen.

    [autoit]

    Opt("GUIOnEventMode", 1) ;Enable GUI Events
    Opt("TrayMenuMode", 3) ;Set Try Icon to "No default menu" and "no tick on click"
    Opt("TrayOnEventMode", 1) ;Enable events for tray menu

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

    TraySetIcon()
    While 1
    TraySetState(2) ;Hide Icon
    Sleep(5000)
    TraySetState(1) ;Show Icon
    TraySetToolTip("New XYZ update available")
    Sleep(5000)
    TraySetState(4) ;Flash Icon
    Sleep(5000)
    WEnd

    [/autoit]

    Leider blendet mir Windows dieses Icon immer aus.
    Klar, man kann dies manuell umstellen. Aber das sollte eigentlich nur für dieses Icon und automatisiert ablaufen.

    Wie kann ich erreichen, dass Windows dieses Icon nicht mehr ausblendet, oder zumindest für einige Sekunden wieder "aktivieren"?

    Auch mit

    [autoit]

    _GUICtrlToolbar_EnableButton
    _GUICtrlToolbar_HideButton

    [/autoit]


    habe ich es schon versucht. Leider ohne Erfolg.

    Hat jemand eine gute Idee?
    Lg Veronesi

  • Event - OnFocusChange

    • veronesi
    • 7. April 2011 um 14:13

    Habe den Link gefunden:
    http://msdn.microsoft.com/en-us/library/…6(v=vs.85).aspx

  • Event - OnFocusChange

    • veronesi
    • 7. April 2011 um 14:06

    Hey, super! Vielen Dank!
    Alles läuft einwandfrei!

    Allerdings wäre ich nie auf die Idee gekommen, dass in der User32.dll so ein Fenter-Hook erzeugt werden kann.
    Wie kommt man darauf?
    Und was gibt es sonst noch so spannendes dort? Du arbeitetst ja mit $Event_System_Foreground = 0x03
    Hast Du einen Link, wo ich Informationen darüber finde?

    Besten Dank!
    Grüsse Veronesi

  • Event - OnFocusChange

    • veronesi
    • 7. April 2011 um 13:37

    Hi Eukalyptus

    Bei Fragen einfach melden! :)

    Naja, vielleicht liegt es auch daran, dass ich momentan wirklich FAST keine Zeit für dieses Thema habe.... Aber ich verstehe die Funktion momentan nicht wirklich. Es ist aufwändiger als ich dachte.

    OT:
    Aber Dein IconDock ist sehr gelungen! Ich erlaube mir einfach mal Ideen daraus (rein optische, keine Softwareteile) für mich zu übernehmen. Ich versuche dann mal an einem Wochenende so etwas selber zu programmieren.

    Trotzdem danke. Ich werde wohl aus Zeitgründen momentan bei meiner Lösung bleiben (müssen).
    Gruss Veronesi

  • Event - OnFocusChange

    • veronesi
    • 7. April 2011 um 09:40

    Hallo zusammen,

    ich bräuchte wieder mal Eure Hilfe. Habe mit der Suchfunktion und Google leider nichts gefunden.

    Ich muss mit meinem Programm überprüfen, ob der Fensterfokus geändert hat.
    Also beim starten meines Programms (welches keine GUI hat) ist der Fokus auf einem beliebigen Fenster. Wenn ich nun mit der Maus oder mit der Tastatur (oder durch einen Systemgenerierten Event wie Geplanter Task) ein neues Fenster öffne oder einfach nur den Fokus auf ein beliebiges anderes Fenster setze, dann möchte ich mit meinem Programm in eine Funktion springen!

    Bis jetzt löse ich das so, dass ich mit AdlibRegister alle 200ms den aktiven Fenstertitel abfrage. Wenn der Titel anders ist, als bei der letzten Prüfung, dann werden diverse Dinge ausgeführt.
    Dies funktioniert zwar gut, jedoch mit zwei Einschränkungen:

    • Wenn ich schneller als 200ms reagieren möchte, dann nimmt die CPU Last auf älteren PCs deutlich zu.
    • Wenn ich mit Alt+Tabulator (Win7) den Fensterfokus ändere, dann wird oft das "Fenster" Programmumschaltung als neues Fenster detektiert. Dies soll aber verhindert werden. (Und zwar nicht nur im deutschsprachigen Windows, sondern auch in allen anderen Sprachen!!)

    Wie könnte man einen Event generieren, der nur bei Fenster-Fokusänderungen eine Funktion aufruft?
    Bei GUIRegisterMsg habe ich leider nichts entsprechendes gefunden.

    Vielen Dank für Eure Hilfe!
    Veronesi

  • Probleme mit Adlibregister in Funktion

    • veronesi
    • 5. April 2011 um 11:23

    Hey progandy,
    das ist die Empfehlung des Tages!

    Vielen Dank!

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™