J'essaie d'obtenir la taille et la position d'une certaine fenêtre attachée au processus javaw.exe.GetWindowRect renvoie NullReferenceException
Malheureusement, GetWindowRect renvoie une erreur: "NullReferenceException" - et j'ai vérifié, aucun de ses arguments == null.
Voici le morceau de code
échantillon Invoquer:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(IntPtr handle, out WindowRect rect);
[StructLayout(LayoutKind.Sequential)]
private class WindowRect
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
Exécution fonction statique processus joindre:
NB.Attach(Process.GetProcessesByName("javaw")[0]);
Exemple d'utilisation:
public static void Attach(Process process)
{
FocusProcess = process;
FocusWindow = FindWindow(null, process.MainWindowTitle);
}
public static int[] GetWindowPosition()
{
WindowRect rect = new WindowRect();
Console.WriteLine(FocusProcess == null);
Console.WriteLine(FocusProcess.MainWindowHandle == null);
Console.WriteLine(rect==null);
GetWindowRect(FocusProcess.MainWindowHandle, out rect);
if (rect.Top != 0)
{
return new int[] { rect.Left, rect.Top };
}
return new int[] { 0, 0 };
}
Merci d'avance, je suis totalement inexpérimenté en ce qui concerne l'utilisation des fonctions natives.
Il y a certainement quelque chose qui manque ici car 'NullReferenceException' est une exception .Net et' GetWindowRect' ne le lancera pas. – DavidG
C'est le code complet et les points d'erreur pour moi d'essayer d'utiliser GetWindowRect(); – Netheous
Eh bien, ça ne peut pas être comme 'FocusProcess' n'est pas défini ici. Pouvez-vous publier la trace de pile complète de l'exception? – DavidG