好的 - 我正在Objective C中编写一个守护进程,它每5秒检查一次连接的路由器mac地址.
我对目标C完全不熟悉,我正在寻找一种更好的方法来做我已经在做的事情.
我正在调用"arp -a"并通过"Task"解析结果:
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/sbin/arp"];
NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"-a", nil];
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
Run Code Online (Sandbox Code Playgroud)
我担心这不是很有效率.
有什么建议?我每5秒运行一次这个代码块.
我正计划编写一个小的守护程序,以检测另一个应用程序是否崩溃,并一直在思考系统将发送NSWorkspaceDidTerminateApplicationNotification,但事实并非如此。
假设我不想创建已启动的过程来简单地重新启动崩溃的应用程序,是否可以通过其他方式检测到崩溃?
也许我可以监视系统日志?这似乎是不适当的负担。
我正在寻找一种方法来收听任何程序发送到任何其他程序的所有Apple Events.有一个应用程序,AEMonitor,曾经这样做,但它现在是放弃软件.
有没有一种已知的方法可以通过可可,碳等来做到这一点?
任何帮助很多人赞赏.
-
目标操作系统是10.6
-
Carification:我希望监控所有苹果活动,或至少监测其中的大部分活动.我知道,有可能推出一个应用程序,并听取其不良这样.
这对我来说很困惑.我有一个功能,这样做:
void ListAllStoredLocations(NSString *SearchTerm){
NSMutableDictionary *item;
NSString* filePath = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"/Preferences/yourprogram.plist"];
item = [[[NSMutableDictionary alloc] initWithContentsOfFile:filePath] mutableCopy];
NSMutableArray *ReadStoredArray = [item objectForKey:SearchTerm];
NSMutableArray *SortedArray = [[NSMutableArray alloc] init];
NSString *CurrentResult=@"";
for (int i = 0; i< [ReadStoredArray count]; i++){
CurrentResult=(NSString *)[ReadStoredArray objectAtIndex:i];
[SortedArray addObject:CurrentResult];
}
[SortedArray sortUsingSelector:@selector(compare:)];
for (int i = 0; i< [SortedArray count]; i++){
NSLog(@"%@",[SortedArray objectAtIndex:i]);
}
[item release];
Run Code Online (Sandbox Code Playgroud)
}
哪个在第一个for循环中找到输出NSStrings,如下所示:
LOCATION1
LOCATION2
不是一个位置
LOCATION2
LOCATION3
LOCATION2
我希望输出是按字母顺序排列的:
LOCATION1
LOCATION2
LOCATION2
LOCATION2
LOCATION3
不是一个位置
但是,无论如何,"[SortedArray …
我只需要在分配有效的IP地址时发布通知.我已尝试通过SCReachability进行轮询,但这似乎效率低下.
有什么建议?这似乎应该很简单,但我已经挣扎了几个小时才能得到任何工作.
我有iTextSharp在VB.net中为我创建一个pdf.一切都在着名,除了现在我想嵌入一个图像.我试过这个:
Dim test = My.Resources.MyImage
Dim logo = Image.GetInstance(test)
Run Code Online (Sandbox Code Playgroud)
这是一个错误:
无法使用这些参数调用"GetInstance"
看起来好像它需要一个路径,并且正在获得System.Drawing.Bitmap类型.
有什么办法可以将项目资源图像添加到我的PDF中吗?提前致谢!
这只是让我疯了.我试图用bash读取文件,删除重复项,排序,然后通过applescript显示"列表选择"窗口.
我的$ DATALOG文件的格式如下:
field1 field2
field1 field3
field1 field4
等等...
AppleScript的=awk '{print $2}' $DATALOG | awk ' !x[$0]++' | sort -u | tr "_" " "| sed 's/^/\"/' | sed 's/$/\"/' | tr "\n" "," | sed 's/.$//'
现在,这条线路很棒.在$ Applescript中,我得到这样的输出:
"场2","场3","场4"
这正是我想要的.
现在,我接受输出,并在引号和applescript部分之前添加反斜杠.
Applescript=`echo "tell application \"System Events\" to return (choose from list {$Applescript})"| sed 's/\"/\\\"/g'`
Run Code Online (Sandbox Code Playgroud)
这让我得到了我想要的东西:
告诉应用程序\"系统事件\"返回(从列表{\"字段2 \",\"字段3 \",\"字段4 \"}中选择)
现在,我尝试osascript命令:
osascript -e $ Applescript
我收到一个错误:
4:4:语法错误:预期的表达式但发现脚本结束.(-2741)
所以,我添加引号:
osascript -e"$ Applescript"
我收到一个错误:
17:18:语法错误:预期的表达式,属性或密钥形式等,但发现未知令牌.(-2741)
我不知道这里到底发生了什么,所以我决定复制$ Airport的回声并尝试将其作为一个变量.
机场=
tell application …
macos ×6
cocoa ×3
objective-c ×3
applescript ×2
bash ×2
appleevents ×1
crash ×1
itextsharp ×1
launchd ×1
list ×1
macos-carbon ×1
pdf ×1
resources ×1
sed ×1
sorting ×1
vb.net ×1
xcode ×1