我有下面的代碼繪製另一個進程的主窗口上的正方形:無法在Internet Explorer上畫
private void DrawOnWindow(string processname)
{
IntPtr winhandle = GetWindowHandle(processname);
Graphics grph = Graphics.FromHwnd(winhandle);
grph.DrawRectangle(Pens.Red, 10, 10, 100, 100);
}
private IntPtr GetWindowHandle(string windowName)
{
IntPtr windowHandle = IntPtr.Zero;
Process[] processes = Process.GetProcessesByName(windowName);
if (processes.Length > 0)
{
for (int i = 0; i < processes.Length; i++)
{
if (processes[i].MainWindowHandle.ToInt32() > 0)
{
windowHandle = processes[i].MainWindowHandle;
break;
}
}
}
return windowHandle;
}
這工作時,我通過「火狐」的DrawOnWindow方法,但它確實當我通過「iexplore」時不工作,我不明白爲什麼。我需要做什麼才能讓它在Internet Explorer上運行? (IE8)
WS_CLIPCHILDREN不是IE8的問題。 –
如何遍歷IE8窗口層次結構? –
要遍歷層次結構,需要使用EnumChildWindows()GDI函數(或FindWindowEx()等)。您可能首先要使用Spy ++來查看IE8窗口,並將該句柄與您所得到的值進行比較,以確定問題是我正在描述的還是@Franci Penov所描述的。 – Aaron