有没有办法让资源分叉不可复制?特别是我通过NSWorkspace通过NSWorkspace设置一个特定目录中包含的文件的自定义徽章图标– setIcon:forFile:options:,我希望这些徽章一旦被复制到文件夹之外就会丢失.
使用案例:我以" user1 " 身份登录并启动Safari,然后点击右上角的" user1 "并将用户切换为" user2 ".现在,我正在尝试检测Safari是否正在运行" user1 ",但我无法使用标准调用.我使用OS X 10.8 Mountain Lion来开发和运行我的代码.
我使用了以下但是徒劳无功:
[[NSWorkspace sharedWorkspace] runningApplications] - 列表中没有SafariGetNextProcess() - Safari没有出现GetProcessForPID() - 我收到错误"没有这样的过程"但是当我ps -aef | grep Safari从终端做一个时,我可以看到Safari.(这不仅适用于Safari,也适用于其他应用程序.)
有人可以请帮助.非常感谢你.
macos objective-c switch-user nsworkspace nsrunningapplication
我想用参数打开 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。
正如我在主题中提到的那样,我想知道是否可以通过我的应用程序以全屏方式运行应用程序。
我尝试使用辅助功能,但没有找到任何可以帮助的内容。我也尝试使用NSWorkspace,但是结果是一样的。我被卡住了。
有人可以帮我吗?
我正在尝试在后台进程中运行一个程序,该程序将注册系统中的每个关闭事件。
通过注册 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) 我使用NSApplication和NSWorkspace来获取正在运行的应用程序列表.
但它只给我管理员激活的应用程序,而不是后台运行的根进程.
我希望获得所有正在运行的进程的列表,并在新进程生成后立即更新该列表.
我不想使用NSTask和解析输出.
有没有解决这个问题?
NSArray * runningapps = [[NSWorkspace sharedWorkspace] runningApplications];
Run Code Online (Sandbox Code Playgroud) NSFilenamesPboardType在 10.14 上已弃用,建议使用NSPasteboardTypeFileURL. 这给了我文件名
\n\n\n文件:///.file/id=6571367.12885025918
\n
和NSWorkspace无法摆脱尿路感染。
如何感染尿路感染NSPasteboardTypeFileURL?
旧代码:
\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) 我正在开发一个应用程序,它可以检测卸载存储器或从USB强行拔出可移动存储器时发生的事件.我怎样才能收到这些活动?
我已经看到NSWorkspace了第一种顺利卸载设备的可能性,但是这个类有-unmountAndEjectDeviceAtPath:卸载设备的方法.有人能指出一些检测未安装卷的示例代码吗?
有没有办法过滤由 给出的应用程序列表[NSWorkspace runningApplications]以隐藏所有守护进程等,而无需手动检查每个应用程序的 plist 中的 UIAgent 密钥?如果应用程序没有显示在扩展坞中,则我对它不感兴趣。
我正在使用本教程向我的应用程序添加登录项.大部分都按预期工作,我已设法创建一个沙盒帮助应用程序并将其注册到启动服务,因此它应该在登录时启动.
现在的问题是,该教程并不是非常具体地说明了如何从这个帮助应用程序中启动主应用程序包.它仅包括:
[[NSWorkspace sharedWorkspace] launchApplication:
@"/Path/To/Main/App/Bundle"];
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用任何NSWorkspace方法以完整路径启动应用程序,它将失败,因为Sandbox不允许这样做.
如果我尝试将上述方法的参数设置为我的应用程序名称,它可以正常工作,但奇怪地启动我的应用程序的旧版本(我将这些存储在我的硬盘上,但它们不在/ Applications文件夹中,仅我的应用程序的正确版本位于/ Applications文件夹中)
现在有人为什么会这样,或者我怎么能解决这个问题?
nsworkspace ×10
cocoa ×7
macos ×6
objective-c ×5
swift ×2
icons ×1
macos-carbon ×1
macos-sierra ×1
nsarray ×1
nspasteboard ×1
nstask ×1
sandbox ×1
switch-user ×1
uti ×1
volume ×1
xcode ×1