spy++の同じ機能「窓を探す…」をC#で作りたいと思っています。私はWINAPIのこの機能を試しました:
HWND WINAPI WindowFromPoint(__in POINT Point);
http://msdn.microsoft.com/en-US/library/ms633558.aspx しかし、無効または非表示になっているため、すべての要素を取得することはできません。
たとえば、プログラマー モードのウィンドウ 7 電卓では、プログラムが無効になっている場合、プログラムで "ABCDE F" を取得できず、spy++ で取得できます。
編集:私はこれを試しましたが、うまくいきません:
[DllImport("user32.dll")]
public static extern ulong GetClassLongPtr(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
public static extern IntPtr ChildWindowFromPointEx(IntPtr hWndParent, Win32Point pt, uint uFlags);
IntPtr hWnd = WindowFromPoint(myPoint);
hWnd= ChildWindowFromPointEx(hWnd , myPoint, 0x0000);
myPoint はマウスの位置です。
私は WINAPI に慣れていないので、あなたの説明は私の理解不足だと思います。ChildWindowFromPointEx 関数の小さな例を持っているか、私のコードが機能していないかを知ることは可能ですか? 答えてくれてありがとう
ループを作成しようとしましたが、ハンドルが他のハンドルの下にあるようですが、ハンドルの子ではないようです。ループは常に同じハンドルを送信し、キー「abcde f」が無効になっている場合は希望の子は送信しません。別のアイデアはありますか?