的DLL是一個.NET組件,導入所生成的TLB。
下載「.NET組件/自動化包裝」 從:https://winscp.net/eng/download.php
解壓後,登記爲每包括readme_automation.txt
。
參見Downloading and Installing WinSCP .NET Assembly
開始新的海豚,進口.tlb
,與WinSCP
前綴產生(這樣的類不會與_
開始)。
打開的工作空間,進口WinSCP_Constants游泳池,轉換後的C#示例的開始(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.
了工作對象回來......
編輯:您論壇的WinSCP概念「爲了要在海豚內使用它,你需要讓它的工具註冊dll和tlib「是錯誤的。 COM的「源代碼」只需註冊一次(對於「老派」COM服務器,您可以使用regsvr32或dolphin - 兩者都是一樣的;在.NET程序集的情況下,您必須使用.NET咒語)。海豚方面真正需要的只是導入以前註冊過的庫。
如果有.TLB
,我會去.TLB
,否則試試我的運氣.DLL
。可悲的是,對於一些標準的COM接口,Microsoft從來沒有提供過typelib,所以它更糟糕(使用C/C++或者手工創建結構/接口表)。
編輯2 - 進一步的問題:
1)你能解釋一下類型庫和「我創造」的幫助下(即海豚教程)
海豚創建的Smalltalk類鏡圖書館類之間的關係COM類型/結構。你可以使用這些實例從Smalltalk中實例化COM類型,調用它們的方法,並將它們(以及基元類型,如字符串,整數等)作爲參數傳遞,併爲返回值獲取Smalltalk類型(Dolphin爲你做所有轉換,所以你可以+ - 忘記你正在調用外國代碼)。
2)你實現的庫類映射到所述接口的WinSCP的方法的一個例子。我只是使用生成的包裝(在後臺,WinSCP的COM對象 - SessionOptions
- 創建,並有一些屬性設置)。
基本上,我只是說:
var opts = new WinSCP.SessionOptions().
opts.Protocol = Protocol.Sftp;
opts.HostName = .........
只要看看的WinSCP自動化文檔/實例,然後將其轉換爲Smalltalk的發言(和希望,它應該自動神奇的工作;-)。
3)其中,是Smalltalk的方法協議:,主機名:等定義?我搜索了這張圖片,他們不在那裏。你怎麼知道使用這些方法名稱?
由於SessionOptions
(由海豚[PREFIX]_SessionOptions
類表示)是一個IDispatch
接口(在海豚的IDispatch
亞類),所有的方法調用在本質上是動態的。你只要做正確的事情(&在必要的粒度捕捉可能的失敗),它會「只是工作(tm)」。
Smalltalk的sibbling是#doesNotUnderstand: aMessage
方法。
PS:我不會subscripbe到WinSCP賦予論壇,在這裏你還問,如果是這樣,它張貼在那裏... –
米羅斯拉夫,我按照您的指示和示例,並沒有得到一個有效的實例。謝謝! – Duetto
的Miroslav,1)你能解釋類型庫,並且我創建庫類(即海豚教程幫助之間的關係)2)你實現的庫類映射到所述接口的WinSCP的方法的一個例子。 – Duetto