mac 辅助接口
mac 辅助接口
1.打开文件所在目录并选中该文件
2.获取plist属性值
3.系统关机
4.打开系统网络设置
5.字符串包含比较
6.系统挂载数及挂载盘符信息
//====================================================
1.打开文件所在目录并选中该文件
<1>.cocoa NSWorkspace方式
void MacOpenLocateFileInWindow(const char *pChFilePath)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *nsStrFilePath = [[NSString alloc] initWithUTF8String:pChFilePath];
NSURL *nsFileURL = [NSURL fileURLWithPath:nsStrFilePath];
NSWorkspace *nsWorkSpace = [NSWorkspace sharedWorkspace];
[nsWorkSpace selectFile:[nsFileURL path] inFileViewerRootedAtPath:nil];
[pool drain];
return;
}
eg:
----------------------------------------
char *chStrPath;
MacOpenLocateFileInWindow(chStrPath);
<2>.Qt QProcess方式
QString strFilePath;
QStringList scriptArgs;
scriptArgs << QLatin1String("-e")
<< QString::fromLatin1("tell application \"Finder\" to reveal POSIX file \"%1\"").arg(strFilePath);
QProcess::execute(QLatin1String("/usr/bin/osascript"), scriptArgs);
scriptArgs.clear();
scriptArgs << QLatin1String("-e")
<< QLatin1String("tell application \"Finder\" to activate");
QProcess::execute("/usr/bin/osascript", scriptArgs);
2.获取plist属性值
int MacGetInfoAttribute(char *pChAttribute, const char *pChKey)
{
int iRet = -1;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *nsStrAttribute = nil;
NSString *nsStrKey = [[NSString alloc] initWithUTF8String:pChKey];
nsStrAttribute = [[NSBundle mainBundle] objectForInfoDictionaryKey:nsStrKey];
if (nil != nsStrAttribute)
{
const char *pChAtt = [nsStrAttribute UTF8String];
int iLen = [nsStrAttribute length];
memset(pChAttribute, 0, 200);
memcpy(pChAttribute, pChAtt, iLen);
iRet = 0;
}
[nsStrKey release];
nsStrKey = nil;
[pool drain];
return iRet;
}
eg:
----------------------------------------
char chVersion[200];
memset(chVersion, 0, 200);
int iRet = GetInfoAttribute(chVersion, "CFBundleVersion");
3.系统关机
void MacShutDown()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSDictionary *errorDict = nil;
NSAppleEventDescriptor *returnDescriptor = nil;
NSAppleScript *scriptObject = [[NSAppleScript alloc] initWithSource:
@"tell application \"Finder\" to shut down"];
returnDescriptor = [scriptObject executeAndReturnError:&errorDict];
if (nil == returnDescriptor)
{
//no script result, handle error here
}
[scriptObject release];
scriptObject = nil;
[pool drain];
return;
}
4.打开系统网络设置
void MacActivateNetworkPreference()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSDictionary *errorDict = nil;
NSAppleEventDescriptor *returnDescriptor = nil;
NSAppleScript *scriptObject = [[[NSAppleScript alloc] initWithSource:
@"tell application \"System Preferences\"\n"
@"activate\n"
@"set current pane to pane \"com.apple.preference.network\"\n"
@"end tell\n"] autorelease];
returnDescriptor = [scriptObject executeAndReturnError:&errorDict];
if (nil == returnDescriptor)
{
//no script result, handle error here
}
[pool drain];
return;
}
5.字符串包含比较
bool MacCaseStrContains(const char *pSourceStr, const char *pSearchStr)
{
bool bRet = false;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *nsSource = [[NSString alloc] initWithUTF8String:pSourceStr];
int iSourceLen = [nsSource length];
[nsSource release];
nsSource = nil;
NSString *nsSearch = [[NSString alloc] initWithUTF8String:pSearchStr];
int iSearchLen = [nsSearch length];
[nsSearch release];
nsSearch = nil;
if (iSourceLen<=0 || iSearchLen<=0 || iSearchLen>iSourceLen)
{
[pool drain];
return bRet;
}
int iChSource, iChSearch;
do{
iChSource = tolower(*pSourceStr++);
iChSearch = tolower(*pSearchStr++);
}while ((--iSearchLen>0) && iChSource==iChSearch && iChSource!=0);
if (0 == iChSource-iChSearch)
{
bRet = true;
}
[pool drain];
return bRet;
}
6.系统挂载数及挂载盘符信息
typedef struct {
char chDrivePath[256];
char chDriveVolume[256];
}STRUCT_DRIVE_INFO;
<1>.系统挂载数
int MacGetMountedPointNums()
{
int iMountPoint = 0;
struct statfs *buf = NULL;
iMountPoint = getmntinfo(&buf, 0);
return iMountPoint;
}
<2>.挂载盘符信息
int MacGetMountedDriveInfo(STRUCT_DRIVE_INFO *structDriveInfo, int iMoundtedNums)
{
int iMountNum = 0;
if (iMoundtedNums <= 0)
{
return iMountNum;
}
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
DASessionRef session = DASessionCreate(kCFAllocatorDefault);
if (session)
{
unsigned i, count = 0;
struct statfs *buf = NULL;
count = getmntinfo(&buf, 0);
for (i=0; i<count; i++)
{
DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, session, buf[i].f_mntfromname);
if (disk)
{
CFDictionaryRef details = DADiskCopyDescription(disk);
if (details)
{
if (kCFBooleanTrue == CFDictionaryGetValue(details, kDADiskDescriptionMediaRemovableKey))
{
NSDictionary *dd = (NSDictionary*) DADiskCopyDescription(disk);
if (dd)
{
if (0==memcmp(buf[i].f_fstypename, "udf", 3) && iMountNum<iMoundtedNums)
{
NSString *nsStrVolumeName = [dd objectForKey:(NSString*)kDADiskDescriptionVolumeNameKey];
int iLen = [nsStrVolumeName length];
memset(structDriveInfo[iMountNum].chDriveVolume, 0, 256);
memcpy(structDriveInfo[iMountNum].chDriveVolume, [nsStrVolumeName UTF8String], iLen);
NSString *nsStrDrivePath = [NSString stringWithUTF8String:buf[i].f_mntonname];
iLen = [nsStrDrivePath length];
memset(structDriveInfo[iMountNum].chDrivePath, 0, 256);
memcpy(structDriveInfo[iMountNum].chDrivePath, [nsStrDrivePath UTF8String], iLen);
iMountNum++;
}
[dd release];
dd = nil;
}
}
CFRelease(details);
}
CFRelease(disk);
}
}
CFRelease(session);
}
[pool drain];
return iMountNum;
}
eg:
----------------------------------------
int iMountPoint = MacGetMountedPointNums();
if (iMountPoint > 0)
{
STRUCT_DRIVE_INFO stDriveInfo[iMountPoint];
int iNums = MacGetMountedDriveInfo(stDriveInfo, iMountPoint);
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。