Veröffentlicht 4. Februar 20214 j Hallo an alle, ich muss über SFTP mit Dateien umgehen. Ich habe mir dazu WinSCP angesehen und alles heruntergeladen und habe auch alles aus der Doku gemacht. Wie bekomme jetzt Zugriff auf das Interface? Oder gibt es sogar einen anderen Weg?
4. Februar 20214 j Kannst Du Deine Frage nochmal neu stellen ???? Du willst von Windows aus Dateien über SFTP kopieren, verstanden. Aber WinSCP ist doch ein Programm mit GUI ?? Oder willst Du sowas ? https://www.nikolaus-lueneburg.de/2016/12/ssh-und-sftp-mit-der-powershell/
6. Februar 20214 j WinSCP bietet auch eine .NET COM Library: https://winscp.net/eng/docs/library Da ist doch eigentlich alles ganz gut beschrieben für's erste. Wo genau bleibst du denn stecken?
9. Februar 20214 j Autor Ich programmiere mit VC++ und MFC. Bisher habe ich CFTPConnection usw. genutzt, um auf einem Server mit Dateiverzeichnissen zu arbeiten. Jetzt brauche ich dazu SFTP. Das WinSCP bietet dazu die .Net Assemblys bzw. COM. Wie kann ich WinSCP in das Visula Studio 2017 bzw. in mein Projekt einbinden, um das zu nutzen?
9. Februar 20214 j Ist doch alles in der WinSCP-Dokumentation beschrieben: https://winscp.net/eng/docs/library_install Wo hast du denn genau deine Probleme? Bearbeitet 9. Februar 20214 j von Whiz-zarD
10. Februar 20214 j Autor Ja, ist beschrieben, wie man das COM registriert. Habe auch eine tlb-Datei im Ordner erhalten. Aber wie spreche ich dieses COM-Interface an?
10. Februar 20214 j Naja, beim COM-Interface hast du es ja nicht direkt mit den konkreten Datentypen zu tun, sondern mit Objekten, die du von der COM-Schnittstelle bekommst. Du musst also um die Beschaffenheit der Objekte bescheid wissen. Da kenne ich mich aber mit VC++ nicht aus, wie man letztendlich die COM-Schnittstelle nutzt. In C# gibt es die Methode Type.GetTypeFromProgID() um sich die ID zu einem Datentyp zu holen um dann per Activator.CreateInstance() eine Instanz des Datentypens zu machen. Ich würde vielleicht auch eher die Assembly per NuGet einbinden. Das hat den Vorteil, dass man da direkt mit den konkreten Datentypen arbeiten kann. Wenn ich das richtig verstehe, ist das ja auch nur ein Wrapper.
10. Februar 20214 j Autor Und wie würde ich das mit dem NuGet anstellen? Das habe ich bisher noch nicht gebraucht.
10. Februar 20214 j Der NuGet-Paketmanager sollte eigentlich bekannt sein, wenn man mit .NET arbeitet. In Visual Studio einfach mit der rechten Maustaste auf das Projekt klicken und "NuGet Pakete verwalten..." auswählen und dort das Paket WinSCP installieren. Dann kannst du halt die Datenklassen verwenden. In der Dokumentation findet man zwar keine Beispiele für VC++ aber welche für C#, die man dann in die Sprache überführen müsste.
11. Februar 20214 j Autor Ich habe bisher nicht mit .Net gearbeitet. Na mal sehen, wie weit ich komme.
17. Februar 20214 j Autor Nicht sehr weit. Auch in meinem C++-Projekt kann ich das NuGet-Paket herunterladen bzw. installieren. Trotzdem komme ich nicht an die COM-Interfaces ran. Ich kenne ja die Namen nicht. Und um eine lib-Datei zu erstellen brauche ich den Embarcadero C++ Builder. Dort muss man sich registrieren. Und nur für eine lib erstellen; ich weiß nicht. 'schuldigung wenn ich mich hier so anstelle. Mir fehlt die Erfahrung damit.
17. Februar 20214 j Wenn du das NuGet-Paket installierst, kannst du direkt die Klassen verwenden und musst nicht über die COM-Schnittstelle mit WinSCP kommunizieren. Das machen die Klassen für dich. Ich kenne mich mit Visual C++ nicht besonders gut aus aber schaue dir doch die C#-Beispiele an und wandel den Code in Visual C++ selbst um. Was hast du denn überhaupt vor? Wenn du dich nur per SFTP auf einen Server verbinden möchtest, gibt es ja auch andere Wege. Bearbeitet 17. Februar 20214 j von Whiz-zarD
18. Februar 20214 j Autor Leider kann man das nicht so einfach wandeln, da dazu entweder die lib-Datei notwendig wäre oder eben COM. Ich möchte auf dem SFTP-Server in bestimmte Verzeichniss gehen, mir dort den Inhalt auflisten lassen und ggf. Ordner mit allem herunterladen und auch hochladen können. So wie ich das bisher mit FTP (CInternetSession, CFtpConnection) gemacht habe. Für einen anderen Weg wäre ich dankbar.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.