小编LG0*_*G01的帖子

OSX:如何从IOUSBDeviceInterface或位置ID获取卷名(或bsd名称)

我正在尝试编写一个应用程序,将特定的USB字符串描述符(USB大容量存储设备)与其卷或bsd名称相关联.

因此代码遍历所有连接的USB设备,获取字符串描述符并从其中一个中提取信息.我想获得这些USB设备的卷名.我找不到合适的API来做到这一点.我试过这样做:

DASessionRef session = DASessionCreate(kCFAllocatorDefault);
DADiskRef disk_ref = DADiskCreateFromIOMedia(kCFAllocatorDefault, 
                                             session,
                                             usb_device_ref);
const char* name = DADiskGetBSDName(disk_ref);
Run Code Online (Sandbox Code Playgroud)

但是DADiskCreateFromIOMedia函数返回nil,我假设我传递的usb_device_ref与函数期望的io_service_t不兼容.

那么如何获取USB设备的卷名?

我可以使用位置ID来做到这一点吗?

谢谢阅读.-L

FOO_Result              result = FOO_SUCCESS;
mach_port_t             master_port;
kern_return_t           k_result;
io_iterator_t           iterator = 0;
io_service_t            usb_device_ref;
CFMutableDictionaryRef  matching_dictionary = NULL; 

// first create a master_port
if (FOO_FAILED(k_result = IOMasterPort(MACH_PORT_NULL, &master_port))) {
    fprintf(stderr, "could not create master port, err = %d\n", k_result);
    goto cleanup;
}
if ((matching_dictionary = IOServiceMatching(kIOUSBDeviceClassName)) == NULL)
{
    fprintf(stderr, "could not create matching dictionary, err = %d\n", k_result); …
Run Code Online (Sandbox Code Playgroud)

macos usb iokit

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

从命令行使用Archive Utility.app(或使用applescript)

我想在我正在编写的应用程序中使用Archive Utility.app来压缩一个或多个文件.

做(从命令行):

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility file_to_zip
Run Code Online (Sandbox Code Playgroud)

是否有效,但它创建了一个cpgz文件,我可以忍受(尽管.zip会更好)但主要问题是我无法将2个文件压缩成1个档案:

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility ~/foo/a.txt ~/bar/b.txt
Run Code Online (Sandbox Code Playgroud)

上面的命令将创建2个档案(〜/ foo/a.txt.cpgz和〜/ bar/b.txt.cpgz).

我不能让它做我想做的事:

open -a /System/Library/CoreServices/Archive\ Utility.app --args xxxx
Run Code Online (Sandbox Code Playgroud)

我宁愿不使用zip命令,因为要压缩的文件相当大,所以内置进度条很好.

或者,我可以通过编程方式使用Archive Utility吗?

谢谢.

compression cocoa applescript objective-c core-services

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

NSTextField/NSSearchField当焦点在字段上时删除的默认值

我希望有一个NSTextField(或NSSearchField)的默认值,并在用户单击它时删除此默认值,并在文本视图失去焦点并且文本字段为空时进行设置.像这样:

http://imgur.com/T03vE

这听起来像我应该扩展,NSSearchField但我想知道是否有一个更容易的解决方案.

macos cocoa objective-c nstextfield nssearchfield

2
推荐指数
1
解决办法
2039
查看次数

可可:如何重新打开一个关闭的窗口

我成功注册了热键; 它的处理程序将我的应用程序窗口置于最前面:[NSApp activateIgnoringOtherApps:YES]; (至少应该这样).

当我的应用程序窗口不在前面时,我有预期的行为.
但是当我关闭窗口(单击红色x)或最小化它(单击黄色-)时它不起作用.我仍然看到日志,因此调用处理程序.

有任何想法吗?

谢谢.
-L

cocoa objective-c

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