【问题标题】:I want to create a "Kingsoft Writer" script我想创建一个“金山词霸”脚本
【发布时间】:2013-03-24 12:53:07
【问题描述】:

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

IfWinActive, ahk_class QWidget
{
sleep 2000
Click 486, 15
Click 570, 93
Send (various keystrokes)
Return
}

脚本的目的是:

我想用一个叫“金山作家”的程序。

金山词霸是一款免费软件 具有 Microsoft Word 的所有功能。 但是金山词霸加载速度很快, 臃肿的加载缓慢的花里胡哨 很少使用。接口也很多 更加用户友好。

我要编程“金山词霸”打开 默认所有文本文件。

我想发送鼠标点击和击键 到这个新打开的“金山词霸”窗口 这样我就可以使界面变得非常好 外观和简单的界面。 它将具有我选择的背景颜色。 它将仅显示 1 个工具栏而不是 5 或 6 个 与 Microsoft Word 一样。 换句话说,界面将是一个主要的 对 Microsoft Word 界面的改进。

最重要的功能改进将是 与金山作家相比加载速度有多快 微软Word。差别很大。

但它仍然具有所有功能 微软Word。 而且它是免费下载的!

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

我需要创建一个脚本,只要 出现“金山词霸”窗口。

我用谷歌搜索了所有相关的词 2 小时。 但我仍然不知道如何 创建这个脚本。

请给我一些想法来帮助我 想办法。

【问题讨论】:

  • 我认为您的问题是“每次启动特定程序时如何运行脚本?”简单的解决方案是从启动程序切换到启动脚本,并让脚本启动程序。 (如果这确实是您的问题,那么请从您的问题中删除所有无关的讨论。)
  • 也许你是对的,雷蒙德。也许问题应该是“每次启动特定程序时如何运行脚本?。但我有点困惑。我只是不能 100% 确定这是否是我真正想问的问题。可以有人对此有什么想法吗?
  • 很高兴看到你没有放弃,在你之前的问题在我回答之前就被关闭了。
  • 顺便说一句。 “编程金山软件”打开所有类型的文本文件都需要通过设置文件关联来完成。一种简单的方法是右键单击例如一个.doc并选择打开方式,然后选择金山软件并设置为“默认”。

标签: windows kingsoft


【解决方案1】:

很遗憾,您不能使用 IfWinActive 以您想要的方式触发脚本。 虽然有解决方案。

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

使用 ShellMessage 的选项 1

#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 以固定时间间隔检查

#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 毫秒。基于计时器的解决方案会不断发出哔哔声,因此我检查应用程序名称是否有变化。默认情况下,ShellMessage 仅在您将金山软件置于焦点时才会发出蜂鸣声。

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

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

【讨论】:

  • 哦,顺便说一句。我是否理解您想要制作一种“浮动”菜单。如果是这样,您可以查看this
  • 谢谢罗伯特,我正在研究你的解决方案。我只希望它不是我的头。我是新手。
  • 我查看了您的解决方案。好的!但我想知道。有没有人在简单方面有更多的东西。
  • 然后,你必须写下你想要什么。您已经看到了什么是可能的(跟随主要应用程序行为的浮动菜单)。我不知道你是否想自己创建一个浮动菜单。如果是这样,那么使用 SciTE4autohotkey 中的 GUI maker(让生活更轻松)
  • 我需要一些时间来研究您的解决方案。他们可能是我正在寻找的。我只是没有意识到此刻这是真的。非常感谢您的努力。
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 2013-07-18
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多