获取上一个活动窗口:获取以前活动的窗口

Pan*_*nay 7 c#

我正在开发一个需要获取最后一个活动窗口句柄的应用程序.假设我的应用程序正在运行,那么我想获取之前刚刚在我的应用程序之前打开的最后一个活动窗口句柄.

@ EDIT1:这不是重复的问题.我需要获取最后一个活动窗口的句柄而不是当前窗口.

Jam*_*zer 5

这类似于 备用的SO问题,我假设您只是跟踪活动窗口,更改后便会知道之前的活动窗口

编辑,这基本上是从我链接的问题中复制的代码,该问题一直在寻找当前的活动窗口,但具有保留lastHandle并确定何时有新的lastHandle的逻辑。这不是经过验证的可编译实现:

[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;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @Vinay,我说类似。该问题提供了如何使用Win32 API的知识,因此我认为GetForegroundWindow()返回的句柄适合您使用。这不是重复的,但肯定是相似的,或者是较大的一个子问题。如果您正在寻找一个复制并粘贴对不起的实现,但是我在回答中给了您逻辑...跟踪所有ACTIVE窗口,找到第二个ACTIVE窗口后,您现在已经了解前一个。我将使用一些伪代码进行编辑。 (2认同)