Aスパイ++メッセージログには、フォーカスの変更の完全な記録を与えるが、ログから起こっていたものを解読しようとする雑用であるだろう。 Spy ++の厄介なUIは役に立たない。
リモートデバッグは、デバッガがアプリケーションのアクティブ化とフォーカスに干渉しないので便利ですが、デバッガからフォーカスされたウィンドウを簡単に特定する方法がないかどうかはわかりません。設定時には、のcoupleがあります。ヒント:動作しない場合は、DCOMとファイアウォールの設定を再確認してください。
明らかに、あなたが望むものを正確に実行するツールを見つけるのは最善でしょうが、私はできないし、退屈してこのコードを書きました。フォーカスされたコントロールの上に置かれた半透明の青色のウィンドウを作成します。クリックには透過的なので、アプリの使用に支障はないはずです。 、Inspectツール、WindowsのSDKのダウンロードの一部をすることができます
LRESULT CALLBACK HighlightWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_NCHITTEST:
return HTTRANSPARENT;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
VOID CALLBACK HighlightTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
// static locals are bad
static bool initialised = false;
static HWND hwndHighlight = 0;
if (!initialised)
{
HINSTANCE hInstance = 0;
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = HighlightWndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = 0;
wcex.hCursor = 0;
wcex.hbrBackground = (HBRUSH)(COLOR_HIGHLIGHTTEXT);
wcex.lpszMenuName = 0;
wcex.lpszClassName = L"HighlightWindowClasss";
wcex.hIconSm = 0;
ATOM atomHighlightClass = RegisterClassEx(&wcex);
hwndHighlight = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOPMOST | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW,
(LPCTSTR)atomHighlightClass, L"", WS_POPUP,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
// Set opacity to 200/255
SetLayeredWindowAttributes(hwndHighlight, 0, 200, LWA_ALPHA);
initialised = true;
}
static HWND hwndCurrentHighlight = 0;
HWND hwndFocus = GetFocus();
if (hwndFocus != hwndCurrentHighlight)
{
if (hwndFocus == 0)
{
ShowWindow(hwndHighlight, SW_HIDE);
}
else
{
RECT rect;
GetWindowRect(hwndFocus, &rect);
MoveWindow(hwndHighlight, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, false);
ShowWindow(hwndHighlight, SW_SHOW);
}
hwndCurrentHighlight = hwndFocus;
}
}
出典
2012-01-15 16:18:48
arx
これは非常にクールです、ありがとう!私はリヒテルのツールに追加したリンクを見たことがありますか? –
乾杯。私はツールを見ましたが、spy ++を使用していると、ウィンドウハンドルを実際のウィンドウにマップする手間になるので、オーバーレイを行いました。 BrendanMcKによって提案されたInspectツールは、まだ試していないが、両方の世界で最高のものがあるようだ。 – arx