Beiträge von HansJ54

    Oscar : danke, Programm umgestellt. Muss mir das in nächster Zeit einfach anschauen, da, wie gesagt, nicht bewusst reproduzierbar.

    Deswegen auch meine Idee, irgendwo nachzuschauen, was die beiden laufenden Instanzen (wenn es mal wieder so ist) bei sOccurrenceName hinterlegt haben. Aber vermutlich wird das nach vorne schieben ja schon helfen.

    Was steht in dieser UDF?

    Wird dort bereits irgendein Code ausgeführt?

    Der würde den _Singleton-Befehl nämlich verzögern.

    Ich habe den Post zur besseren Verständlichkeit stark verkürzt. Tatsächlich gibt es noch mehrere inkludierte UDFs neben den blp_ToolsAllg.au3. Und das sind insgesamt noch mal ca. 4.000 Zeilen. Es werden Variablen deklariert, aber nichts sonst ausgeführt. Würde aufgrund der Größenordnung nichts bringen, alles zu posten. Die Anleitung zu _Singleton ist relativ einfach, in der Hilfe sehe ich nichts was ich nicht gemacht hätte.
    Kann ich den _Singleton eigentlich ganz an den Anfang setzen vor den #Includes? Ein Timing-Problem war ja auch mein erster Gedanke (versehentlich 2x schnell mit der Maus geklickt), speziell da das Problem so extrem selten auftritt und nicht bewusst reproduzierbar ist.

    Allerdings glaube ich nicht, dass man mit dem Codestück herausfinden kann, wo AutoIt sich den Wert "BlpMenuCheck" merkt um ein evt. Timing-Problem aufzuspüren :?:

    Seit einigen Jahren nutze ich _Singleton um Mehrfachstarts meiner Programme zu verhindern. Funktioniert grundsätzlich. Allerdings ganz selten (und wirklich sehr selten) startet das Programm doch ein zweites Mal. Eine Idee: zu schnell hintereinander geklickt, so dass sOccurrenceName noch nicht hinterlegt ist ...

    Hat jemand eine Idee, wie die Funktion feststellt, dass sOccurrenceName schon existiert? Ich hätte das irgendwo bei den Tasks vermutet, finde aber im Taskmanager nichts. Aber irgendwo muss sOccurrenceName doch abgelegt sein? Vielleicht kann man damit den Fehler tracen?

    Danke für Eure Hilfe!

    Also bei läuft es :

    Beispiel :

    Hast Du, wie Velted vermutet, auf einem anderen Rechner getestet ?

    Gleicher Rechner, wieder mit F5 aus dem SciTE gestartet! Dein Script funktioniert einwandfrei im Gegensatz zu meinem Test eben (Screenshots waren ja dabei). Habe die beiden Zeilen noch mal vor Deinem Script eingefügt und jetzt kommt auch dabei richtig 0 bei System32 und 1 bei SysNative. Keine Idee wieso.




    Funktioniert, auf jeden Fall vielen Dank für Eure Hilfe!


    Ich versuche abzufragen, welche(r) User auf einem anderen Client (hier z.B. BLP5-WX) angemeldet ist. Im cmd-Fenster funktioniert das problemlos:



    In meinem Script bekomme ich sowohl bei Run() wie auch ShellExecute() eine Fehlermeldung, dass die Datei nicht gefunden werden konnte:



    Testweise habe ich es mit "C:\Windows\System32\cmd.exe" versucht, das funktioniert. Wo könnte das Problem bei der quser.exe liegen?


    Nachtrag: ich habe die quser.exe in c:\temp kopiert, da funktioniert es. Kann man von AutoIt nicht auf System32 zugreifen?

    Du verwendest eine ältere Version von AutoIt ohne Maps.

    installiere dir die aktuelle Version von AutoIt.

    Vielen Dank, funktioniert jetzt. :)

    Gibt es eigentlich eine Möglichkeit zu sehen, dass es eine neue Version von AutoIt gibt ohne auf der Webseite nachzuschauen? Manche Programme zeigen das per Popup, bei anderen geht es mit Hilfe und "Über". Da ich bei AutoIt nur in SciTE arbeite, habe ich nicht gemerkt, dass es eine neue Version gab.

    Um eine ListView editierbar zu machen habe ich mal eine UDF geschrieben. Du musst sie quasi nur mit dem Array befüllen und beim "speichern" (deselektieren/enter/...) den Array-Eintrag an dem Index+SubIndex verändern.

    Sollte das sein, was du willst: Listview edit subitems UDF

    Sieht gut aus und ist es vermutlich auch, aber bekomme bei der ListViewEditInput.au3 Fehlermeldung wegen fehlender Functions MapExists() , MapRemove(), MapKeys(). Habe ich vergessen etwas runterzuladen?

    Ich versuche es noch einmal:


    Gegeben ein Array in AutoIt mit 2 Spalten. Das möchte ich anzeigen und durch Anklicken einer Zelle in der 2. Spalte den Wert in dieser Zelle per Tastatur ändern (reiner Text, keine Formeln). So eine Art Array-Editor oder Mini-Excel.


    Das Skript oben produziert die Anzeige, aber ich konnte nicht herausfinden, was umzustellen ist um eine Eingabe zu ermöglichen. Für zukünftige Zwecke könnten es auch mal 3 oder 4 Spalten sein, aber vorerst nicht wichtig.


    Vielleicht hilft das Bild?


    Hallo Andy,

    ich dachte, ich hätte mein Problem verständlich genug beschrieben - ich versuche es noch einmal:


    Ziel: aus einem 2D-Array die Spalte 1 (Namen) und wahlweise irgendeine weitere Spalte x anzeigen und einzelne per Maus angeklickte Werte in der Spalte x ändern/eintragen/überschreiben können.


    Interessant übrigens: ich habe gestern von ChatGPT ein Skript bekommen, das zwar nur teilweise funktionierte (war nur ein Viewer und ich konnte die Einträge in der 2. Spalte nicht ändern). Aber zumindest konnte ich sehen, dass die Lösung wohl irgendwie über ListView möglich ist und habe dadurch zumindest einen besseren Suchbegriff und Ansatz.


    Beispiel unten: wenn ich jetzt noch einzelne Werte aus Spalte "Local" anklicken und ändern könnte, wäre ich am Ziel. Vielleicht liegt es $LVN_ENDLABELEDIT - wurde benutzt aber ist unbekannt und ich konnte auch nichts dazu finden. In der Diskussion mit ChatGPT kam dann raus, ich sollte dafür den Wert -177 einsetzen - warum auch immer.


    Habe meine "Cells.au3" noch mal angeschaut. Grundsätzlich wäre es damit machbar, müsste aber auf jeden Fall stark verändert werden, da in jetziger Form nur das Anzeigen (und bedingte Formatieren) von Werten vorgesehen ist. Aber das auszuschlacken und umzubauen ist sicher komplizierter, als es selbst zu Erstellen.

    Würde es bei Dir unter Meine UDF erwarten, bin aber entweder blind oder Cells.au3 ist nicht da? Nur zum Anschauen.

    Andere Idee: ich habe gerade eine UDF gefunden, mit der man CSV-Dateien bearbeiten kann. Ist nur ziemlich langsam bei großen Dateien. Wenn ich da eine Einschränkung auf die Anzeige von 2 Spalten hinbekäme, würde ich nicht das Array sondern die csv bearbeiten und dann das Array neu laden. ttps://www.autoitscript.com/forum/topic/200804-csv-file-editor/ Leider geht das Script weit über meine Verständnisgrenzen :S

    Es ist eine große csv-Datei, die ich im Programm in ein Array einlese. Gelegentlich muss ich in einer Spalte testweise einige Werte ändern. Bisher verlasse ich das Programm, starte Excel, suche die Spalte, ändere und lese wieder ein und teste. Wenn die Tests erfolgreich waren, dann sollen die Werte in der ursprünglichen csv-Datei bleiben, sonst wieder zurück zum alten Stand.

    Daher ist meine Idee, in einer Spalte im eingelesenen Array einige Werte zu ändern wie mit Excel, also vom AutoIt-Programm aus.

    Nach langer Zeit ohne Probleme 8) denke ich mal wieder über eine Optimierung nach:

    Ich lese eine große csv-Datei in ein Array ein und möchte im Programm eine Spalte davon anzeigen und bearbeiten - so als ob ich diesen Teil des Arrays alleine in Excel vor mir hätte. Bisher habe ich die Input-Datei mit Excel geöffnet, Spalte gesucht und geändert, Datei gespeichert und die ganze Datei neu im Programm eingelesen.

    In der ersten Spalte stehen die Feldbezeichnungen, daher müsste ich Spalte 1 und Spalte xx anzeigen können, die Werte in Spalte xx ändern und das Ganze wieder speichern.

    Gibt es dafür schon eine fertige Lösung?

    Danke für Eure Hilfe!