Drag & Drop auf Konsole

NoUse4aNick

Mitglied
Guten Tag,

Der Titel ist eventuell ein wenig ungünstig gewählt ich finde jedoch nichts passenderes um mein Anliegen besser zu beschreiben.

Ich versuche per Drag & Drop im Explorer Daten auf eine .exe, welche eine Konsolen Anwendung ist, mehrere Daten zu schieben, sodass die Konsolen Anwendung alle Dateien nacheinander ausliest und auswertet.

Das ganze soll folgendermaßen ablaufen: In der Datei ( .txt dateien vorerst zum üben, im späteren verlauf allerdings .bin dateien) sind namen abgespeichert. Die Konsolen Anwendung nimmt alle Namen aus jeder einzelnen Textfile herraus, und fügt sie in einer neu erstellten Datei dann zusammen, nach folgendem Schema:
Code:
Datei1 hatte folgende Namen: Jan, Fritz, Jürgen
Datei2 hatte folgende Namen: Heike
Datei3... usw....

Die Auswertung an sich ist kein Problem, allerdings das Drag & Drop der vielen Dateien. Leider habe ich nicht den geringsten anhaltspunkt welche funktionen dafür zuständig sind, bzw irgendeinen ansatzpunkt zum googlen.

Ich arbeite mit Visual Basic Express 2008

Ich wäre sowohl über Code beispiele aber auch über funktionsnamen erfreut.

Vielen Dank schoneinmal im voraus!
lg NoUse4aNick
 
Zuletzt bearbeitet:
Ich glaube nicht das das mit einer Konsole geht immerhin müssen ja sozusagen die Windows Nachrichten abgefangen werden.

Ich würde an deiner Stelle ein Formular machen.
DIe Auswertung kannst du ja auch z.B. über eine Listbox anzeigen lassen oder halt normales Textfeld.
 
nö, schau dir mal beim Formular die DragOver und DragDrop Ereignisse an.
Sowie die Methode DoDragDrop.

OpenFIleDialog würde ich aber noch zusätzlich anbieten ;)
 
Du könntest auch eine Form mit treeView Steuerelemnt nehmen und den Explorer , von welchem knoten aus auch immer, nachbilden und die zu enthaltenen dateien der Ordner dann per drag and Drop zu überprüfen.

Einfacher wärs aber wenn du den ausgewählten Ordner (z.B. mit einem Folder Browser Dialog) einliest und die darin enthaltenen dateien per schleifendurchlauf abarbeitest und dann so anzeigst wie von spyke schon vorgeschlagen.

Aber ich weiss ja nicht was du genau vorhast ;-)
Mit Konsole wirds meines Wissens nicht gehen.. oder auf alle Fälle sehr umständlich
 
So ich Kram das Thema mal wieder hervor da ich es bewusst noch nicht als gelöst Eingestuft hatte.

Das mit dem Drag und Drop funktioniert jetzt ein wenig Instabil aber dennoch im Runstate. Was allerdings noch nicht funktioniert ist das DropOnto Executable, also das ich ohne dass das Programm läuft mir meine Dateien schnappe
(Anzahl egal kann eine Einzige sein, es sollten aber auch mehrere möglich sein) ich ziehe sie auf die fertige .exe und das Programm startet ganz normal allerdings schon mit den Daten welche ich draufgezogen habe geöffnet.

Hab schon im Netz gesucht allerdings werden mir nur Lösungen und Codes für Drag & Drop im Laufzeit modus gezeigt.

Wäre nett wenn mir entweder Codebeispiele gezeigt werden oder die nötigen Funktionen.

lg
 
Die Dateien werden dann als Parameter an das Programm übergeben.

C#:
static void Main(string[] args)
{
	foreach (string arg in args)
	{
		Console.WriteLine(arg);
	}
}

lg,..
 
Danke funktioniert!

Mir hat Zwar nicht der Code geholfen, da ich in VB arbeite aber Das ich die Parameter Übergebe.
In VB muss man das ganze ein wenig anders anlegen.

Hier mal mein Code für alle die Ebenfalls auf dieses Problem stoßen werden:

Code:
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        execute_args()
    End Sub

    Public Sub execute_args()
        Dim sArgs As String()
        sArgs = Environment.GetCommandLineArgs()
        For i = 1 To args.Length - 1
            Dim sPath As String
            sPath = Application.StartupPath & "/log.txt"
            System.IO.File.AppendAllText(sPath, sArgs(i) & vbCrLf)
        Next
    End Sub
Der Oben beschriebene Code erstellt im selben Verzeichniss eine Datei Namens log.txt in welcher er dann hineinschreibt, welche Dateien bzw Parameter übergeben wurden.

Falls ihr euch fragen solltet weshalb die for schleife mit 1 und nicht 0 ( was ja eigentlich bei arrays der fall ist ;) ) startet, reicht ein Blick in die log.txt.
Der erste Parameter, also das 0te Array, ist das Programm selbst ist.

lg
 
Zuletzt bearbeitet:
Gehört nicht ganz zum Topic (habe mir auch nicht den ganzen Thread vollständig durchgelesen), aber der Vollständigkeit wegen möchte ich anmerken, dass der Code von Alexander Schuc auch in VB geschrieben werden kann:
Code:
Module Module1

    Sub Main(ByVal args As String())
        For Each arg As String In args
            Console.WriteLine(arg)
        Next
    End Sub

End Module
Das ist bereits ein vollständiges VB.Net-Programm. Man muss lediglich in den Projekteigenschaften einstellen, dass keine Form angezeigt werden soll (Startup-Form), sondern die Methode Main ausgeführt werden soll (innerhalb dieser man natürlich beliebig Forms anzeigen kann).
 

Neue Beiträge

Zurück