看板 Python 關於我們 聯絡資訊
感謝大家的幫忙,我試出來了(雖然還有error囧) 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)