Die DLL ist eine .NET-Assembly, importieren Sie den generierten TLB.
heruntergeladen ".NET-Assembly/Automatisierungspaket" aus: https://winscp.net/eng/download.php
Ausgepackt, registriert pro readme_automation.txt
enthalten.
Siehe auch Downloading and Installing WinSCP .NET Assembly
frisch Dolphin gestartet, die .tlb
importiert, mit WinSCP
Präfix erzeugt (so die Klassen nicht mit _
beginnen würde).
Eröffnet Arbeitsbereich importiert die WinSCP_Constants Pool, umgewandelt Start des C# Beispiel (https://winscp.net/eng/docs/library#example):
opts := WinSCP_SessionOptions new
protocol: Protocol_Sftp;
hostName = 'example.com';
userName: 'user';
password: 'mypassword';
sshHostKeyFingerprint: 'ssh-rsa 2048 ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff';
yourself.
Got Arbeits Objekt zurück ...
EDIT: Ihr WinSCP Foren Begriff „um Um es innerhalb von Delphin zu verwenden, müssen Sie seine Werkzeuge haben, die DLL und Tlib registrieren " ist falsch. Die COM "source" muss nur einmal registriert werden (Bei "old-school" COM-Server kann man entweder regsvr32 oder dolphin verwenden - beides tut dasselbe; im Falle der .NET Assembly muss man die .NET-Beschwörung verwenden). Das einzige, was auf der Delfin-Seite wirklich benötigt wird, ist die zuvor registrierte Bibliothek zu importieren.
Wenn es .TLB
ist, würde ich für .TLB
gehen, andernfalls versuchen mein Glück mit .DLL
. Leider hat Microsoft für einige Standard-COM-Schnittstellen keine typelibs verfügbar gemacht, daher ist es dort noch schlimmer (benutze C/C++ oder erstelle struct/interface-Tabellen von Hand).
Edit 2 - weitere Fragen:
1) können Sie die Beziehung zwischen den typelib und der Bibliothek Klasse erklären, die (dh Delphin Tutorial-Hilfe) Spiegel
Dolphin schaffen Klassen smalltalk "i erstellen" die COM-Typen/-Strukturen. Sie verwenden diese, um COM-Typen aus Smalltalk zu instanziieren, ihre Methoden aufzurufen, sie (und auch primitive Typen wie Strings, Integer, ...) als Argumente zu übergeben und Smalltalk-Typen für zurückgegebene Werte zu erhalten (Dolphin übernimmt alle Konvertierungen für Sie) Sie können + - vergessen, dass Sie einen fremden Code aufrufen.
2) ein Beispiel für die Methode, die Sie implementiert haben, indem Sie die Bibliotheksklasse der winscp-Schnittstelle zuordnen.
Ich habe nichts implementiert, ich habe nur den generierten Wrapper (im Hintergrund, WinSCP COM-Objekt - SessionOptions
- wurde erstellt, und hatte einige Eigenschaften festgelegt).
im Grunde, ich sagte nur:
var opts = new WinSCP.SessionOptions().
opts.Protocol = Protocol.Sftp;
opts.HostName = .........
Gerade bei WinSCP Automation Dokumentation/Beispiele, und es dann konvertieren smalltalk-sprechen (und hoffentlich auch, es sollte auto-magisch arbeiten ;-).
3) wo sind die smalltalk-methoden protocol :, hostName :, etc definiert? Ich habe das Bild gesucht und sie sind nicht da. Woher wussten Sie, diese Methodennamen zu verwenden?
Da SessionOptions
(durch [PREFIX]_SessionOptions
Klasse in Dolphin dargestellt) eine IDispatch
Schnittstelle (Subklasse von IDispatch
in Dolphin) ist, werden alle Methodenaufrufe sind dynamischer Natur. Sie tun nur die richtigen Dinge (& fangen mögliche Fehler bei der notwendigen Granularität), und es wird "nur funktionieren (tm)".
Smalltalk sibbling ist die #doesNotUnderstand: aMessage
Methode.
PS: Ich werde nicht zu winSCP Foren abonnieren, wo Sie auch gefragt haben, ob es das ist, posten Sie es dort ... –
miroslav, ich folgte Ihren Anweisungen und Beispiel und erhielt eine gültige Instanz zurück. Vielen Dank! – Duetto
miroslav, 1) können Sie die Beziehung zwischen der typelib und der Bibliothek Klasse, die ich erstellen (dolphin Tutorial in der Hilfe) zu erklären 2) ein Beispiel für die Methode, die Sie die Bibliotheksklasse auf die winscp-Schnittstelle zuordnen implementiert. – Duetto