- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个相当简单的问题。我如何以编程方式添加/删除任务控制中找到的工作区。我看过这个帖子here关于以编程方式更改为另一个空间,我认为这可能与使用 CGPSrivate.h
的答案类似。我不需要担心私有(private)框架,因为它不会出现在应用商店中。
编辑:我还看到了一篇关于修改 com.apple.spaces.plist
和添加工作区的帖子,但我不知道如何添加它,因为字典有 UUID 和其他东西.
最佳答案
在任务控制中,这是 Dock 的辅助功能层次结构(在我的 Mac,OS X 10.10 上):
Role Position Title Value Description
AXList 632.000000, 1136.000000 (null) (null) (null)
AXDockItem 636.300049, 1138.000000 Finder (null) (null)
AXDockItem 688.300049, 1138.000000 Firefox (null) (null)
…
AXDockItem 1231.699951, 1138.000000 Trash (null) (null)
AXGroup 0.000000, 0.000000 (null) (null) (null)
AXGroup 20.000000, 227.000000 (null) (null) exposéd windows
AXList 0.000000, -2.000000 (null) (null) (null)
AXButton 592.000000, 20.000000 Desktop 1 (null) select Desktop 1
AXButton 864.000000, 20.000000 Desktop 2 (null) select Desktop 2
AXButton 1136.000000, 20.000000 Desktop 3 (null) select Desktop 3
AXButton 1824.000000, 20.000000 (null) (null) add desktop
工作区按钮的位置是删除按钮的中间。
我的测试应用程序:
- (AXUIElementRef)copyAXUIElementFrom:(AXUIElementRef)theContainer role:(CFStringRef)theRole atIndex:(NSInteger)theIndex {
AXUIElementRef aResultElement = NULL;
CFTypeRef aChildren;
AXError anAXError = AXUIElementCopyAttributeValue(theContainer, kAXChildrenAttribute, &aChildren);
if (anAXError == kAXErrorSuccess) {
NSUInteger anIndex = -1;
for (id anElement in (__bridge NSArray *)aChildren) {
if (theRole) {
CFTypeRef aRole;
anAXError = AXUIElementCopyAttributeValue((__bridge AXUIElementRef)anElement, kAXRoleAttribute, &aRole);
if (anAXError == kAXErrorSuccess) {
if (CFStringCompare(aRole, theRole, 0) == kCFCompareEqualTo)
anIndex++;
CFRelease(aRole);
}
}
else
anIndex++;
if (anIndex == theIndex) {
aResultElement = (AXUIElementRef)CFRetain((__bridge CFTypeRef)(anElement));
break;
}
}
CFRelease(aChildren);
}
return aResultElement;
}
- (IBAction)addWorkspace:(id)sender {
if (!AXIsProcessTrustedWithOptions((__bridge CFDictionaryRef)@{(__bridge NSString *)kAXTrustedCheckOptionPrompt:@YES}))
return;
// type control-arrow-up
CGEventRef anEvent = CGEventCreateKeyboardEvent(NULL, 0x7E, true);
CGEventSetFlags(anEvent, kCGEventFlagMaskControl);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
anEvent = CGEventCreateKeyboardEvent(NULL, 0x7E, false);
CGEventSetFlags(anEvent, kCGEventFlagMaskControl);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
// option down
anEvent = CGEventCreateKeyboardEvent(NULL, 0x3A, true);
CGEventPost(kCGHIDEventTap, anEvent);
[NSThread sleepForTimeInterval:0.05];
// click on the + button
NSArray *anArray = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.dock"];
AXUIElementRef anAXDockApp = AXUIElementCreateApplication([[anArray objectAtIndex:0] processIdentifier]);
CFTypeRef aGroup = [self copyAXUIElementFrom:anAXDockApp role:kAXGroupRole atIndex:0];
CFTypeRef aButton = [self copyAXUIElementFrom:aGroup role:kAXButtonRole atIndex:0];
CFRelease(aGroup);
if (aButton) {
AXError anAXError = AXUIElementPerformAction(aButton, kAXPressAction);
CFRelease(aButton);
}
// option up
anEvent = CGEventCreateKeyboardEvent(NULL, 0x3A, false);
CGEventPost(kCGHIDEventTap, anEvent);
[NSThread sleepForTimeInterval:0.05];
// type escape
anEvent = CGEventCreateKeyboardEvent(NULL, 0x35, true);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
anEvent = CGEventCreateKeyboardEvent(NULL, 0x35, false);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
}
- (IBAction)removeWorkspace:(id)sender {
if (!AXIsProcessTrustedWithOptions((__bridge CFDictionaryRef)@{(__bridge NSString *)kAXTrustedCheckOptionPrompt:@YES}))
return;
// type control-arrow-up
CGEventRef anEvent = CGEventCreateKeyboardEvent(NULL, 0x7E, true);
CGEventSetFlags(anEvent, kCGEventFlagMaskControl);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
anEvent = CGEventCreateKeyboardEvent(NULL, 0x7E, false);
CGEventSetFlags(anEvent, kCGEventFlagMaskControl);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
// move mouse to the top of the screen
CGPoint aPoint;
aPoint.x = 10.0;
aPoint.y = 10.0;
anEvent = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved, aPoint, 0);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
// option down
anEvent = CGEventCreateKeyboardEvent(NULL, 0x3A, true);
CGEventPost(kCGHIDEventTap, anEvent);
[NSThread sleepForTimeInterval:0.05];
// option down
anEvent = CGEventCreateKeyboardEvent(NULL, 0x3A, true);
CGEventPost(kCGHIDEventTap, anEvent);
[NSThread sleepForTimeInterval:0.05];
// click at the location of the workspace
NSArray *anArray = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.dock"];
AXUIElementRef anAXDockApp = AXUIElementCreateApplication([[anArray objectAtIndex:0] processIdentifier]);
CFTypeRef aGroup = [self copyAXUIElementFrom:anAXDockApp role:kAXGroupRole atIndex:0];
CFTypeRef aList = [self copyAXUIElementFrom:aGroup role:kAXListRole atIndex:0];
CFRelease(aGroup);
CFTypeRef aButton = [self copyAXUIElementFrom:aList role:kAXButtonRole atIndex:1]; // index of the workspace
CFRelease(aList);
if (aButton) {
CFTypeRef aPosition;
AXError anAXError = AXUIElementCopyAttributeValue(aButton, kAXPositionAttribute, &aPosition);
if (anAXError == kAXErrorSuccess) {
AXValueGetValue(aPosition, kAXValueCGPointType, &aPoint);
CFRelease(aPosition);
// click
anEvent = CGEventCreateMouseEvent(NULL, kCGEventLeftMouseDown, aPoint, kCGMouseButtonLeft);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
anEvent = CGEventCreateMouseEvent(NULL, kCGEventLeftMouseUp, aPoint, kCGMouseButtonLeft);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
CFRelease(aButton);
}
}
// option up
anEvent = CGEventCreateKeyboardEvent(NULL, 0x3A, false);
CGEventPost(kCGHIDEventTap, anEvent);
[NSThread sleepForTimeInterval:0.05];
// type escape
anEvent = CGEventCreateKeyboardEvent(NULL, 0x35, true);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
[NSThread sleepForTimeInterval:0.05];
anEvent = CGEventCreateKeyboardEvent(NULL, 0x35, false);
CGEventPost(kCGHIDEventTap, anEvent);
CFRelease(anEvent);
}
关于macos - 以编程方式向 Mac 添加/删除工作区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004632/
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
我已经完成了注册页面,并且运行顺利。 现在我需要弄清楚登录部分。我想要它,所以一旦用户登录,它就会将他们带到私有(private)页面,只有登录的用户才能看到。 它不需要针对每个用户进行个性化设置,只
出于个人好奇心,我目前正在学习区 block 链的工作原理。我正在学习这门类(class),现在我已经使用网络套接字设置了点对点连接。区 block 链应用程序的多个实例现在可以使用这些套接字运行并相
我读过: The blockchain database isn’t stored in any single location, meaning the records it keeps are t
Closed. This question needs to be more focused。它当前不接受答案。 想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。
如果我在区块链中进行交易,是否只有在将交易添加到区块链后才会进行比特币转账?如果是这样,挖掘区块可能需要时间,并且无法进行紧急付款。那么这不是区块链的劣势吗? 最佳答案 如果您不重视能够在没有第三方(
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题
根据我的理解,我读到的关于区 block 链的所有内容都表明,即使在私有(private)区 block 链上,每个参与者都可以查看所有交易。我看到它提到区 block 链的一个用例可能是共享医疗数据
服务器正在发送消息时,如何阻止连接到服务器的一个IP地址。我的发送消息选项程序如下所示。 private void buttonSendMsg_Click(对象发送者,EventArgs e) {
iam正在hadoop apache 2.7.1上工作 和iam添加大小不超过100 Kb的文件 所以如果我将块大小配置为1 mb或默认值是 128兆字节 不会影响我的文件,因为它们只会保存在一个块中
我有一个docker-compose文件here。我可以连接到7051并注册我的chaincode客户端,但是当我尝试连接到localhost:7050时,我得到一个错误,该错误在使用curl测试时如
从数据类型来看,区 block 链是单链表吗?因为每个 block 都使用哈希引用前一个 block 。 或者它是某种树? 最佳答案 区 block 链表示为单链表的方式。每个 block 都有前一个
我无法理解给定代码片段的 hashcode() 部分。 我尝试过搜索它,但我无法弄清楚。 this.hash = Arrays.hashCode(new Integer[]{data.has
已关闭。这个问题是 not about programming or software development 。目前不接受答案。 这个问题似乎不是关于 a specific programming
我正在通过一些在线示例学习区 block 链。我有这个高级代码,我用以前的哈希创建一个新 block ,然后向它添加一个事务,然后生成 block 的困难哈希(有 8 个前导零) Block blo
我们有一个包含一些数字商品的网站。从那里购买的用户需要用 BTC 购买一些信用。在他购买信用卡后,脚本必须将他用 BTC 购买的货币 (USD) 数量加载到他的账户中。 所以这里我们有 HTML 表单
我目前正在使用 enumerateObjectsUsingBlock block 在 subview 下进行枚举,我怎样才能确定 block 的完成? 下面是区 block 内容 [self.view
我通常将显示 block 放在链接上,以使按钮的所有 div 都处于事件状态,而不仅仅是文本。但在这种情况下,我需要在 ul li 中使用 display:inline-block 我认为这会禁用其他
我正在尝试创建付款账单并通过电报机器人发送给我的客户:我正在使用区 block 链 API V2-https://blockchain.info/api/api 接收。我的代码是: xpub='***
有个面试题:区 block 链和不可变链表有什么区别? 我回答他们是相同的技术,然后没有通过测试。请纠正我的错误。 最佳答案 链表中的每一项通常通过指针或内存地址指向链表中的下一项。 区 block
我是一名优秀的程序员,十分优秀!