我想和刚才在我的应用程序之前使用的应用程序进行交谈,我如何才能找出哪个应用程序最后的焦点?如何跟踪应用程序的z顺序/焦点?
回答
在创建自己的应用程序窗口之前,请调用GetForegroundWindow。 否则调用GetWindow(your_hwnd,GW_HWNDNEXT)来查找指定下面的下一个窗口。
我正在寻找相同的功能 - 我有一个应用程序保持在屏幕上打开,用户在进入三个第三方应用程序之一时可以调用我的应用程序上的按钮。
当他们点击我应用程序上的按钮时,我需要确定他们上次使用的三个应用程序中的哪一个,以便知道要与哪个数据库进行通信。我沿着查看GetForeGroundWindow和GetWindow的路线走了,但是我从GetWindow得到的Window句柄总是指向一个标题为M的窗口。我使用了Managed Windows API工具中的Winternal Explorer工具,并且可以找到M句柄返回并且它是我以后的过程的'孩子' - 但是从这个句柄我不能得到进程名称。
我已经完成了一个小例子应用程序使用简单的窗体形式 - 我赞美它,然后使记事本的焦点,然后单击我的按钮,我得到的句柄 - 但当看到所有进程的MainWindowHandle,它没有列出,但使用Winternal Explorer我可以看到这是记事本进程的子进程。
任何建议,为什么我只得到这个子进程句柄返回而不是实际的进程句柄?
示例代码如下 - 被一个Windows XP SP 3台机器上运行
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace TestWindowsAPI
{
public partial class Form1 : Form
{
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IntPtr thisWindow = GetForegroundWindow();
IntPtr lastWindow = GetWindow(thisWindow, 2);
tbThisWindow.Text = thisWindow.ToString();
tbLastWindow.Text = lastWindow.ToString();
}
}
}
如果您使用的是WIN32 Windows Hook,那么您可以在第三方应用程序中执行操作时自动调用您的代码。有关更多信息,请参阅以下文章:http://support.microsoft.com/kb/318804 – JBRWilkinson 2010-01-19 11:34:43
- 1. 点击跟踪Windows应用程序
- 2. 如何跟踪应用程序安装?
- 3. 跟踪应用程序
- 4. 把应用程序跟踪
- 5. 跟踪Web应用程序
- 6. ASP.NET应用程序 - 跟踪
- 7. Django跟踪应用程序?
- 8. 如何跟踪Ruby应用程序中的require作为树的完整顺序和顺序?
- 9. 跟踪使用的应用程序
- 10. VSTO:应用程序焦点
- 11. 如何跟踪阻止应用程序并删除应用程序的用户?
- 12. 跟踪应用程序的HTTP请求
- 13. 如何跟踪Web应用程序中的应用程序池回收?
- 14. 用户跟踪应用程序被
- 15. 跟踪焦点问题(JTabbedPane)
- 16. 跟踪在Java Swing应用程序
- 17. 功能手机跟踪应用程序
- 18. 价格跟踪应用程序:
- 19. ALM - 跟踪应用程序部署
- 20. 在java应用程序中跟踪IO?
- 21. 监控应用程序/跟踪内存
- 22. GPS跟踪应用程序(策略)
- 23. 跟踪GPS应用程序 - Android电子
- 24. Java应用程序分析/跟踪
- 25. 如何跟踪iPhone应用程序用户的数量?
- 26. 如何使用应用程序跟踪SMB中的文件?
- 27. 如何跟踪'Moment'应用程序的iPhone使用情况?
- 28. Qt焦点更改顺序
- 29. Android - 跟踪我的活动顺序
- 30. 跟踪执行的顺序在Java中
要知道,有一些情况下,如果前一个窗口被关闭,这将无法正常工作,例如。 – JBRWilkinson 2010-01-19 11:28:18