否則會出現錯誤訊息 "SK_WARNING_REGISTER_REPLYLIB_ONREPLYMESSAGE_FIRST".
API文件寫說:
SKCenterLib初使化檢查是否接收SKReplyLib_OnReplyMessage公告訊息並回傳指定值VARIANT_TRUE,方可登入。
SKReplyLib_OnReplyMessage 文件又寫說,當 sConfirmCode 回傳 VARIANT_TRUE (0xFFFF),表示你看過公告了。官方沒附範例還真難理解要怎麼實做,一陣摸索後,寫了一個目前可以運作的版本。這更新真是擾民啊,可能要設計個介面讓人讀取公告後按確認,才能進行登入吧,我把它寫死了,固定回傳 0xFFFF ,也就是 VARIANT_TRUE
from comtypes.client import GetModule, CreateObject, GetEvents
GetModule(r'C:\SKCOM\CapitalAPI_2.13.17\x64\SKCOM.dll')
import comtypes.gen.SKCOMLib as sk
#建立COM物件
if 'skC' not in globals(): skC=CreateObject(sk.SKCenterLib, interface=sk.ISKCenterLib)
if 'skQ' not in globals(): skQ=CreateObject(sk.SKQuoteLib, interface=sk.ISKQuoteLib)
if 'skR' not in globals(): skR=CreateObject(sk.SKReplyLib, interface=sk.ISKReplyLib)
#Configuration
ID=''
PW=''
#建立事件類別
class skQ_events:
def OnConnection(self, nKind, nCode):
if nCode == 0 :
if nKind == 3001 : print("連線中, nkind= ", nKind)
elif nKind == 3003: print("連線成功, nkind= ", nKind)
class skR_events:
def OnReplyMessage(self, bstrUserID, bstrMessage, sConfirmCode=0xFFFF):
#根據API 手冊,login 前會先檢查這個 callback,
#要返回 VARIANT_TRUE 給 server, 表示看過公告了,我預設返回值是 0xFFFF
print('OnReplyMessage', bstrUserID, bstrMessage)
return sConfirmCode
#Event sink, 事件實體
EventQ=skQ_events()
EventR=skR_events()
#make connection to event sink
ConnQ = GetEvents(skQ, EventQ)
ConnR = GetEvents(skR, EventR)
print("Login,", skC.SKCenterLib_GetReturnCodeMessage(skC.SKCenterLib_Login(ID, PW)))
感謝解答!!!
回覆刪除Thanks for your effort and it help me a lot.
回覆刪除感謝解答
回覆刪除感恩,真的非常有幫助
回覆刪除感謝, 我是用 2.13.18 版本的 API, C# 版本也要註冊 SKReplyLib 的 OnReplyMessage event 才會成功
回覆刪除我找的2天的BUG 以為發生甚麼問題 好險舊版API還在 直上舊版
回覆刪除請問Eason大2021年有新的解決方法嗎? 我照著上面程式碼還是出現
回覆刪除[Login, SK_WARNING_REGISTER_REPLYLIB_ONREPLYMESSAGE_FIRST]的訊息ㄟ
我更新至 API 2.13.27,用起來還是正常哩,你skR_events, OnReplyMessage 有寫對嗎?? GetEvent 也檢查一下
回覆刪除我除了GetModule路徑,ID & PASSWORD換成自己的, 都是照上面的程式碼貼上的
刪除所以應該跟EASON大你的一樣。但還是出現 SK FAIL [Login, SK_WARNING_REGISTER_REPLYLIB_ONREPLYMESSAGE_FIRST]
然後我的版本是 2.13.28
我更新至 2.13.28 上面的 code 也是可以用的,你是第一次使用群益api嗎? 還是之前有用過其他版本的api? 用什麼環境跑的 Jupyter 還是其他IDE? 有簽或申請 API 使用憑證嗎?
刪除是第一次使用,之前沒有用過其他版本的API。然後使用環境是Jupyter Notebook. 已經有申請API使用憑證,也有用install.bat安裝過了
刪除竟然您測試是可以使用的,但實在不知道是哪個環節出了問題,這個周末我再試試看,謝謝EASON大的回覆
不知道還能不能夠加入群組 感謝
回覆刪除fb 社團 Fintech.py,還在可以討論,有問題就在板上問,我可以的就盡量幫。但大家都很保守,分享的人少... 入社的問題請盡量回答,懶得回的人我也懶得加。line 群也還在,但曾經被翻群,連結我就不弄上來了,有緣就加吧,平時大家也都沒再討論,記得打個招呼
刪除