0

以下のコードを実行していますが、コンマを押すと、マウスが現在アクティブなウィンドウの中央に移動することを期待しています。代わりに、ウィンドウが画面上のどこにあるかに応じて、画面上のさまざまなポイントに移動します。画面。ウィンドウが左上(x = 0、y = 0)に配置されている場合にのみ、マウスが適切に中央に配置されます。

#NoEnv
SendMode Input
#WinActivateForce

Sysget, Mon2, Monitor, 2

,::

WinGetActiveStats, Title, Width, Height, X, Y
 {
MsgBox, The active window "%Title%" is %Width% wide`, %Height% tall`, and positioned at %X%`,%Y%.

;center_x:=X+(Width*.5)
;center_y:=Y+(Height*.5)

MouseMove, X+(Width*.5), Y+(Height*.5), 90

 }
Return
4

5 に答える 5

1

CoordModeドキュメントを確認してください。

さまざまなコマンドの座標モードを、アクティブなウィンドウまたは画面のいずれかを基準にして設定します。

CoordMode、ToolTip | Pixel | Mouse | Caret | Menu [、Screen | Window | Client]

デフォルトCoordModeScreen、2つの異なる場所を取得する理由です。をに設定しCoordModeWindow、マウスのセンタリングがアクティブなウィンドウで機能するようにします。

スクリプトの自動実行セクションで呼び出すことにより、スクリプト全体に設定できます。

于 2014-04-06T15:50:29.443 に答える
0

幅と高さはウィンドウの実際の寸法であり、画面の解像度ではないことを確認します。次に、XとYをチェックして、それらがアクティブなウィンドウの実際の左上隅であることを確認します。

幅と高さが実際のウィンドウ、つまり画面サイズからのものでない場合、これは予想どおりの動作です。おそらく、これらのパラメーターがどこから来ているのかをよりよく理解するために、呼び出し元の関数を表示することができます。

于 2010-01-02T01:47:42.363 に答える
0

問題は、MousMoveがデフォルトでウィンドウの座標を使用することでした。そのため、MouseMoveの行を次のように変更しました。

MouseMove, Width*.5, Height*.5

すべてが良いです。

于 2010-01-02T03:42:28.357 に答える
0

次のスクリプトは、デュアルスクリーンシステムのアクティブウィンドウにマウスを移動します。

WinGetPosスリープラインに入れて、ウィンドウが移動する前に情報を取得するまで、それを機能させることができませんでした。

~#+right::
~#+left::
    Sleep,1000
    WinGetPos, X, Y, width, height, A
    center_x:=width/2
    center_y:=height/2
    MouseMove,center_x,center_y,
return
于 2014-04-05T16:00:13.003 に答える
0

それをすべて試してみましたが、何も機能しません。秘訣はを使用することDllCall("SetCursorPos", int, x, int, y)です。これは、マウスをウィンドウの中央に移動するためのコードです。マルチモンティオールおよび非フルスクリーンウィンドウで動作します。

MoveMouseInCenterOfActiveWindow:
CoordMode,Mouse,Screen
WinGetPos, winTopL_x, winTopL_y, width, height, A
;MouseMove, X, Y, 0 ; does not work with multi-monitor (always off)
    winCenter_x := winTopL_x + width/2
    winCenter_y := winTopL_y + height/2
DllCall("SetCursorPos", int, winCenter_x, int, winCenter_y)
Tooltip winTopL_x:%winTopL_x% winTopL_y:%winTopL_y% winCenter_x:%winCenter_x% winCenter_y:%winCenter_y%
return
于 2019-01-09T13:08:43.383 に答える