のWindows 7上のOutlook 2013を使用して、私はちょうどそれをテストするために、このマクロを作成しましたが:どうすれば簡単にフォーカスを盗むことができますか?
Private Sub Application_Reminder(ByVal Item As Object)
Activeexplorer.Activate
End Sub
私は別のアプリケーションとOutlookのリマインダー火災に取り組んでいますたびに、Outlookはアプリケーションからフォーカスを盗むアクティブウィンドウになり私は働いています。
どうすれば可能ですか?
「Activeexplorer.Activate」メソッドは、「SetForegroundWindow」や「SetActiveWindow」などのWindows APIを使用すると考えられます。
これらのAPIはすべてフォーカスを奪うことを禁じています。だから私の質問は、Outlookのvbaメソッドが簡単に恐ろしくフォーカスを奪うことができるのですか?
アラームが「(てSystemParametersInfoでSPI_GETFOREGROUNDLOCKTIMEOUTを参照)フォアグラウンドロックのタイムアウトが満了している。」場合https://msdn.microsoft.com/it-it/library/windows/desktop/ms633539(v=vs.85).aspxで述べたように、SetForegroundWindowはフォアグラウンドで他のプロセスではないで使用することができますよう、部分的に解除され
私が変更'HKCU:\ Control Panel \ Desktop'のレジストリキー 'ForegroundLockTimeout'の値を0から20000に変更すると、今の場合、Outlookはフォーカスを奪いません。
「ForegroundLockTimeout」レジストリキーの最大値は何か、つまり、フォアグラウンドでアクティブなアプリケーションからフォーカスを奪っていない他のプロセスを完全に無効にすることができるかどうかは疑問です。
私は "ハッキング"に興味がありません、私のポストのものはハックではなく、私の視点では標準的なvbaメソッドです。これは可能ではありません。マイクロソフトはフォーカスを盗むことを許可してはいけません。簡単に。 –
Outlookがハッキングを使用するかどうかを調べる唯一の方法は、Activateメソッドをデバッグすることです。 – Anders
活性化せずにzリストの一番上にウィンドウを持っていくというハックは、それを起動せずに一番上にすること以外は機能していません。その後、起動せずに一番上にしません。それを活性化せずに非最上位ウィンドウの上にウィンドウ: SetWindowPos hWndは、HWND_TOPMOST、0、0、0、0、SWP_NOSIZEまたはSWP_NOMOVEそれともSWP_NOACTIVATE SetWindowPos hWndは、HWND_NOTOPMOST、0、0、0、0、SWP_NOSIZEかSWP_NOMOVEまたはSWP_NOACTIVATE –