2012-01-14 14 views
0

MouseProc関数でマウスの位置を変更する方法を知りたいと思います。具体的には、Y座標を同じに保つ。これは私の関数である:フックでマウスの位置を変更する方法

function HookProc(nCode: Integer; MsgID: WParam; Data: LParam): LResult; stdcall; 
var 
begin   
    PMouseHookStruct(Data)^.pt.Y:=600; 

    Result := CallNextHookEx(Hook,nCode,MsgID,Data); 
end; 

私は再書き込みMouseHookStruct Y-COORDは、トリックを行うが、どうやらないだろうと思いました。

+0

マウスをすべてのアプリケーションでY = 600に保とうとしていますか?それは良いアイデアですか? – kobik

+0

これは私が働く必要がある基本的な部分です。このアプリは、私が学校の目的で使ってくれる小さな機能です。直線(線)を描くことができるので、それは –

+4

y = 600にマウスの位置を維持する必要はありません。水平線を引く。たとえば、MS Paintを開いて線描画ツールを選択し、水平線を描画します。シフトキーを押しながら水平線を引いてみましょう。 –

答えて

7

ClipCursor機能をお探しの場合があります。フックを使用する必要はありません。

備考: カーソルは共有リソースです。アプリケーションがカーソルを閉じ込める場合、他のアプリケーションに制御権を移譲する前に、ClipCursorを使用してカーソルを解放する必要があります。 この関数は、カーソルを画面上の矩形領域に限定します。

0

SetCursorPos Win32関数を見てください。

+0

マウスの移動を許可してから戻すと、マウスが「不安定」になることはありませんか? –

+0

@Magicmasterこれはあなたがやっている 'WndProc'フックで、ハンドラが' WM_MOUSEMOVE'を処理している場合は、移動していないように見えます。話していますが、それはしません)。編集:ああ、これはSetWindowsHookEx経由でフックされている場合は、試して見て:) –

関連する問題