标签: nsworkspace

Finder使文件资源分叉无法复制的任何方法?

有没有办法让资源分叉不可复制?特别是我通过NSWorkspace通过NSWorkspace设置一个特定目录中包含的文件的自定义徽章图标– setIcon:forFile:options:,我希望这些徽章一旦被复制到文件夹之外就会丢失.

cocoa icons macos-carbon objective-c nsworkspace

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

无法检测与其他用户一起运行的应用程序(通过切换用户)

使用案例:我以" user1 " 身份登录并启动Safari,然后点击右上角的" user1 "并将用户切换为" user2 ".现在,我正在尝试检测Safari是否正在运行" user1 ",但我无法使用标准调用.我使用OS X 10.8 Mountain Lion来开发和运行我的代码.

我使用了以下但是徒劳无功:

  1. [[NSWorkspace sharedWorkspace] runningApplications] - 列表中没有Safari
  2. GetNextProcess() - Safari没有出现
  3. GetProcessForPID() - 我收到错误"没有这样的过程"

但是当我ps -aef | grep Safari从终端做一个时,我可以看到Safari.(这不仅适用于Safari,也适用于其他应用程序.)

有人可以请帮助.非常感谢你.

macos objective-c switch-user nsworkspace nsrunningapplication

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

使用 NSWorkspace 不工作的参数启动应用程序

我想用参数打开 FileZilla(ftp 应用程序)。

它正在与NSTask (aka. Process) 一起工作:

let process:Process = Process()
process.launchPath = appURL.path
process.arguments = ["ftp://1.2.3.4"]
process.launch()
Run Code Online (Sandbox Code Playgroud)

它不适用于NSWorkspace

try! NSWorkspace.shared().launchApplication(
   at: appURL,
   options: .default,
   configuration: [NSWorkspaceLaunchConfigurationArguments:["ftp://1.2.3.4"]]
)
Run Code Online (Sandbox Code Playgroud)

随着不工作我的意思是,FileZilla中推出,但参数不过去了。

API 看起来很简单,但我无法弄清楚我在这里做错了什么。

我想使用 NSWorkspace 的原因是,应用程序不会在前台启动 NSTask。

macos cocoa nstask nsworkspace swift

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

全屏启动其他应用

正如我在主题中提到的那样,我想知道是否可以通过我的应用程序以全屏方式运行应用程序。

我尝试使用辅助功能,但没有找到任何可以帮助的内容。我也尝试使用NSWorkspace,但是结果是一样的。我被卡住了。

有人可以帮我吗?

macos cocoa accessibility nsworkspace swift

5
推荐指数
0
解决办法
212
查看次数

NSWorkspaceWillPowerOffNotification 从未被调用

我正在尝试在后台进程中运行一个程序,该程序将注册系统中的每个关闭事件。

通过注册 NSWorkspaceWillPowerOffNotification 来实现此目的,如下所示:

#import <AppKit/AppKit.h>

@interface ShutDownHandler : NSObject <NSApplicationDelegate>

- (void)computerWillShutDownNotification:(NSNotification *)notification;

@end


int main(int argc, char* argv[]) {
    NSNotificationCenter *notCenter;

    notCenter = [[NSWorkspace sharedWorkspace] notificationCenter];

    ShutDownHandler* sdh = [ShutDownHandler new];

    [NSApplication sharedApplication].delegate = sdh;

    [notCenter addObserver:sdh
                  selector:@selector(computerWillShutDownNotification:)
                      name:NSWorkspaceWillPowerOffNotification
                    object:nil];

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        [[NSFileManager defaultManager] createFileAtPath:@"./output.txt" contents:nil attributes:nil];
    });

    [[NSRunLoop currentRunLoop] run];

    return 0;
}


@implementation ShutDownHandler

