Unity3d自身的API没有提供给我们窗口控制,获取焦点的方法。 Windows下的方法大家很容易找到很多相关的实例, 其核心思想是调用Win32的API获取窗口控制。 其实linux下的控制类似。不过是调用Xlib的方法。 Linux的焦点模式与Windows下不同,其默认为焦点与鼠标跟随(FC和RedHat默认下是这样的),请参考 http://www.ibm.com/developerworks/cn/linux/l-cn-focus/
Xlib没有提供获取当前窗口的方法, 所以需要自己封装一个获取窗口的方法, 伪代码如下:
// 获取当前窗口的句柄,通过*windowHandle返回
// 参数为Display Handle, Window的名字。
// 找到返回0,失败返回非0
static int GetWindow(Display *display, const char* windowName, Window* windowHandle)
{
// 获取Window的列表
XQueryTree(display,window,&root,&parent,&children, &nchildren);
// 遍历当前所有的Window
for (i = 0, child = children; i < nchildren; ++i, ++child)
{
// 获取window窗口的名字
XFetchName