Wie erhalte ich Dateipfade von Elementen, die in einem Konsolenanwendungsfenster abgelegt wurden?

8

Ich möchte es Benutzern ermöglichen, Dateien per Drag-and-drop in das Fenster meiner Konsolenanwendung zu ziehen, damit sie nicht gezwungen werden, Dateien auf das Symbol der Anwendung (oder Verknüpfung) zu ziehen oder gar eine Befehlszeile zu schreiben Konsole). Wie bekomme ich die Liste der Pfade von Dateien, die ich auf das Fenster meiner App lade?

    
user1306322 30.09.2012, 16:12
quelle

3 Antworten

6

Sie können nur auf die Tastatur hören. Beim Ziehen einer Datei in ein Konsolenfenster erhält das Fenster Tastaturereignisse, als wäre der Dateiname direkt eingegeben worden.

So können Sie eine Datei in einem cmd - oder PowerShell-Fenster ablegen und den vollständigen Dateinamen so erhalten, als wäre er direkt eingegeben worden. Dies funktioniert auch für Ihre eigenen Anwendungen.

    
Joey 30.09.2012, 16:20
quelle
4

Eine Konsolenanwendung besitzt kein eigenes Fenster, csrss.exe . Selbst wenn Sie das Fenster " HANDLE " finden, können Sie sich daher nicht für Drag-and-Drop registrieren oder Drop-Nachrichten verarbeiten. Ihre Konsolenanwendung ist daher auf die Arten von Nachrichten beschränkt, die von csrss.exe über die Konsolen-API weitergeleitet werden. Sie sind hier aufgelistet: Ссылка Ziehen und Ablegen ist nicht unter ihnen , obwohl Mausereignis innerhalb der Konsole sind.

Am besten ist es wahrscheinlich, eine Anwendung zu erstellen, die wie eine Konsolenanwendung aussieht, aber keine Windows-Konsole verwendet. Stattdessen würden Sie Text und einen Cursor auf dem Bildschirm zeichnen und Tastatureingaben vornehmen, um eine Befehlszeilenschnittstelle zu erstellen.

Diese Art von Ding wird "Konsolenemulator" genannt, und Sie können wahrscheinlich einen bereits gebauten finden, der Ihren Bedürfnissen entspricht.

    
Ben Voigt 30.09.2012 16:20
quelle
0

Sie können nicht verwenden, da die Konsolenanwendung kein Fenster enthält. Es hat Standard-Eingabe-, Ausgabe- und Fehler-Streams.

Fenster, das eine Konsolenanwendung enthält, ist ein Fenster der CMD-Anwendung (cmd.exe), und Sie können das grundlegende Verhalten der Windows-Konsole nicht ändern.

CMD funktioniert wie Terminal (Putty, Telnet, Ssh usw.) - es sendet Zeichen von der Tastatur zur Anwendung (genau - es sendet Zeichen an "Standard-Eingabe") und zeigt Zeichen durch "Standard-Ausgabe" der Anwendung generiert.

Lesen Sie ein wenig über Standard-Streams. Ссылка

Verhalten von CMD.exe unter meinem Windows 7

Ich kann den Dateinamen (mit vollständigem Pfad) von drag / drop übergeben. Wenn ein "Dateisymbol" im cmd-Fenster gelöscht wird, wird der Dateiname "eingegeben" - aber es gibt kein CR / LF (Zeilenvorschub) -Zeichen, daher funktioniert die "readline" -Funktion nicht.

Durch das Löschen mehrerer Dateisymbole wird nur eine Datei übergeben.

Tut mir leid, wenn ich ein paar Sprachfehler gemacht habe.

    
Kamil 30.09.2012 16:40
quelle