国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
【AHK】給通達(dá)信軟件增加F1買入,F(xiàn)2賣出 交易熱鍵(基于中銀國際客戶端測試)

交易軟件都做得差強(qiáng)人意。。。同花順有熱鍵F1呼出買入和F2賣出的功能(見下圖),通達(dá)信則沒有(是有數(shù)字熱鍵221,223 總之是別扭)

 

來為通達(dá)信普通買入賣出功能增加熱鍵!(程序化交易的先得能呼叫出買賣功能然后自動填單)

(有錢的可以直接購買fix協(xié)議或者dll接口,沒錢的用ahk模擬人來操作吧,窮得蛋疼。。。)

 

【技術(shù)原理】

MSAA的全稱是Microsoft Active Accessibility。這是類似DCOM技術(shù)。
技術(shù)模型是這樣的,UI程序可以暴露出一個Interface,方便另一個程序?qū)ζ溥M(jìn)行控制。
MSAA技術(shù)的初衷是為了方便殘疾人使用Windows 程序。自動化自然可以借用這項(xiàng)技術(shù)。


 [源代碼]

  1. ;功能:給通達(dá)信軟件增加類似同花順的交易功能熱鍵  
  2. ;2015年10月25日11:39:03  
  3. ;作者:sunwind  
  4.   #SingleInstance,Force  
  5.   DetectHiddenWindows,On  
  6.   WINNAME := "TdxW_MainFrame_Class"  
  7.   CTRLNAME := "MHPToolBar1"  
  8.   hwnd:=ControlGetHwnd(CTRLNAME, WINNAME)  
  9.    
  10.   idObject:=0  
  11.   ;~ window   :=0  SELF  
  12.   ;~ client   :=  -4    
  13.   ;~ child_1 := 1;  
  14.   ;~ child_2 := 2;  
  15.   ;~ child_3 := 3;  
  16.    
  17.   ;========MHPToolBar1========  
  18.   ;按鈕所在的“小”窗口  
  19.   window := Acc_ObjectFromWindow(hwnd, idObject)    
  20.   ;========MainViewBar========  
  21.   ;窗口里面的工具欄  
  22.   MainViewBar:= Acc_Children(window)[3]  
  23.       
  24.   
  25. ;下面代碼是基于中銀國際交易軟件客戶端測試的  
  26.   ;========買入按鈕========  
  27.   buy:= Acc_Children(MainViewBar)[1]  
  28.   ;~ MsgBox % Acc_Role(buy)  " :: " buy.accName(0)  
  29.   ;========賣出按鈕========  
  30.   sell:= Acc_Children(MainViewBar)[2]  
  31.   ;========撤單按鈕========  
  32.   cancel:= Acc_Children(MainViewBar)[3]  
  33.   ;========成交按鈕========  
  34.   chengjiao:= Acc_Children(MainViewBar)[4]  
  35.   ;========持倉按鈕========  
  36.   chicang:= Acc_Children(MainViewBar)[5]  
  37.     
  38.   
  39.   
  40.   
  41. ;招商證券的  
  42.   
  43. ;========買入按鈕========  
  44. ;buy:= Acc_Children(MainViewBar)[12]  
  45. ;========賣出按鈕========  
  46. ;sell:= Acc_Children(MainViewBar)[13]  
  47.   
  48. ;這些信息查詢,需要用到AccViewer工具。  
  49.   
  50.   
  51. ;========熱鍵定義========  
  52.   
  53. ;F1買入,F(xiàn)2賣出,F(xiàn)3撤單,F(xiàn)4持倉查詢  
  54.   f1::   
  55.   buy.accDoDefaultAction(0)  
  56.   return  
  57.    
  58.   f2::  
  59.   sell.accDoDefaultAction(0)  
  60.   return  
  61.    
  62.   f3::  
  63.   cancel.accDoDefaultAction(0)  
  64.   return  
  65.    
  66.   f4::  
  67.   chicang.accDoDefaultAction(0)  
  68.   return  
  69.   ;========輔助函數(shù)========  
  70.   ControlGetHwnd(aCtrl, aWin)  
  71. {  
  72.       ControlGet, cID,hwnd, , %aCtrl%, ahk_class %aWin%  
  73.       Return cID  
  74.   }  
  75.    
  76.    
  77.   ;========acc庫函數(shù)========  
  78.   ; Written by jethrow  
  79. Acc_Init()  
  80. {  
  81.     Static  h  
  82.     If Not  h  
  83.         h:=DllCall("LoadLibrary","Str","oleacc","Ptr")  
  84. }  
  85. Acc_Query(Acc) { ; thanks Lexikos - www.autohotkey.com/forum/viewtopic.php?t=81731&p=509530#509530  
  86.     try return ComObj(9, ComObjQuery(Acc,"{618736e0-3c3d-11cf-810c-00aa00389b71}"), 1)  
  87. }  
  88. Acc_Error(p="") {  
  89.     static setting:=0  
  90.     return p=""?setting:setting:=p  
  91. }  
  92. Acc_ObjectFromWindow(hWnd, idObject = 0)  
  93. {  
  94.     Acc_Init()  
  95.     If  DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject&=0xFFFFFFFF, "Ptr", -VarSetCapacity(IID,16)+NumPut(idObject==0xFFFFFFF0?0x46000000000000C0:0x719B3800AA000C81,NumPut(idObject==0xFFFFFFF0?0x0000000000020400:0x11CF3C3D618736E0,IID,"Int64"),"Int64"), "Ptr*", pacc)=0  
  96.     Return  ComObjEnwrap(9,pacc,1)  
  97. }  
  98.    
  99. Acc_Children(Acc) {  
  100.     if ComObjType(Acc,"Name") != "IAccessible"  
  101.         ErrorLevel := "Invalid IAccessible Object"  
  102.     else {  
  103.         Acc_Init(), cChildren:=Acc.accChildCount, Children:=[]  
  104.         if DllCall("oleacc\AccessibleChildren", "Ptr",ComObjValue(Acc), "Int",0, "Int",cChildren, "Ptr",VarSetCapacity(varChildren,cChildren*(8+2*A_PtrSize),0)*0+&varChildren, "Int*",cChildren)=0 {  
  105.             Loop %cChildren%  
  106.                 i:=(A_Index-1)*(A_PtrSize*2+8)+8, child:=NumGet(varChildren,i), Children.Insert(NumGet(varChildren,i-8)=9?Acc_Query(child):child), NumGet(varChildren,i-8)=9?ObjRelease(child):  
  107.             return Children.MaxIndex()?Children:  
  108.         } else  
  109.             ErrorLevel := "AccessibleChildren DllCall Failed"  
  110.     }  
  111.     if Acc_Error()  
  112.         throw Exception(ErrorLevel,-1)  
  113. }  
  114.    
  115. Acc_Role(Acc, ChildId=0) {  
  116.     try return ComObjType(Acc,"Name")="IAccessible"?Acc_GetRoleText(Acc.accRole(ChildId)):"invalid object"  
  117. }  
  118. Acc_GetRoleText(nRole)  
  119. {  
  120.     nSize := DllCall("oleacc\GetRoleText", "Uint", nRole, "Ptr", 0, "Uint", 0)  
  121.     VarSetCapacity(sRole, (A_IsUnicode?2:1)*nSize)  
  122.     DllCall("oleacc\GetRoleText", "Uint", nRole, "str", sRole, "Uint", nSize+1)  
  123.     Return  sRole  
  124. }  


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PPT制作技巧集合 辦公軟件 辦公軟件 陽光海岸學(xué)術(shù)資源網(wǎng)
AHK熱鍵定義的幾種方式
AHK多線程熱鍵(共享變量)
怎樣使用QQ鎖
Ceedo把系統(tǒng)放到U盤中隨身攜帶
使用 AutoHotkey 熱字串簡化你的重復(fù)工作 不僅僅是擴(kuò)展熱鍵功能
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服