2016-03-29 26 views
3

Ich habe versucht zu setzen es globale Größe mit diesem Code ist:Wie ändert man die Größe des Systemcursors in einer Macosx Cocoa App programmatisch mit Hilfe von swift oder objective-c?

-(void)setOption { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSDictionary *olddict = [defaults persistentDomainForName:@"com.apple.universalaccess"]; 
    NSMutableDictionary *newdict = [olddict mutableCopy]; 
    [newdict setObject:@4.0 forKey:@"mouseDriverCursorSize"]; 
    [defaults setPersistentDomain:newdict forName:@"com.apple.universalaccess"]; 
    [defaults synchronize]; 
    NSLog(@"Cursor size set to %@", newdict); 
} 

Und ich kann in der NSLog sehen, dass es sie verändert, aber ich weiß nicht, wie das System den Cursor, um neu zu starten/Reset für den Cursor, um zur angegebenen Größe zu wechseln.

Kennt jemand eine bessere Möglichkeit, die Größe programmgesteuert zu ändern oder den Systemcursor neu zu starten, nachdem sich die Standardwerte geändert haben?

BEARBEITEN (über Duplikation): Meine Frage ist einzigartig, weil ich applescript nicht verwenden kann, um dieses wie die Antwort zu lösen, die im anderen Thema zur Verfügung gestellt wird. Auch das Thema wurde 2013 erstellt und scheint überholt. Vielleicht haben sich die Dinge seitdem ein wenig verändert. Vielleicht wäre Swift auch eine praktikable Lösung für die Lösung dieses Problems. Wer weiß? All diese Argumente machen deutlich, dass dies keine Doppelfrage ist.

+0

Mögliche Duplikat [Wie man die Cursorgröße auf einem Mac programmatisch ändert] (http://stackoverflow.com/questions/14510870/how-to-prog ramatisch-change-the-cursor-size-on-a-mac) – Daniel

+0

Ich habe dieses Thema verfolgt, aber nicht meine Anforderungen erfüllt. Deshalb habe ich eine andere Frage gestellt. Danke für Ihr Interesse! – eeschimosu

+0

irgendwelche Updates? Hast du meinen Vorschlag unten versucht? – StefanS

Antwort

0
CGError state = CGSShowCursor(CGSDefaultConnection) ; 
    if (state != kCGErrorSuccess) NSLOG(@"error : %d",state); 

vielleicht versuchen Sie es mit CGSShowCursor(CGSMainConnectionID())

Dies könnte auch helfen: https://github.com/alexzielenski/Mousecape/blob/1d534b1e076b07a01b80364be23c88c8439028bc/Mousecape/mousecloak/NSCursor_Private.h

+1

Ich habe deinen Vorschlag versucht, aber es hat nicht funktioniert. Im Grunde bin ich jetzt auf der Suche nach neuen Lösungen. – eeschimosu

0

Warnung. Dieser Code wird nicht auf das, was in den Einstellungen gespeichert wird es so kombinieren:

float cursorScale = 2; 
    cursorScale = MAX(1, MIN(cursorScale,4)); 
    int connectionID = CGSMainConnectionID(); 
    CGSSetCursorScale(connectionID, cursorScale); 

die Größe zu erhalten

CGSGetCursorScale(connectionID, &cursorScale); 

,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSDictionary *olddict = [defaults persistentDomainForName:@"com.apple.universalaccess"]; 
    NSMutableDictionary *newdict = [olddict mutableCopy]; 
    [newdict setObject:@4.0 forKey:@"mouseDriverCursorSize"]; 
    [defaults setPersistentDomain:newdict forName:@"com.apple.universalaccess"]; 
    [defaults synchronize]; 
    NSLog(@"Cursor size set to %@", newdict); 

KREDITE: Alex Zielenski