lucacasula91 Inviato 26 Novembre 2010 Segnala Condividi Inviato 26 Novembre 2010 dovrei correggere questo codice: NSString *messaggio = [TextField stringValue]; char cmd[300]; sprintf(cmd, "defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText %@", messaggio); system(cmd); praticamente su una finestra c'e la TextField e un bottone.. in modo che il messaggio che c'e sulla textField appaia sulla schermata di LogIn. chi è così gentile da aiutarmi? dovrei convertire l'NSString un un puntatore char aiutino? Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 27 Novembre 2010 Segnala Condividi Inviato 27 Novembre 2010 Allora... rispondo prima alla tua domanda con questo codice: NSString *message = nil; //due modi: //il primo è come printf, ma siccome devi solo appendere una stringa puoi usare il secondo. message = [NSString stringWithFormat:@"defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText %@", [textField stringValue]]; message = [@"defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText" stringByAppendingString:[textField stringValue]]; const char * utf8String = [message UTF8String]; Poi... invece di usare system (l'ho fatto con un mio esempio, ma è facile cambiarlo NSTask *echo = [NSTask launchedTaskWithLaunchPath:@"/usr/bin/defaults" arguments:[NSArray arrayWithObjects:@"write", @"test.francy.test", @"Prova2",@"ciao",nil]]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskIsTerminated:) name:NSTaskDidTerminateNotification object:echo]; ...... - (void) taskIsTerminated:(NSNotification *) notification { NSTask *echo = [notification object]; if ([echo terminationStatus] == 0) { NSLog(@"Task succeeded."); }else NSLog(@"Task failed."); } Makas-Book:~ makaveli$ defaults read test.francy.test { CFBundleDevelopmentRegion = English; CFBundleExecutable = "${EXECUTABLE_NAME}"; CFBundleIconFile = ""; CFBundleIdentifier = "com.yourcompany.${PRODUCT_NAME:rfc1034identifier}"; CFBundleInfoDictionaryVersion = "6.0"; CFBundleName = "${PRODUCT_NAME}"; CFBundlePackageType = APPL; CFBundleShortVersionString = "1.0"; CFBundleSignature = "????"; CFBundleVersion = 1; LSMinimumSystemVersion = "${MACOSX_DEPLOYMENT_TARGET}"; NSMainNibFile = MainMenu; NSPrincipalClass = NSApplication; Prova2 = ciao; } Makas-Book:~ makaveli$ Link al commento Condividi su altri siti Altre opzioni di condivisione...
lucacasula91 Inviato 27 Novembre 2010 Autore Segnala Condividi Inviato 27 Novembre 2010 va beh ho usato message = [NSString stringWithFormat:@"defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText %@", [textField stringValue]]; e poi printf Graize Mille Link al commento Condividi su altri siti Altre opzioni di condivisione...
lucacasula91 Inviato 27 Novembre 2010 Autore Segnala Condividi Inviato 27 Novembre 2010 no no.. problema.. il messaggio contiene più di una parola non riconosce nulla.. avrei bisogno di mettere tra virgolette il la variabile %@ ma se lo faccio mi incasina il codice.. =( Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 27 Novembre 2010 Segnala Condividi Inviato 27 Novembre 2010 Non ho capito... Vuoi mettere il valore del textfield tra virgolette? basta farle precedere dal carattere d'escape... (\) @"blv vlv \"parola con virgolette\"" Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.