- (void)computerWillShutDownNotification:(NSNotification *)notification {
    NSFileHandle* file = [NSFileHandle fileHandleForUpdatingAtPath: @"./output.txt"];
    [file seekToEndOfFile];

    NSDateFormatter* fmt = [NSDateFormatter new];
    [fmt setDateFormat:@"yyyy-MM-dd …
Run Code Online (Sandbox Code Playgroud)

macos nsnotifications nsworkspace macos-sierra

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

目标C代码用于后台进程

我使用NSApplication和NSWorkspace来获取正在运行的应用程序列表.

但它只给我管理员激活的应用程序,而不是后台运行的根进程.

我希望获得所有正在运行的进程的列表,并在新进程生成后立即更新该列表.

我不想使用NSTask和解析输出.

有没有解决这个问题?

NSArray * runningapps = [[NSWorkspace sharedWorkspace] runningApplications];
Run Code Online (Sandbox Code Playgroud)

macos xcode objective-c nsarray nsworkspace

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

获取 NSPasteboardTypeFileURL 的 UTI

NSFilenamesPboardType在 10.14 上已弃用,建议使用NSPasteboardTypeFileURL. 这给了我文件名

\n\n
\n

文件:///.file/id=6571367.12885025918

\n
\n\n

NSWorkspace无法摆脱尿路感染。

\n\n

如何感染尿路感染NSPasteboardTypeFileURL

\n\n

旧代码:

\n\n
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender\n{\n    NSDragOperation sourceDragMask = [sender draggingSourceOperationMask];\n    NSDragOperation resultingDragMask = NSDragOperationNone;\n    NSPasteboard *pboard = [sender draggingPasteboard];\n\n    if ([[pboard types] containsObject:NSFilenamesPboardType]) {\n        NSArray <NSString *>*list = [pboard propertyListForType:NSFilenamesPboardType];\n        NSString *firstItem = [list objectAtIndexedSubscript:0];\n        NSError *error;\n        NSString *UTI = [[NSWorkspace sharedWorkspace] typeOfFile:firstItem error:&error];\n        if (!error) {\n            if ([[NSImage imageTypes] containsObject:UTI]) {\n                resultingDragMask = NSDragOperationCopy;\n            }\n        }\n\n    } else if …
Run Code Online (Sandbox Code Playgroud)

cocoa uti nspasteboard nsworkspace

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

检测卸载可移动存储的时间

我正在开发一个应用程序,它可以检测卸载存储器或从USB强行拔出可移动存储器时发生的事件.我怎样才能收到这些活动?

我已经看到NSWorkspace了第一种顺利卸载设备的可能性,但是这个类有-unmountAndEjectDeviceAtPath:卸载设备的方法.有人能指出一些检测未安装卷的示例代码吗?

cocoa volume removable-drive diskarbitration nsworkspace

4
推荐指数
2
解决办法
1933
查看次数

过滤 [NSWorkspace runningApplications] 以仅包含用户应用程序(无守护程序/UIAgents)

有没有办法过滤由 给出的应用程序列表[NSWorkspace runningApplications]以隐藏所有守护进程等,而无需手动检查每个应用程序的 plist 中的 UIAgent 密钥?如果应用程序没有显示在扩展坞中,则我对它不感兴趣。

macos cocoa objective-c nsworkspace nsrunningapplication

4
推荐指数
1
解决办法
1999
查看次数

Sandboxed Helper App无法启动正确的父应用程序

我正在使用本教程向我的应用程序添加登录项.大部分都按预期工作,我已设法创建一个沙盒帮助应用程序并将其注册到启动服务,因此它应该在登录时启动.

现在的问题是,该教程并不是非常具体地说明了如何从这个帮助应用程序中启动主应用程序包.它仅包括:

[[NSWorkspace sharedWorkspace] launchApplication:
@"/Path/To/Main/App/Bundle"];
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用任何NSWorkspace方法以完整路径启动应用程序,它将失败,因为Sandbox不允许这样做.

如果我尝试将上述方法的参数设置为我的应用程序名称,它可以正常工作,但奇怪地启动我的应用程序的旧版本(我将这些存储在我的硬盘上,但它们不在/ Applications文件夹中,仅我的应用程序的正确版本位于/ Applications文件夹中)

现在有人为什么会这样,或者我怎么能解决这个问题?

cocoa sandbox objective-c nsworkspace

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