首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想创建一个“金山作家”脚本

我想创建一个“金山作家”脚本
EN

Stack Overflow用户
提问于 2013-03-24 20:53:07
回答 1查看 379关注 0票数 0

我想创建一个“金山作家”的脚本。下面是脚本。

代码语言:javascript
复制
IfWinActive, ahk_class QWidget
{
sleep 2000
Click 486, 15
Click 570, 93
Send (various keystrokes)
Return
}

该脚本的目的是:

我想用一个叫“金山写手”的程序。

Kingsoft Writer是一个免费软件程序,它具有Microsoft Word的所有功能。但Kingsoft Writer加载速度很快,并且不会因加载速度慢而很少使用的花哨而臃肿。此外,界面也更加用户友好。

我想编程“金山写手”默认打开所有的文本文件。

我想把鼠标点击和按键发送到这个新打开的“金山写手”窗口,这样我就可以让界面看起来很漂亮,界面也很简单。它将有一个我选择的背景颜色。它将只显示一个工具栏,而不是像Microsoft Word那样显示5或6个工具栏。换句话说,该界面将是对Microsoft Word界面的重大改进。

最重要的功能改进是与Microsoft Word相比,Kingsoft Writer的加载速度有多快。差别是巨大的。

但它仍将拥有Microsoft Word的所有功能。而且它是免费下载的!

所以我需要创建一个可能没有定义热键的脚本。

我需要创建一个脚本,只要出现"Kingsoft Writer“窗口就会运行。

我花了2个小时用谷歌搜索所有相关的单词。但是我仍然缺乏关于如何创建这个脚本的任何想法。

请给我一些想法来帮助我弄清楚这一点。

EN

回答 1

Stack Overflow用户

发布于 2013-03-24 22:01:12

不幸的是,您不能使用IfWinActive以您想要的方式触发脚本。不过,还是有解决方案的。

一种方法是每隔100到500ms运行一次小测试脚本,以查看KingSoft是否处于活动状态。或者,您可以使用一些系统调用来在每次焦点更改到任何窗口时触发测试脚本。这里有一个例子!

带ShellMessage的选项1

代码语言:javascript
复制
#SingleInstance
#installKeybdHook
#Persistent
Global SwitchCounter

Gui +LastFound 
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,Hwnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return

ShellMessage( wParam )
{
    If (wParam = 4)
    { 
        IfWinActive, ahk_class QWidget
        {
            Sleep 2000
            Click 486, 15
            Click 570, 93
            ;Send (various keystrokes)
            Return
        }
    }
}
Return

选项2以固定的时间间隔检查

代码语言:javascript
复制
#SingleInstance
#installKeybdHook
#Persistent
SetTimer, CheckWin, 1000 ; This is executed on startup of AutoHotKey 
Return ; Anything below this point is not executed on startup

CheckWin:
WinGetTitle, CurrName, A
If (CurrName = "KingSoft")
{
    if (CurrName = PrevName)
        Return ; Only continue if an other application was activated
    PrevName = %CurrName% ; When new app, then sync CurrName and PrevName
    SoundBeep, 500, 200
    TrayTip, KingSoft, Activated, 2
}
Return

我只生成一声蜂鸣声,并在系统托盘中显示一条消息。时间间隔设置为1000毫秒,因为仅声音蜂鸣声就需要200毫秒。基于计时器的解决方案会不断发出蜂鸣声,因此我检查应用程序名称的更改。默认情况下,仅当您将KingSoft置于焦点位置时,ShellMessage one才会发出蜂鸣声。

这个脚本来自move GUI and daughter together,当计算器和其他应用程序的行为相同(同时最小化或恢复)时,我们触发一个操作。

如果只是检测应用程序是否正在运行,那么使用settimer和每200ms执行一次ifWinExist可能会更容易(尽管ShellMessage更好)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15598681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档