Rückkehr Fenster behandeln, indem es den Namen / Titel
Ich dieses problem nicht lösen können.
Ich bekomme eine Fehlermeldung:
The name 'hWnd' does not exist in the current context
Es klingt sehr einfach und wahrscheinlich ist... sorry für die Fragen so offensichtlich Fragen.
Hier ist mein code:
public static IntPtr WinGetHandle(string wName)
{
foreach (Process pList in Process.GetProcesses())
{
if (pList.MainWindowTitle.Contains(wName))
{
IntPtr hWnd = pList.MainWindowHandle;
}
}
return hWnd;
}
Ich habe versucht, mit vielen verschiedenen Arten und jede ausfällt.
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht vergessen, du bist deklarieren Sie
hWnd
innerhalb der Schleife, was bedeutet, es ist nur sichtbar innerhalb der Schleife. Was passiert, wenn der Fenstertitel nicht existiert? Wenn Sie wollen, es zu tun mit einemfor
sollten Sie deklarieren Sie Sie außerhalb der Schleife, legen Sie es innerhalb der Schleife dann wieder...Use of unassigned local variable 'hWnd'
imreturn hWnd
Linie, das ist, warum ich hier gefragt.IntPtr.Zero
(siehe mein edit). Dies ist, weil die Fenster-Titel wird nicht abgestimmt - so sind Sie nie setzen der variable Punkte, die zu einem Speicherbereich mit unbestimmten Inhalt.IntPtr hwnd = IntPtr.Zero;
🙂Cannot convert null to 'System.IntPtr' because it is a non-nullable value type
Weil Sie erklären
hWnd
innerhalb des if-Blocks ist es unzugänglich für die return-Anweisung ist außerhalb. Sehen http://www.blackwasp.co.uk/CSharpVariableScopes.aspx für die Klarstellung.Den code, den Sie haben können behoben werden, durch das verschieben der Erklärung der hWnd-variable:
IntPtr.Zero
alles gelöstAls eine option, um dieses problem zu lösen:
hWnd
ist deklariert in derforeach
Schleife. Seinem Kontext innerhalbfoeach
Schleife. Um seinen Wert zu deklarieren Sie Sie außerhalbforeach
Schleife.Verwenden Sie es wie diese,
Kommt mehrere Jahre zu spät auf diese aber, wie andere erwähnt haben, ist der Umfang der
hWnd
ist nur in derforeach
Schleife.Aber es ist erwähnenswert, dass, vorausgesetzt, du tust nichts anderes mit der Funktion, dann gibt es zwei Probleme mit den Antworten, die andere zur Verfügung gestellt haben:
hWnd
ist eigentlich unnötig, da es nur für eine Sache (wie die variable für diereturn
)foreach
Schleife ist wirkungslos, auch nachdem Sie haben eine übereinstimmung gefunden, werden Sie weiterhin zu suchen, der rest der Prozesse. In eigentliche Tatsache, es werde der Letzte Prozess, die es findet, der passt.Unter der Annahme, dass Sie nicht wollen, um mit den letzten Prozess (Punkt #2), dann ist dies ein sauberer und effizienter Funktion: