Windows 我想创建一个;“金山作家”;剧本

Windows 我想创建一个;“金山作家”;剧本,windows,kingsoft,Windows,Kingsoft,我想创建一个“金山作家”脚本。 下面是脚本 IfWinActive, ahk_class QWidget { sleep 2000 Click 486, 15 Click 570, 93 Send (various keystrokes) Return } 脚本的目的是: 我想使用一个名为“金山写手”的程序 金山写手是一个免费软件程序 具有Microsoft Word的所有功能。 但金山软件编写器加载速度很快,而且不是 被缓慢加载的铃铛和口哨弄得臃肿不堪 很少使用的。另外,界面也非常友好 更加

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

IfWinActive, ahk_class QWidget
{
sleep 2000
Click 486, 15
Click 570, 93
Send (various keystrokes)
Return
}
脚本的目的是:

我想使用一个名为“金山写手”的程序

金山写手是一个免费软件程序 具有Microsoft Word的所有功能。 但金山软件编写器加载速度很快,而且不是 被缓慢加载的铃铛和口哨弄得臃肿不堪 很少使用的。另外,界面也非常友好 更加用户友好

我想把“金山作家”的程序打开 默认情况下为所有文本文件

我想发送鼠标点击和按键 来到这个新打开的“金山作家”窗口 这样我就可以让界面变得非常漂亮 外观美观,界面简单。 它将有我选择的背景色。 它将只显示1个工具栏,而不是5个或6个 就像微软的Word。 换句话说,界面将是一个主要的 对Microsoft Word界面的改进

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

但它仍然拥有所有的功能 微软的Word。 这是一个免费下载

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

我需要创建一个脚本,每当 “金山软件编写器”窗口出现

我用谷歌搜索了2个小时所有相关的单词。 但我还是不知道该怎么做 创建此脚本

请给我一些想法来帮助我
解决这个问题。

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

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

带有ShellMessage的选项1 选项2以固定时间间隔进行检查 我只生成一声蜂鸣音并在系统托盘中显示一条消息。时间间隔设置为1000毫秒,因为soundbeep单独需要200毫秒。基于计时器的解决方案会不断发出嘟嘟声,因此我检查应用程序名称是否有变化。默认情况下,只有当您将金山软件置于焦点时,ShellMessage one才会发出嘟嘟声

这个脚本来自于,当计算器和其他应用程序的行为相同(同时最小化或还原)时,我们触发一个操作


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

我想你的问题是“如何在每次启动特定程序时运行脚本?”简单的解决方案是从启动程序切换到启动脚本,并让脚本启动程序。(如果这确实是你的问题,那么请从你的问题中删除所有无关的讨论。)也许你是对的,雷蒙德。也许问题应该是“我如何在每次启动特定程序时运行脚本?”但我有点困惑。我只是不能100%确定这是否是我真正想问的问题。有人能对此提供一些想法吗?很高兴看到你没有放弃,在你上一个问题在我回答之前就结束了。B.t.w。”编程“金山软件”以打开所有类型的文本文件应该通过设置文件关联来完成。一个简单的方法是右键单击例如一个文档并选择“打开方式”,然后选择“金山软件”并设置为“默认”。哦,b.t.w.我知道你想做一种“浮动”吗“菜单。如果是这样的话,你可以退房!谢谢罗伯特,我正在研究你的解决方案。我只是希望它不是在我的头上。我是新手,我看过你的解决方案。美好的但我想知道。是否有人有更简单的东西。然后,你必须写下你想要的东西。您已经看到了可能的情况(遵循主要应用程序行为的浮动菜单)。我不知道你是否想自己创建一个浮动菜单。如果是这样,那么使用SciTE4autohotkey中的GUI maker(使生活更轻松)我需要一些时间来研究您的解决方案。它们可能就是我要找的。我只是不知道这在此刻是真的。非常感谢你的努力。
#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
#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