小编Him*_*u P的帖子

分离 CGWindowListCopyWindowInfo 返回的真实窗口和虚拟窗口

我正在为 macOS 创建一个窗口切换器。

我用来CGWindowListCopyWindowInfo获取打开的窗口的列表。

    let windows = CGWindowListCopyWindowInfo([.excludeDesktopElements], kCGNullWindowID)
Run Code Online (Sandbox Code Playgroud)

我没有使用该optionOnScreenOnly选项,CGWindowListCopyWindowInfo因为它排除了非空间窗口。

但是,这会导致某些虚拟窗口也包含在窗口列表中。例如,Xcode 上每个打开的选项卡都有一个窗口。除了实际窗口之外,VLC 播放器还有一个额外的隐形窗口。如果我使用optionOnScreenOnly.

有没有办法将这些虚拟窗口与实际窗口分开?

我已经探索了返回的字典中的kCGWindowLayer和键,但无法区分窗口。kCGWindowStoreTypeCGWindowListCopyWindowInfo

编辑

我对 Swift 和 Objective-C 解决方案以及私有 API 调用持开放态度。

编辑2

我知道这是可能的,因为应用程序Witch可以正确处理这些情况。

macos objective-c swift

7
推荐指数
1
解决办法
517
查看次数

获取不包含水平滚动条的视口高度?

window.innerHeight给出视口的高度,包括水平滚动条的高度.有没有办法找到可用的内高,即包括水平滚动条的内高?

我理想地寻找一个纯JS解决方案,但如果没有,jQuery等也很好.

javascript jquery height viewport

6
推荐指数
1
解决办法
1140
查看次数

WebStorm/PhpStorm + Git集成:"相同"与"最新"存储库版本

我是Git的新手,很抱歉,如果这是一个愚蠢的问题,但git在右键单击WebStorm/PhpStorm中的文件(在Project侧栏中)出现的上下文菜单子菜单中的以下两个选项之间有什么不同?

  • 相同的存储库版本比较
  • 最新的存储库版本比较

git intellij-idea phpstorm webstorm

5
推荐指数
1
解决办法
741
查看次数

Chrome 扩展程序:选择下一个标签?

Chrome 扩展程序:如何激活当前选项卡旁边的选项卡(即右侧的选项卡)。这是我拥有的代码,但它无法正常工作 - 而不是下一个选项卡,一个随机选项似乎被激活。

特别是我认为选项卡的索引属性在当前页面中从左到右指示其索引是否正确?

// switch to next tab
function nextTab() {
  // first, get currently active tab
  chrome.tabs.query({active: true}, function(tabs) {
    if (tabs.length) {
      var activeTab = tabs[0],
      tabId = activeTab.id,
      currentIndex = activeTab.index;
      // next, get number of tabs in the window, in order to allow cyclic next
      chrome.tabs.query({currentWindow: true}, function (tabs) {
        var numTabs = tabs.length;
        // finally, get the index of the tab to activate and activate it
        chrome.tabs.query({index: (currentIndex+1) % numTabs}, function(tabs){
          if (tabs.length) …
Run Code Online (Sandbox Code Playgroud)

tabs google-chrome-extension

5
推荐指数
1
解决办法
3836
查看次数

创建任何对象的只读/不可变副本(包括深层属性)

如何在JavaScript中创建对象的只读/不可变版本,其属性无法更改?这也应该适用于任何子对象的属性等.

我所遇到的所有方法(Object.defineProperty,Object.freeze等)仅适用于对象的顶级属性,但不适用于子对象.

(可能的用例:在特定模块中创建/修改对象settingsconfiguration类型对象后,需要以不可变的形式将其公开给程序的其余模块.)

javascript const object readonly immutability

3
推荐指数
1
解决办法
1292
查看次数