我正在将这个测试的屏幕保护程序的东西从 Linux 代码转换为 js-ctypes。
它大量使用 X11,但我找不到任何菜单功能。
这是我正在尝试转换的代码:
1012 XMenuList::GetInstance()->InsertMenuWindowXIDs(&windows);
1013 // Enumerate the menus first.
1014 for (iter = windows.begin(); iter != windows.end(); iter++) {
1015 if (delegate->ShouldStopIterating(*iter))
1016 return true;
1017 }
1018 windows.clear();
此代码可在此处找到:http://mxr.mozilla.org/chromium/source/src/ui/base/x/x11_util.cc#1012
基本上我试图通过窗口枚举,但他们在寻找屏幕保护程序时也会检查菜单。
我遇到了这个笔记:
X11 本身不做菜单。这就是为什么创建GTK,Qt,Motif等工具包的原因。
http://www.linuxquestions.org/questions/programming-9/x11-menus-how-to-839904/
这是否意味着我应该ctypes.open
X11 以外的另一个库,有谁知道是哪个库?我找不到。
谢谢
这是我正在进行的代码:https://github.com/Noitidart/_scratchpad/blob/master/ScreensaverWindowExists.js#L365
这是 im 用于 x11 函数的 freedocs 页面:http://www.xfree86.org/4.4.0/manindex3.html
如果您查看此处的源代码,您会发现 Mozilla 的菜单只是一个将_NET_WM_WINDOW_TYPE
属性设置为 _NET_WM_WINDOW_TYPE_MENU
的窗口。
标准说,这样的窗口是"撕下"其主应用程序窗口并固定到桌面的菜单。您不需要任何特殊的库来检测这一点,只需使用正常的属性操作函数即可。
我不太明白为什么屏幕保护程序需要它。