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

Beiträge von Andy

  • $CmdLine Fehler

    • Andy
    • 7. Mai 2015 um 13:27
    Zitat von Silvermoon

    Das ist doch wohl logisch das man zuerst mit Msgbox bzw. Tooltip die Werte anschaut.

    Anschauen alleine reicht offensichtlich nicht, man muss auch verstehen was passiert...

    Hast du ASspirinjunkie´s Beispiel angeschaut? Und es hat bei dir immer noch nicht "geklickt"?


    Zitat von Silvermoon

    Wenn die Multidestop.exe gestartet wird, zeigt mir „_ArrayDisplay($CmdLine)“ in 1.Zeile alle Werte zusammen hängend an.

    (Row[1] Wert1Wert2Wert3Wert4)

    GENAU DAS hast du doch auch in deinem Shellexecute so übergeben!


    Zitat von Silvermoon

    $CmdLine führt scheinbar keine Trennung durch, sollte es aber machen, denn ansonsten ist währe Array sinnlos.

    Du hast offensichtlich nicht verstanden, dass das Parameter-ARRAY und der daraus von dir gebildete STRING nichts miteinander zu tun haben...
    Wie soll der STRING denn aussehen? Sollen die Parameter durch ein Leerzeichen voneinander getrennt sein? Dann füge die erforderlichen Leerzeichen doch einfach ein...ich verstehe das Problem nicht!

  • Bilder öffnen durch einem Pfad aus einer .csv Datei

    • Andy
    • 6. Mai 2015 um 18:25

    Hi,
    anstatt den Pfad der Bilddatei in das Input einzutippern würde ich eine Auswahlbox GUICtrlCreateCombo() verwenden um aus einer bestimmten Anzahl Bilder das passende auszuwählen, alternativ ein Button für ein FileOpenDialog().
    Das mit den Bildern ist sowieso unklar, bestehen diese Bilder bereits irgendwo, werden diese bspw. per Mail geschickt oder sind das Screenshots?

    Alternativ dazu mach die GUI viel größer und teile die Eingabebereiche für Text und die Vorschau für die Bilder auf, so dass man nur noch das passende Bild/Control/Auswahl anklicken muss.

    Bevor man so ein Script anfängt, sollte man sich erst man Gedanken darüber machen, welche Anforderungen bestehen.
    Wenn solch ein Script bspw. an einer Telefonhotline eingesetzt werden soll, dann ist SCHNELLE und IDIOTENSICHERE Bedienung die Grundvorraussetzung.

    Ich habe das schon so umgesetzt, dass bspw. die gemeldeten Fehler/Reklamationen entweder per Dropdown-Liste, oder direkt aus einer Liste per Mausklick ausgewählt werden. Diese Liste wird mit jedem neuen Eintrag nach Häufigkeit sortiert, d.h. bei einer Reklamation muss der Mitarbeiter nur noch die Auftragsnummer eintippern, geht per TAB in die Liste, wählt dort ggf. einen der TOP10 Einträge aus oder Klickt diesen an oder erstellt eine neue Fehlerbeschreibung.
    Ich bin grundsätzlich für eine Bedienung per Tastatur für diese wenigen Controls (max. 10 Stück), denn für geübte Anwender ist das wesentlich schneller als jedes Mausgeschubse...

    In deinem Script steht der Cursor übrigens im INPUT[0] und ist nur durch TAB/ENTER in ein anderes Feld zu bewegen. Da INPUT[0] aber ein "unsichtbares" Feld ist, hängt der Cursor oben links in der GUI fest. Mach entweder INPUT[0] sichtbar oder lösche es einfach.

    Jetzt hab ich viel geschrieben, kein Script gepostet....
    Das kommt davon wenn die Anforderungen UNKLAR formuliert sind ;)

  • [Just 4 Fun] WAV Generator

    • Andy
    • 6. Mai 2015 um 17:05

    Hi,

    habe bereits bissl rumgespielt und damit unsere Katzen unter die Couch gejagt 8o

    Allerdings kamen auch meine Mädels angerannt und brüllten: "Spinnst du jetzt völlig?! Stell sofort dieses Gedudel ab!" :whistling:
    Man kann nicht alles haben...aber Musik ist definitiv nicht dafür gemacht, LEISE gehört zu werden!
    btw, wo ist der :rock: smilie hingekommen :/

  • Version Balon-Typ

    • Andy
    • 6. Mai 2015 um 16:58

    Man kann Versionsnummern an vielen Orten in der EXE anzeigen lassen, entweder im Menü, in der Statusbar, als Fensterinhalt/Tooltip über Tastenkombination oder als Mouseover, als #AutoIt3Wrapper_Res_Fileversion=1.0.3.5, oder im Tray direkt:

    AutoIt
    $version = "3.1.415"
    
    
    Opt("TrayMenuMode", 0)   ;
    
    
    Local $iSettings = TrayCreateItem("Version: " & $version) ;
    TraySetState(1)          ;
    
    
    ;rechtsklick auf das Trayicon zeigt u.a. die Versionsnummer
    
    
    MsgBox(0, "bla", "blub")
    Alles anzeigen

    Die Frage ist wie du jetzt darauf kommst zu behaupten

    Zitat von Peter S. Taler

    Leider kann man der .exe nie netnehmen welche Version das ist.

    ?(

  • DllCall dhcpsapi.dll

    • Andy
    • 5. Mai 2015 um 17:50

    Hi,
    was willst du überhaupt machen?
    Ggf. gibt es dafür geeignetere und "sicherere" Methoden als API-Calls, bspw. WMI

  • Excel Zellen auslesen und Dateien öffnen

    • Andy
    • 5. Mai 2015 um 13:13

    Hi,

    was sagen denn die vielen Beispiele zu den Excel-Befehlen in der Hilfe?
    Ist dort etwas unklar bzw. was bekommst du anhand dieser Beispiele nicht hin?

  • Dll erstellen und mit AutoIt nutzen - FreeBasic Tutorial

    • Andy
    • 2. Mai 2015 um 22:05

    hänge mal deine dll mit an...

  • Progressbar über die Dauer einer aktiven CMD-Session ausgeben

    • Andy
    • 29. April 2015 um 16:30

    Die Frage ist, wieso du nicht EINFACH per AutoIt (das ist übrigens die Programmiersprache, in dessen Forenbereich wir uns hier befinden) die Dateien in eine Textdatei schreibst. Dafür gibt es reihenweise Funktionen...such mal nach rekursiv filelist
    Wenn du diese Funktion gefunden hast, ist die Progressbar nur noch ein weiterer Einzeiler.

    Zitat von bazii

    da der Erstellungsprozess der txt mit meinen benötigten Parameter im Netz oft länger dauert, als ich schätze.

    Die Textdatei ist in Millisekunden erstellt! Das was "dauert" ist die Zeit, übers Netzwerk die Dateien zusammenzusuchen.
    Weiterhin solltest du vorher (!) wenigstens näherungsweise festlegen, wie viele Dateien in etwa gesucht werden. Ob du nun den Maximalwert der Progressbar bei 80% oder 120% der entgültigen Dateianzahl festlegst, ist imho unerheblich.

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 29. April 2015 um 11:32
    Zitat von KriZza

    Kann immer nur nebenbei daran arbeiten und da fehlen noch ein paar wichtige Funktionen.

    Halte uns auf dem Laufenden!


    Zitat von KriZza

    du Hast geschrieben, dass du noch irgendwo eine Version hast, in der Tastaturanschläge übermittelt werden?

    ich hatte noch weitaus "schlimmere" Versionen, u.a. incl. kompletter Tastatur-und Mausaufzeichnung. Aber das ist eine andere Geschichte....

    Um weitere Diskussionen über den möglichen Zweck garnicht erst aufkommen zu lassen, wurde keine andere als die vorliegende Version released.
    Irgendwo hier im Thread hatte ich auf Nachfrage der Tastaturübermittlung auf die "virtuelle" Tastatur hingewiesen, die mit Mausklicks perfekt den Server steuern kann.


    Um "echte" Tastenanschläge zu übermitteln kann man das Protokoll einfach erweitern. Beispielsweise könnte man die Tastenanschläge im Client abfangen und per "KEY:"+ Tastaturcode an den Server schicken, der diesen Tastaturcode einfach nur per SEND() ans dortige Windows übergibt. Das wären für den Client und Server zusammen nicht mehr als 20 Zeilen Code....

  • jede 3. Zeile soll eine Leerzeile sein

    • Andy
    • 26. April 2015 um 18:20

    @alpines,

    und ausserdem gibts OrganizeIncludes, damit erspart man sich das Include-Gesuche generell.

  • Frage zu einem Befehl

    • Andy
    • 25. April 2015 um 12:11
    Zitat von BigRox

    Ich binde ein fertiges Script ein, das auch mit der Windows-Message $WM_NOTIFY arbeitet.

    Naja, so ist das eben mit der Programmiererei, ab und zu braucht man etwas mehr als Copy&Paste dafür!

    Du hast jetzt mehrere Möglichkeiten aufgezeigt bekommen, ich allerdings würde trotzdem sämtliche $WM_NOTIFY-Events in EINER Funktion abwickeln. Damit wird das Debugging einfach und sämtliche Auswertungen beschränken sich auf eine Funktion.
    Weiterhin ist völlig irrelevant, in welcher Reihenfolge die Events in der Queue stehen, die werden von Windows nacheinander an die für $WM_NOTIFY registrierte Funktion weitergegeben, diese wird also auch ggf. mehrmals nacheinander aufgerufen!

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 25. April 2015 um 11:46

    Ja, genau so einfach habe ich mir das gedacht.
    Mit einem Refresh alle 2 Sekunden bleibt genug Zeit, die "aufwendigen" Dateioperationen und GUIsetdata($pic) abzuwickeln.

    Du kannst ja, wenn deine Anwendung fertig ist, einen Thread dafür erstellen und hier verlinken. Dann haben auch andere etwas davon! :thumbup:

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 23. April 2015 um 13:09

    Nein, dafür sollte man auch nicht großartig Deskstream umbauen sondern mit diesen Anforderungen einfach ein Multiclientscript erstellen.

    Du hast den Server, jeder der Clients verbindet sich mit dir. Das ist nichts weiter als ein Chatprogramm, von denen gibts reihenweise Beispiele!
    Anstatt jetzt getippte Nachrichten zu übertragen, schickst du komplette Screenshots.
    Der Server klappert nun nacheinander die Clientverbindungen ab und refreshed seine GUI mit diesen Screenshots.
    Bei einem Doppelklick auf eine der "Vorschauen" öffnet sich ein weiteres Fenster mit einer vergrößerten Darstellung. Zooming, Panning usw. würde ich alles weglassen!

    Würde das reichen?

  • Frage zu einem Befehl

    • Andy
    • 22. April 2015 um 17:26

    Hi,
    du musst doch lediglich die einzelnen Events innerhalb der Funktion WM_Notyfy_Events() abarbeiten.


    AutoIt
    Func WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam) 
       If event_x_param then  ;
          bla...
        If event_y_param then  ;
          blub...
        If event_z_param then  ;
           bla...
    endfunc

    Schau dir mal in der Hilfe die einzelnen Events an, dazu in der Suche *WM_NOTIFY* eingeben und unten "Ähnliche Wörter suchen" anhaken. Sämtliche dieser Funktionen könnte man in EINE Func WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam) packen!

  • Variable als INI behandeln?

    • Andy
    • 22. April 2015 um 13:19
    Zitat von Kanashius

    Lottich:

    letztendlich hat Andy einfach die Dateiendung DLL genommen... Es ist keine Bibliothek, sondern täuscht nur vor, eine zu sein.

    FALSCH!

    Einmal in das AutoIt-Script geschaut wüßtest du das.....
    Die DLL ist beigelegt, auch der Sourcecode der DLL.

    @Lottich,
    das Knowhow kommt von alleine, learning by doing!
    Und wenn du etwas nicht verstehst, frage nach! Wer hier im Forum ordentlich fragt, bezeugt sein Interesse sich weiterzuentwicken, solche Leute können wir hier brauchen!

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 21. April 2015 um 18:59

    Wir haben das damals absichtlich so gelöst, dass die Server auf dem zu überwachenden Rechner laufen.

    Um mehrere "Server" in einer GUI darzustellen, muss man im Client nur mehrere Sockets erstellen und mit den entsprechenden Servern verbinden. Problem dabei ist, dass jede Verbindung zu gleichen Teilen Bandbreite bzw. Leistung der Darstellung braucht!
    D.h. konkret, wenn bei einer Verbindung mit einem Server 20FPS dargestellt werden, sind das bei 4 gleichzeitigen Verbindungen nur noch maximal 4-5 FPS.
    Wenn man aber 4 Clients startet, hat man kaum Einbußen, abhängig von der verfügbaren Bandbreite. So werden auch Mehrkernprozessoren ausgenutzt^^

    Auf meinem Quadcore-Laptop dümpelt die Prozessorlast bei Client und Server bei ca 10% und 10 FPS bei 800Mhz Takt, d.h. der Code holt den Prozessor nicht mal aus dem Schlafmodus (P6 bei mir ! )
    Und das bei laufender Videoübertragung bei ca. 800x600 zu 3 Rechnern!


    Irgendwo hab ich noch eine "schnelle" Version rumfliegen, die komprimiert bissl besser. Und Ton wurde imho genau wie Tastatur auch schon mitübertragen. Damals hatte ich aber nur ein 10Mbit Netz, und daher infolge fehlender Rechner- und Netzwerkleistung nicht mehr weitergemacht...

  • Variable als INI behandeln?

    • Andy
    • 21. April 2015 um 08:09
    Zitat von Lottich

    Verstehe ich das richtig? Ich kann dann Daten INNERHALB dieser DLL ändern, sodass beim nächsten Programmaufruf die geänderten/neuen Daten vorhanden sind?

    Eine Datei ist eine Datei ist eine Datei.

    Der Inhalt einer Datei besteht aus Bytes. Je nachdem, in welcher Folge diese Bytes angeordnet sind und je nach Struktur, kann man diese Bytes auslesen um Musik zu hören, Bilder anzuschauen oder Text zu lesen.
    Im umgekehrten Weg muss man sich nur überlegen, in welcher Struktur diese Bytes vorliegen müssen, um ein bestimmtes Ergebnis zu erzielen.
    Dann schreibt man einige Handvoll Bytes in eine Datei, vergibt eine "passende" Dateiendung und ein Programm kann diese Dateiinhalte darstellen.

    Meistens besteht die Struktur des Dateiinhalts aus einer Dateikennung, einem sog. "Header" mit der Beschreibung der Daten und den Daten selbst.
    Bei einer Bitmap besteht der Dateiinhalt bspw. aus der Kennung BM, dann folgen 52 Bytes der Beschreibung des Bildes (Breite, Höhe, Farbtiefe usw) und dann die einfach nacheinander die "Pixelfarben". Die Dateiendung lautet dann .BMP
    Nun kann dich niemand daran hindern, diese Daten so zu schreiben wie es dir passt. In der Bitmapdatei kannst du natürlich statt der "Pixelfarben" einfach Text oder "Musik" reinschreiben. Das sieht dann, wenn ein Bildanzeigeprogramm diese Datei öffnet, etwas seltsam aus, aber was solls...
    Wichtig ist nur, die "Struktur" nicht zu überschreiben bzw. auch an die ggf. hinzugefügten Daten anzupassen.

    Eine Textdatei ist das einfachste lesbare Dateiformat, da stehen einfach nur Buchstaben, also "lesbare Bytes" hintereinander...
    Allerdings kann jeder "Depp" diese Daten auch lesen, um "geheime" Daten dort abzuspeichern, sollten diese dann (mehr oder weniger kompliziert) verschlüsselt werden. Oder man "versteckt" diese Daten einfach innerhalb einer bestehenden, unschuldig ausssehenden Datei. 8o

    Wenn man sich eine eigene Struktur überlegt, kann man ein eigenes Dateiformat erstellen, eine passende Dateiendung zur Kennzeichnung vergeben und hat ein eigenes Dateiformat kreiert! Wenn du ein Programm mit einigen Dateien weitergibst, deren Dateiendung .lottich oder .lot lautet, dann macht das eher Eindruck als ein schnödes .txt oder .bmp 8)


    In der oben angesprochenen DLL sind 10000 Bytes an "Nullbytes" enthalten. Das sind die Platzhalter um deine Daten zu verstecken.
    Die Anfangsposition dieser Daten kann man sich entweder über eine Funktion in der DLL zurückgeben lassen, oder per stringinstr() suchen. :D
    Am Anfang dieses Datenbereichs habe ich das Passwort (eigentlich Startwort) "Hallo AutoIt!" geschrieben. Dort dahinter hast du 10000 Bytes zum "rumspielen".
    Du könntest auch einfach eine Datei mit 13649 Bytes "Müll" (zufällige Bytes ohne Sinn) erstellen und deine Daten hintendranhängen und dort hintendran nochmal 23814 Bytes "Müll", der Effekt wäre derselbe, allerdings sieht die Verwendung einer DLL schon "cool" aus. Obwohl sie nur ein "Textcontainer" ist. :whistling:

    Per Fileread() den Inhalt der Datei lesen und mit stringinstr() die Startkennung ("Hallo AutoIt!") und Endekennung (das nächste Nullbyte) suchen ist im Script gezeigt.

    Du kannst diese Daten einfach per Stringreplace() mit neuen oder anderen Daten ersetzen. Allerdings sollte die Anzahl der Bytes innerhalb der Datei konstant bleiben, sicher ist sicher.
    Also die Bytes der DLL bis zum Start, dann deine Daten, dann "Müll"-Bytes bis 10000 Bytes erreicht sind, dann den "Rest" der DLL. Stringleft(), Stringmid() und Stringright() sind hervorragend dafür geeignet 8)
    Voila, wenn du nun die 10000 Bytes aus deinen Daten und darauffolgenden zufälligen Bytes erstellst, wird es auch "Profis" sehr schwer, deine Daten zu lesen.

    Zzt. ist das einfach, lade doch mal die lottich.dll in Scite =O
    Wie man die "Nutzdaten" simpelst per XOR (und mit dem "Passwort" aus der DLL) in 3 Zeilen verschlüsselt, kannst du selbst rausfinden :P


    Jetzt höre ich wieder das Gejaule derjenigen die rumheulen "Sowas braucht heutzutage kein Mensch mehr, nimm ne Datenbank oder verschlüssele mit ACE2048, DAS ist professionell!"
    Das sind aber auch seltsamerweise genau diejenigen die dumm durch die Finger schauen wenn irgendetwas mit der DB oder ACE2048 nicht funktioniert. DANN muss ein anderer kommen und das Problem lösen, während Lottich mit einem Blatt Papier und einem Bleistift in der Hand in 10 Minuten an seine Daten kommt :thumbup:
    Indem er eine DLL "knackt". Stimmt, "professionell" ist das nicht... ;)

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 20. April 2015 um 22:03

    viel zu kompliziert^^
    In einer GUI innerhalb eines Fensters ändert sich so gut wie nichts! Daher ist der Datentransfer zu vernachlässigen!

    Man könnte das einfach so lösen, dass bei einer bestimmten Tastenkombination im Client das Fenster unter dem Mauszeiger (beim Server) diesen Fensterinhalt "fullscreen" im Clientfenster darstellt.
    Dazu müssen nur die Fensterinhalt-Koordinaten vom Server an den Client übergeben werden....schaumamal

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 20. April 2015 um 19:18

    @minx,
    du kannst per mausrad oder mit den +-Tasten und den Pfeiltasten den Bildausschnitt wählen, Mausklicks ins Fenster (rechte und linke) gehen übrigens auch

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 20. April 2015 um 17:43

    Ok,
    schaumamal, ob man noch einige FPS schinden kann, ich hatte weitere Versionen, welche nur den gewählten Ausschnitt übertragen.
    Bitte auch mal ausprobieren, ob Abschalten von AERO höhere Geschwindigkeit bringt, dann würde ich das Ab/Anschalten von AERO ggf. in die GUI integrieren.

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™