2016-10-05 10 views
0

タスクバーのアイコンを右クリックして閉じるを選択するだけで、コンピュータのすべてのプログラムを閉じることができます。ですから、どのウィンドウでもXボタンをクリックすると、代わりに最小化する必要があります。どのようにAutoHotKeyを使ってこれを達成できますか?クローズボタンをキャッチして代わりにウィンドウを最小化することは可能ですか? AutoHotKey

答えて

0
  • このAutoHotkeyスクリプトは、あなたが探しているものを達成するはずです。
  • 注:エアロモードがオンの場合、コードが正しく機能しないことがあります。
  • MouseGetPosはカーソルの下にあるウィンドウのhWndを取得します。
  • WM_NCHITTESTは4バイト構造に座標を組み合わせるために手間のかかる数学のビットを必要とする、カーソルの下の項目の種類に関する情報を取得します。
  • 困難なビットを使用すると、マウスを使用するたびに、このスクリプトは、すべてのマウスの左ボタンを押してキャプチャしますが、マウスの正常な機能を妨害してはならないということです。 マウスボタンを押すと、プレスは送信されず、プレスは抑制されます。 カーソルの下のウィンドウでチェックが行われます。閉じるボタンが見つかると、 そのウィンドウが最小化され、実際にマウスを押すことはありません。 何の閉じるボタンが見つからない場合、我々は、マウスの正常な機能をエミュレート:マウスボタンがリリースされていることを検出 とマウスのリリースが送信されるされるまで ダウンプレスは、送信されます。 「press」という言葉は、「クリック」や「ホールド」よりも明確な単語であるため、短い/長い時間を意味します。
  • このソリューションは、実際には非常に簡単ですが、私はそれを最初に調査し、異なるアプローチを試験した場合に問題が何年か前に私に悩み、 の多くを与えました。 私はマウスの機能が損なわ持っていたことがありませんが、私はそれが動作しません、または正しく機能するであろういくつかのソフトウェアがない 、保証することはできません。
  • いくつかのプログラムがクローズボタンの標準NCHITTEST値を返さない場合、これはWinamp 2.5eおよびMozilla Firefoxの以前のバージョン に当てはまると思われます。回避策はプログラムのクラス/ exeを確認することですウインドウに関連するカーソルの下の位置がクローズボタンと一致している場合は、動き出します。
  • 私は、最小化ボタンを右クリックすると、システムトレイにウィンドウを最小化する をリリースする予定の私の 'minimiser'スクリプトに同じ原則を使用します。

-

;tested on Windows 7 
;note: may not work correctly if aero mode is on 
;note: some programs don't return the standard NCHITTEST value for a close button, 
;a workaround is to compare the cursor position against the window coordinates 

LButton:: 
CoordMode, Mouse, Screen 
MouseGetPos, vPosX, vPosY, hWnd 

WinGetClass, vWinClass, ahk_id %hWnd% 

if vWinClass not in BaseBar,#32768,Shell_TrayWnd,WorkerW,Progman,DV2ControlHost 
{ 
SendMessage, 0x84, 0, vPosX|(vPosY<<16), , ahk_id %hWnd% ;WM_NCHITTEST 
vNCHITTEST := ErrorLevel ;(8 min, 9 max, 20 close) 
;ToolTip %vNCHITTEST% 

if (vNCHITTEST = 20) 
{ 
WinMinimize, ahk_id %hWnd% 
Return 
} 
} 

SendInput {LButton Down} 
KeyWait, LButton 
SendInput {LButton Up} 
Return 
+0

https://blogs.msdn.microsoft.com/oldnewthing/20110218-00/?p=11453 – user2120666

+0

私はdownvoteの理由を尋することはできません。スクリプトは必要に応じて正確に機能します。ダウンダウン者はスクリプトをテストして、うまくいかないことを述べてください。 – vafylec

+0

あなたが投稿した記事を読む? WM_NCHITTESTの文書でも、「マウスがキャプチャされていなければ、メッセージはカーソルの下のウィンドウに送信されます。それ以外の場合は、マウスをキャプチャしたウィンドウにメッセージが送信されます」。 – user2120666

関連する問題