Benutzerinteraktion via Console

  • Hallo Gemeinde,


    eines meiner Programme kann man sowohl mit GUI starten, als auch mit commandline parametern.

    Wird es mit Commandline Parametern gestartet, gebe ich Meldungen des Proggis mit _WinAPI_WriteConsole aus.


    Ich müsste jetzt nachträglich den Benutzer fragen ob er eine Aktion starten möchte oder nicht. Etwa so:

    Code
    _WinAPI_WriteConsole($hConsole, @CRLF & " MinimalLength-Option is set, which prevents the Passwort from being deleted!!! " & @CRLF & " Should the option be deactivated (restarting the computer is then mandatory)?" & @CRLF & "enter y or n:")

    Gibt es eine Möglichkeit via _WinAPI, die Benutzereingabe auszulesen und zu verarbeiten?
    Ich konnte zwar in der MSDN-Bibliothek etwas über ReadConsole finden(https://learn.microsoft.com/en-us/windows/console/readconsole) aber nichts dazu in AutoIt ;(

    p.s.: ConsoleWrite und -read gehen hier nicht, da das Proggi NICHT als Consolen-Anwendung kompiliert ist!

  • Eine MsgBox scheidet auch aus?
    Die Auswahl des Benutzers kannst Du dann ja zur Dokumentation auf der Konsole ausgeben.

  • manchmal ist die allgemeine Beschreibung dessen, was erreicht werden soll hilfreicher.

    So mancher hatte hier schon Ideen, auf die der Thread-Ersteller nie gekommen wäre.

    Dazu braucht es aber den Blick auf das Problem und nicht auf die bereits eingeschränkte Lösungsfindung des Thread Erstellers.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Dazu braucht es aber den Blick auf das Problem und nicht auf die bereits eingeschränkte Lösungsfindung des Thread Erstellers.

    Das nennt man das XY-Problem: https://de.wikipedia.org/wiki/XY-Problem

  • hallo zusammen,

    dann will ich nochmal das Problem beschreiben:

    Mein Programm ist als exe kompiliert und kann sowohl per GUI-Version als auch in einer CMD-Konsole mit Commandline-Parametern
    gestartet werden.

    Nun ist es so, das eine Bios-Option (Minimal lenght) das Löschen des Biospasswortes verhindert. Der User soll also auf Consolenebene
    bestätigen können, dass das Proggi diese Option deaktivieren soll um dann einen Reboot des Rechners durch zu führen.

    Der Stand meines Codings ist, dass nach der Benutzereingabe auf o.a. WinApi-Frage, der Fehler kommt,
    y' is not recognized as an internal or external command, operable program or batch file.

    Mir ist klar warum. Die Eingabe interagiert mit der Console und nicht mit dem ausgeführten Programm. Leider finde ich
    genau hierfür aber keine Lösung. Eine Inputbox habe ich schon getestet, sieht aber echt schlecht aus...

    2 Mal editiert, zuletzt von SOLVE-SMART (25. September 2024 um 09:00)

  • Eine Inputbox habe ich schon getestet, sieht aber echt schlecht aus...

    Soll heißen das Design der InputBox gefällt dir nicht oder die InputBox an sich geht nicht?

    Vorschlag:
    Du lässt den Nutzer das Öffnen des Programms doch sowieso schon mit Parametern zu. Warum dann nicht einen weiteren Parameter der die Option ...

    eine Bios-Option (Minimal lenght) das Löschen des Biospasswortes verhindert

    ... deaktiviert. Fertig 😅 .

    Viele Grüße
    Sven

  • Hallo Solve-Smart,

    da das Proggi ja in einer CMD-Console läuft, finde ich sieht es einfach komisch aus, wenn dann eine Inputbox
    aufpoppt. Noch dazu, dass diese warum auch immer, nicht wie in der Hilfe steht default zentriert auf ging, sondern
    i-wo auf dem Desktop...

    hm, das mit dem Parameter wäre eine Möglichkeit. Danke für die Idee.

    Vielleicht hat jemand trotzdem eine Idee wie ich die Benutzereingabe "umleiten" kann...

  • Also, wenn du ein Programm als Gui Version kompilierst dann ist trotz Aufruf aus einer Konsole heraus das Programm ein GUI Programm.

    Zitat

    Mein Programm ist als exe kompiliert und kann sowohl per GUI-Version als auch in einer CMD-Konsole mit Commandline-Parametern
    gestartet werden.

    Ich verstehe den Aufbau noch nicht, dass du ein Gui Programm dann in der Konsole interagieren lassen willst.
    Du kannst ja gerne deine exe mit Parametern über eine Konsole starten, aber danach wäre eine Abfrage mit einer MSgBox doch der richtigere Weg.

    Zitat

    und warum muss es WinApi ... Dingsbums sein?
    Wird es mit Commandline Parametern gestartet, gebe ich Meldungen des Proggis mit _WinAPI_WriteConsole aus.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • und wenn alle Stricke reißen und der User auf biegen und brechen ein Konsolenfenster braucht (warum auch immer)

    dann bau dir eine 2. GUI und mach das Eingabefenster als Edit Control Background schwarz. :rofl: (sry, der musste sein)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Hallo Schnuffel,

    das Proggi muss im Windows OS funktionieren, in Windows PE und eben als ConsolenProgramm um vollautomatisiertes Ändern oder Löschen
    des BIOS-Passwortes(wir reden hier u.U. von mehreren hundert Rechnern...) zu ermöglichen. Die Möglichkeit das Proggi
    mit Commandline-Parametern zu starten wurde bereits in einige unserer IT-Prozesse integriert.

    Die genannte BIOS-Option verhindert das Löschen des BIOS-Passwortes. Also ist die Interaktion mit demjenigen der das Proggi ausführt notwendig.
    Das Seltsame ist ja, das die Interaktion grundsätzlich funktioniert. Nur finde ich keine Lösung die "Einmischung" der Console zu verhindern...

    Im Übrigen kam die Hilfe WinAPi zu benutzen hier aus dem Forum, da ConsoleWrite/Read in diesem Falle ja nicht funktioniert, weil das Proggi ja ein GUI-Programm ist.

    Ich werde nun die Idee von Solvesmart verfolgen und einen weiteren Parameter dafür nutzen.

    Evtl. weiss ja doch noch jemand eine Lösung?

  • Hallo Gemeinde,

    dank des Schwester-Forums autoitscript.com ist die Lösung gefunden:


    Damit lässt sich mit der Console wunderbar interagieren :thumbup: auch von hier aus noch ein herzliches Dankeschön
    an Nine von https://www.autoitscript.com/forum/topic/21…exe-with-a-cmd/

    Einmal editiert, zuletzt von SOLVE-SMART (16. Oktober 2024 um 18:10)