我正在将此测试转换为从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
这是我用于x11函数的freedocs页面:http://www.xfree86.org/4.4.0/manindex3.html
答案 0 :(得分:2)
如果查看来源here,您会发现Mozilla的菜单只是_NET_WM_WINDOW_TYPE
属性设置为_NET_WM_WINDOW_TYPE_MENU
的窗口。
桌面标准称这些窗口是“撕掉”的菜单。他们的主要应用程序窗口并固定到桌面。您不需要任何特殊的库来检测它,只需使用普通的属性操作函数。
我不太明白屏幕保护程序为什么需要它。