阅读:3314回复:5
[求助]请问怎么获取外挂小小的激活状态?
最近把媒体播放器换成了mpv,基本上都是键盘操作
但是常常因为小小输入法是激活状态,无法操作成功,要ctrl+spase关闭小小在操作, 因为习惯了把小小当作调用其他程序的快捷命令入口(比如调用FFmpeg和快捷输入FFmpeg的命令),导致这样的情况很多 所以我想用ahk写一个当检查到mpv是激活的时候自动取消小小输入法的激活状态 什么都准备好了,就差怎么获取激活状态了 谢谢 |
|
板凳#
发布于:2018-08-28 11:49
我是用粗暴的
#Persistent SetTimer, mympv, 250 return mympv: WinWaitActive ahk_exe mpv.exe Run, "..\yong\yong-vim.exe" 1,,Hide return 请问还有其他状态能切换吗?比如简繁 我使用各种模拟按键测试发送ctrl+alt+f都不行,只有物理按了才对小小有效 |
|
地板#
发布于:2018-08-28 14:36
查找ahk的帮助文件写了个新的
mympv: WinWaitActive ahk_exe mpv.exe { Run, "xxx\yong\yong-vim.exe" 1,,Hide } WinWaitNotActive ahk_exe mpv.exe { Run, "xxx\yong-vim.exe" 0,,Hide } sleep,1000 goto,mympv return mpv激活时英文,不激活时中文 |
|
4楼#
发布于:2018-08-28 16:14
#SingleInstance Force Gui +LastFound hWnd := WinExist() DllCall( "RegisterShellHookWindow", UInt,hWnd ) MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" ) OnMessage( MsgNum, "ShellMessage") ShellMessage( wParam, lParam ) { debug:=false if (debug) { WinGetclass, WinClass, ahk_id %lParam% tooltip, wParam = %wParam% lParam = %lParam% WinClass = %WinClass% } If ( wParam = 32772 || wParam = 4) ;4 (HSHELL_WINDOWACTIVATED) or 32772 (0x8004; HSHELL_RUDEAPPACTIVATED) { Sleep, 200 WinGetclass, WinClass, ahk_id %lParam% if (debug) { tooltip, wParam = %wParam% lParam = %lParam% WinClass = %WinClass% } ;~ En If WinClass in ExploreWClass,CabinetWClass,AfxMDIFrame140u,IrfanView,DSUI:PDFXCViewer,EVERYTHING,ConsoleWindowClass,Photoshop { if (debug) { tooltip, EN wParam = %wParam% lParam = %lParam% WinClass = %WinClass% } Run, ..\yong-vim.exe 1,,Hide } ;~ Ch If WinClass in TXGuiFoundation,WeChatMainWndForPC { if (debug) { tooltip, CH wParam = %wParam% lParam = %lParam% WinClass = %WinClass% } Run, ..\yong-vim.exe 0,,Hide } } Sleep, 500 if (debug) { ToolTip } return } ;~ 本脚本在激活一个新窗口时执行。并不百分之百可靠,偶尔会失效。凑合用用吧。 ;~ 有些窗口(QQ、微信等)大部分时候都是不好使的(在窗口间「切换」时几乎无效,「新打开窗口」时容易生效。) ;~ 可以打开 debug 查看脚本执行状态。 ;~ Run后面的相对路径是相对于此 ahk 文件所在文件夹的路径。建议用绝对路径。 ;~ Run, xxxx\yong-vim.exe 是否有效,可以单独写个一行的 ahk 脚本运行测试一下。 ;~ 通过在两行「If WinClass in ...」后面追加 ahk_class,设置自动切换至英文和中文的窗口。 |
|
5楼#
发布于:2018-08-28 16:39
看不懂啊,而且测试了下,感觉效果不好
If WinClass in mpv,HoneyviewClassX,ImagineW 只有mpv有效,而且不是程序启动就切英文,要重新激活窗口 If WinClass in Progman,CabinetWClass 这个也没有在资源管理器文件夹窗口里切到中文 前面提到了,我常常用$[123]321 这种输入FFmpeg命令 所以不能立刻切回中文,不适合我 多个窗口我用 -------180829 修改 GroupAdd, ABGroup , ahk_exe mpv.exe GroupAdd, ABGroup , ahk_exe Imagine64.exe GroupAdd, ABGroup , ahk_exe Honeyview.exe GroupAdd, ABGroup , ahk_class ConsoleWindowClass GroupAdd, ABGroup , ahk_class TfrmInstall GroupAdd, ABGroup1 , ahk_exe Explorer.EXE GroupAdd, ABGroup1 , ahk_exe firefox.exe SetTimer, yongmpv, 1000 Return yongmpv: IfWinActive, ahk_group ABGroup { Run, xx\yong\yong-vim.exe 1, , hide } ;Else IfWinActive, ahk_group ABGroup1 { Run, yy\yong\yong-vim.exe 0, , hide } Return |
|