http://codepad.org/lqIVmoKK
其中_sendOrder這個function是我早上寫的,
用來測試若不傳callback function為參數的話,
會不會work,
這個很順利,
一次就成功,
所以有需要的人可以直接拿去用
另外之前試不起來的主因是這行
CMPFUNC = CFUNCTYPE(c_int, comtypes.BSTR)
就是create ctype的callback function時
它應該是會去檢查這個type對不對
我把參數那欄改成comtypes.BSTR之後
就可以work了
我想簡單的說就是它對參數的格式
檢查很嚴格吧
而之前把callback function取id再轉型
完全就是交叉測試
因為不知道不work的原因在哪
就亂試一通啦XD
原來我還懷疑在callback function裡用print
不能保證會print到console下
所以讓它寫個測試字串到file裡
所以_testWrite()就是這個想法下的產物…
以上就是這次測試過程的一些想法
跟大家分享一下
=======================
另外目前這個版本的code
雖然會work(就是callback有抓到帳戶資料)
但是還有兩個問題
1) 有error
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 320, in 'converting callback result'
TypeError: an integer is required
Exception in <bound method qyAPI._oiCallback of <__main__.qyAPI instance
at 0x00EE8C88>> ignored
Traceback (most recent call last):
File "C:\qy\2.1.5\ctypes\qyAgent.py", line 81, in go
self._GetUserAccount()
ValueError: Procedure probably called with too many arguments (942000 bytes
in excess)
官網上對這個error的說法是1)錯誤的參數個數,或是2)錯誤的calling convention
應該是第二個wrong calling convention
但是這個我就沒有想法了囧
2) callback function被呼叫了兩次
如果會叫兩次的話
這個case是ok
若其它case應該會造成困擾
以上再請教大家的想法
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.51.128
※ 編輯: cobrasgo 來自: 220.130.51.128 (01/27 19:14)
感謝大家的幫忙,我試出來了(雖然還有error囧)