aardio如何写AHK里#ifwinactive这种窗口快捷键呢

yesorno 2月前 471 v 36.40 2024-09-10

如何为不同窗口配置不同热键呢

最新回复 (7)
  • aika107 2月前
    0 2
    key.hotkey
  • Xmzzz 2月前
    0 3
     import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=759;bottom=469;)
    winform.add()
    /*}}*/
    
    import winex;
    import win;
    import key.hotkey;
    import win.dlg.message;
    
    msgDlg = win.dlg.message(winform)
    var hkey = `
    ["RCtrl+6"] = function(hFocus){ 
    	if winex.find(,"winform1.*") == win.getForeground() {
    		..msgDlg.info("目标窗口激活中")
    	} 
    	return true;
    }
    `
    var hk = key.hotkey(winform)
    var code = '{' + hkey + '}'
    keyTable = eval(code)
    hk.loadTable(keyTable);	
    
    //winform.show();
    win.loopMessage();

    通过判断 winex.find 与 win.getForeground是否一致即可

    也可以通过aardio调用AHK,直接使用#IfWinActivate

  • yesorno 2月前
    0 4
    Xmzzz  import win.ui; /*DSG{{*/ var winform = win.form(text ...
    谢谢! 还是直接调用ahk简单点, 再请教下在ahk代码里有办法赋值aardio变量吗, 示例都是设置ahk的全局变量.
  • Xmzzz 2月前
    0 5
    yesorno 谢谢! 还是直接调用ahk简单点, 再请教下在ahk代码里有办法赋值aardio变量吗, 示例都是设置ahk的全局变量.

    可以参考AHK  与 AARDIO 混合编程示例

  • yesorno 2月前
    0 6
    Xmzzz 可以参考AHK  与 AARDIO 混合编程示例
    示例看调用aar的函数,但是不能修改aar的变量, 在函数里修改变量的话,只是修改ahk线程的变量, 主线程的变量值改不了
  • Xmzzz 2月前
    0 7
    yesorno 示例看调用aar的函数,但是不能修改aar的变量, 在函数里修改变量的话,只是修改ahk线程的变量, 主线程的变量值改不了
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="嵌入 AutoHotkey v1 演示")
    winform.add(
    edit={cls="edit";left=17;top=18;right=741;bottom=445;edge=1;multiline=1;z=1}
    )
    /*}}*/
    
    //导入 AutoHotkey v1 扩展库
    import ahk; 
    
    /* 定义 AARDIO主线程的变量 */ 
    aardioVar = "这是aardioVar"
    winform.edit.print("未修改前,AAR主线程的值:",aardioVar);
    /*
    导出允许AutoHotkey 调用的 aardio 函数(函数名必须以 on 开头)。
    */
    ahk.onTest = function(param){
    	if param.x==1 ..aardioVar = "AHK 修改aardioVar"
        else ..aardioVar = "AHK 修改aardioVar " ++ tostring(param.x)
        winform.edit.print("ahk调用修改AAR主线程的值:",..aardioVar);
        winform.show(true);
    }
    
    //运行ahk代码
    ahk.run( `
    #Persistent ;保持 AHK 线程不退出
    #NoTrayIcon ;不显示托盘图标
    #include <aardio>  ;启动 AHK 代码中必须加入这句才能与 aardio 交互
    
    ahkVar := "这是AHK变量值"
    ; 定义函数与 aardio 有点像,aardio 一般会写为 GetPoint = function(hwnd){ return value;}
    GetPoint(){    
        global ahkVar
        ; 直接调用aardio函数,支持任意类型、不定个数的调用参数
        aardio.onTest({x:1})
        
        ahkVar := "这是修改后AHK变量值"
        return { x : ahkVar }
    }
    ^7::
    	aardio.onTest({x:"我修改了哦"})
    	ahkVar :="我修改了哦"
    	MsgBox % ahkVar
    return  
    `);
    
    var point = ahk.GetPoint();
    
    winform.edit.print("Aardio 调用ahk函数的结果:",point);
    winform.edit.print("ahk调用修改AAR主线程的值:",aardioVar);
    win.loopMessage();

    aardio 轻松修改 AHK中的值 ,

    按下快捷键 Ctrl + 7,ahk 同样修改  aardio 的值。 

  • yesorno 2月前
    0 8
    Xmzzz import&nbsp;win.ui; /*DSG{{*/ var&nbsp;winform&nbsp;=&nbsp;win.form(text=&quot ...
    nice! 谢谢,可以了
返回