0

「Kingsoft Writer」スクリプトを作成したい。以下はスクリプトです。

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

スクリプトの目的は次のとおりです。

「Kingsoft Writer」というプログラムを使いたいです。

Kingsoft Writer は、Microsoft Word のすべての機能を備えたフリーウェア プログラムです。しかし、Kingsoft Writer は読み込みが速く、めったに使用されない遅い読み込み機能で肥大化することはありません。また、インターフェースははるかにユーザーフレンドリーです。

デフォルトですべてのテキスト ファイルを開くように「Kingsoft Writer」をプログラムしたいと考えています。

この新しく開いた「Kingsoft Writer」ウィンドウにマウスのクリックとキーストロークを送信して、インターフェイスを非常に見栄えの良いシンプルなインターフェイスにすることができます。それは私の選択した背景色になります。Microsoft Word のように 5 つまたは 6 つのツールバーが表示されるのではなく、1 つだけのツールバーが表示されます。言い換えれば、インターフェイスは Microsoft Word インターフェイスよりも大幅に改善されます。

最も重要な機能の改善は、Kingsoft Writer が Microsoft Word と比較してどれだけ速くロードされるかです。違いは非常に大きいです。

ただし、それでも Microsoft Word のすべての機能を備えています。しかもダウンロード無料!

したがって、おそらくホットキーが定義されていないスクリプトを作成する必要があります。

「Kingsoft Writer」ウィンドウが表示されるたびに実行されるスクリプトを作成する必要があります。

関連するすべての単語を 2 時間ググりました。しかし、このスクリプトを作成する方法についてはまだ考えがありません。

これを理解するのに役立ついくつかのアイデアを教えてください。

4

1 に答える 1

0

残念ながら、IfWinActive を使用して、思い通りにスクリプトをトリガーすることはできません。ただし、解決策はあります。

1 つの方法は、100 ~ 500 ミリ秒ごとに小さなテスト スクリプトを実行して、KingSoft がアクティブかどうかを確認することです。または、システム コールを使用して、ウィンドウへのフォーカスが変更されるたびにテスト スクリプトをトリガーすることもできます。これが例です!

オプション 1 と ShellMessage

#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

ビープ音だけを生成し、システム トレイにメッセージを表示します。ビープ音だけで 200 ミリ秒かかるため、時間間隔は 1000 ミリ秒に設定されています。タイマー ベースのソリューションでは常にビープ音が鳴るので、アプリ名の変更を確認します。ShellMessage は、デフォルトで KingSoft にフォーカスを置いたときにのみビープ音を鳴らします。

このスクリプトは、GUI と娘を一緒に移動することから来ました。ここでは、電卓と他のアプリケーションが同じように動作する必要がある場合にアクションをトリガーします (両方が同時に最小化または復元されます)。

アプリケーションが実行されているかどうかを検出するだけの場合は、settimer を使用して 200 ミリ秒ごとに ifWinExist を実行する方が簡単かもしれません (ただし、ShellMessage の方が優れています)。

于 2013-03-24T14:01:11.817 に答える