Dies zu ähnlich ist alternate SO question ich Sie nur das aktive Fenster und bei einer Änderung verfolgen würde davon ausgehen, würden Sie würden wissen, dann die zuvor aktive
bearbeiten, das ist im Grunde von der Frage kopierten Code ich, dass verknüpft war auf der Suche für das aktuelle aktive Fenster, aber mit Logik, um den lastHandle beizubehalten und zu identifizieren, wenn Sie einen neuen lastHandle haben. Es ist keine bewährte, kompilierbare Implementierung:
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
static IntPtr lastHandle = IntPtr.Zero;
//This will be called by your logic on when to check, I'm assuming you are using a Timer or similar technique.
IntPtr GetLastActive()
{
IntPtr curHandle = GetForeGroundWindow();
IntPtr retHandle = IntPtr.Zero;
if(curHandle != lastHandle)
{
//Keep previous for our check
retHandle = lastHandle;
//Always set last
lastHandle = curHandle;
if(retHandle != IntPtr.Zero)
return retHandle;
}
}
Dies ist nicht die doppelte Frage. Ich brauche das Handle des letzten aktiven Fensters und nicht das aktuelle Fenster. –
@Vinay, sagte ich ähnlich. Diese Frage gibt das Wissen, wie Win32-APIs zu verwenden, also nahm ich an, dass das von GetForegroundWindow() zurückgegebene Handle für Ihre Verwendung geeignet war. Dies ist kein Duplikat, aber definitiv ähnlich oder eine Unterfrage in einem größeren gefragt. Wenn Sie nach einer Implementierung zum Kopieren und Einfügen von Entschuldigung suchen, aber ich gab Ihnen Logik in meiner Antwort ... verfolgen Sie alle ACTIVE-Fenster, sobald Sie ein zweites ACTIVE-Fenster gefunden haben, haben Sie jetzt Kenntnis der vorherigen. Ich werde mit etwas Pseudo-Code bearbeiten. –
Danke Jamie Altizer. –