je le code suivant qui dessine un carré dans la fenêtre principale d'un autre processus:peut pas tirer sur 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;
}
Cela fonctionne quand je passe « firefox » à la méthode DrawOnWindow, mais il ne ne fonctionne pas quand je passe "iexplore" et je ne comprends pas pourquoi. Que dois-je faire pour que cela fonctionne sur Internet Explorer? (IE8)
WS_CLIPCHILDREN n'est pas le problème avec IE8. –
Comment puis-je parcourir la hiérarchie de fenêtres IE8? –
Pour parcourir la hiérarchie, vous devez utiliser la fonction GDI EnumChildWindows() (ou FindWindowEx(), etc.). Vous pouvez d'abord utiliser Spy ++ pour regarder la fenêtre IE8 et comparer le handle à la valeur que vous obtenez pour déterminer si le problème est ce que je décris ou ce que décrit @Franci Penov. – Aaron