Je suis en train de créer une application dans laquelle je dois montrer le nom des applications qui tournent en arrière-plan. J'ai fait de la recherche et du développement sur ce sujet et j'ai découvert que nous ne pouvons connaître que les applications d'Apple comme Photos, Camera, etc. Mais je ne savais pas comment faire. S'il vous plaît aidez-moi si vous savez comment obtenir JUSTE LES NOMS DES APPLICATIONS EN ARRIÈRE-PLAN Pour les processus en arrière-plan, j'ai utilisé la méthode suivante
- (NSArray *)runningProcesses {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};
size_t miblen = 4;
size_t size;
int st = sysctl(mib, miblen, NULL, &size, NULL, 0);
struct kinfo_proc * process = NULL;
struct kinfo_proc * newprocess = NULL;
do {
size += size / 10;
newprocess = realloc(process, size);
if (!newprocess){
if (process){
free(process);
}
return nil;
}
process = newprocess;
st = sysctl(mib, miblen, process, &size, NULL, 0);
} while (st == -1 && errno == ENOMEM);
if (st == 0){
if (size % sizeof(struct kinfo_proc) == 0){
int nprocess = size / sizeof(struct kinfo_proc);
if (nprocess){
NSMutableArray * array = [[NSMutableArray alloc] init];
for (int i = nprocess - 1; i >= 0; i--){
NSString * processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid];
NSString * processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm];
NSDictionary * dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:processID, processName, nil]
forKeys:[NSArray arrayWithObjects:@"ProcessID", @"ProcessName", nil]];
[processID release];
[processName release];
[array addObject:dict];
[dict release];
}
free(process);
return [array autorelease];
}
}
}
return nil;
}
Si vous pensez que c'est impossible, jetez un coup d'œil à cette application. http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8 . J'ai aussi trouvé une solution mais ce n'est pas la bonne (je l'ai mentionné dans le dernier commentaire sous cette question).
Gracias.