Delphiは、プログラムとアクティブのフロントウィンドウに表示されます。

手順書は、多くの場合、このような需要が発生して、どのようにバックグラウンドでプログラムが最上部に表示され、入力フォーカスを取得するには?
:私は以下の通りである。一般的な答えを見つけ、インターネット上で何度も検索
まず、回復が最小限に最小化
、その後IF(IsIconic(ハンドル))
  のShowWindow(Hanlde、SW_RESTORE)
第二に、使用BringToFront関数
 第三に、使用SetWindowPos

最初のアプローチを持っています一つの問題は、リカバリが再び最小化することができません。
XPタスクバーの点滅にのみ2番目のタイトルを利用するときに
第三の方法は、入力フォーカスを取得することができない、すなわち、ウィンドウをアクティブにすることができない

一般的方法に使用することは、もちろん、上記の問題第+ 3番目です。
私は簡単な方法を見つけることを試みたが、最終的に失敗しました。私たちは、少し修正を行うことで、第1〜第3の方法の+に基づいて、実際には、この問題を解決するためにぎこちないを使用する必要がありましたので。

以下のサンプルコード:
//アプリケーションはむしろ復元復元するために使用されるメインウィンドウハンドルより、最小か否かを判定する
()IsIconic(Application.Handle)次に、IFを
    Application.Restoreを、
  SetWindowPos(ハンドル、HWND_TOPMOST、0、0、0、0 、SWP_NOSIZE又はSWP_NOMOVE);
  SetWindowPos(ハンドル、HWND_NOTOPMOST、0、0、0、0、またはSWP_NOSIZE SWP_NOMOVE)。
//マウスの位置を保存し、ウィンドウのシミュレーションをクリックして、マウスの位置を復元
  GetCursorPos(OldPtを);
  NewPt:=ポイント(0、0);
  Windows.ClientToScreen(ハンドル、NewPt);
  SetCursorPos(NewPt.X、NewPt.Y)。
  MOUSE_EVENT(MOUSEEVENTF_LEFTDOWN、NewPt.X、NewPt.Y、0、0);
  MOUSE_EVENT(MOUSEEVENTF_LEFTUP、NewPt.X、NewPt.Y、0、0);
  SetCursorPos(OldPt.X、OldPt.Y)。

おすすめ

転載: www.cnblogs.com/wissly/p/11900361.html