群益api 版本: 2.13.6
python 版本: 2.7.13 64bit
但是 要修改成
(36,3) 看網上說明需要使用 VT_RECORD, 怎麼 VARIANT 塞進去 都會失敗.
參考:
http://hlfutures.blogspot.tw/2016/08/api-in-python_8.html
python 版本: 2.7.13 64bit
情境一: 使用 win32com
import sys import win32com.client.CLSIDToClass, pythoncom, pywintypes import win32com.client.util import win32event import win32com.client import pythoncom from win32com.client import makepy, gencache, DispatchWithEvents from win32com.client import VARIANT makepy.GenerateFromTypeLibSpec('SKCOMLib') infos = makepy.GetTypeLibsForSpec('SKCOMLib') clsid = infos[0][1].clsid major = infos[0][1].major minor = infos[0][1].minor lcid = infos[0][1].lcid SKComTmplate = gencache.EnsureModule(clsid, lcid, major, minor, bForDemand=True) SKCenterLib = win32com.client.DispatchEx (SKComTmplate.SKCenterLib.CLSID) SKQuoteLib = win32com.client.DispatchEx (SKComTmplate.SKQuoteLib.CLSID) SKQuoteLibEvent = DispatchWithEvents (self.SKQuoteLib, SKQuoteLibEvent) pythoncom.PumpWaitingMessages ()
登入、Event 都正常, 但在 SKCOMLib 內 卻取不到 SKTCOK這個 struct後面網路上搜尋或許可以使用 wincom32.client.VARIANT
但是 要修改成
SKQuoteLib = win32com.client.dynamic.DumbDispatch(SKComTmplate.SKQuoteLib.CLSID) def SKOSQuoteLib_GetStockByIndex(self, sIndex=defaultNamedNotOptArg, pSKForeign=defaultNamedNotOptArg): return self._ApplyTypes_(8, 1, (3, 0), ((2, 1), (36, 3)), u'SKOSQuoteLib_GetStockByIndex', None,sIndex, pSKForeign)
(36,3) 看網上說明需要使用 VT_RECORD, 怎麼 VARIANT 塞進去 都會失敗.
情境二: 使用 comtypes
這時,回傳是成功的, 但是 Event 卻一直沒有觸發, 後面的流程就沒辦法執行
http://easontseng.blogspot.tw/2017/08/api-in-python.html
參考 Eason 大大的網誌已可以成功串接 (2017.09.21)
參考:
http://hlfutures.blogspot.tw/2016/08/api-in-python_8.html
4 則留言:
我最近也在用 python 接群益API,希望可以交流一下
這是我的成果,可以接報價
https://easontseng.blogspot.com/2017/07/api-in-pyhton.html
但 Event 都要自己手動呼叫 pythoncom.PumpWaitingMessage(),運作上不是很順暢
不知道您有沒有什麼好的處理方法
@Eason
感謝你的分享,可以使用pythoncom.PumpWaitingMessage() 來觸發 event
我想 一般的處理方式 可以放在一個 while 的迴圈中來處理訊息的接收
網路上應該也不少使用 while 來處理訊息的範例,您可以參考一下
另外我有使用 pythonnet 也可以正常的接報價, 就沒再使用 comtypes
http://kwedr.blogspot.tw/2017/07/api-python-pythonnet.html
張貼留言