Windowsは、あなたがそれを自分で収集するために持っているので、APIを介してアクセス可能な方法でこの情報を保存しない
おかげで、。
HWNDを作成するコードを変更できる場合は、WM_CREATEまたはWM_NCCREATEの処理中に現在の時刻を保存するだけで済みます。
可能であればウィンドウフックを避けます。ウィンドウを作成しているすべてのプロセスにDLLを注入します。 DLLに重大なバグがあると、デスクトップ上のすべてのアプリケーションがひどく死んでしまいます。
あなたは、Windowsのフックでに行かなければならない場合は、あなたがこのようなSetWindowsHookExを使用してフックを注入:
LRESULT CALLBACK MyHookFunction(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HCBT_CREATEWND)
{
// wParam is new window.
}
else if (nCode == HCBT_DESTROYWND)
{
// wParam is window being destroyed
}
return CallNextHookEx(myHook, nCode, wParam, lParam);
}
フックのprocニーズを:
HHOOK myHook = SetWindowsHookEx(WH_CBT, MyHookFunction, myHookDll, 0);
あなたのフックprocが、このようになります。 DLLに存在するため、他のプロセスによって読み込まれる可能性があります。フックはさまざまなプロセスで実行されるため、情報を元のプロセスにマーシャリングする必要があります。たとえば、カスタムウィンドウメッセージを使用してこれを行うことができます。
[WinEvents](https://msdn.microsoft.com/en-us/library/windows/desktop/dd373889.aspx)が推奨されます。 – IInspectable