[蘋果] 用命令列改變螢幕解析度
來源 : Change screen resolution in Terminal
/* * setgetscreenres.m * * juanfc 2009-04-13 * Based on newscreen * Created by Jeffrey Osterman on 10/30/07. * Copyright 2007 Jeffrey Osterman. All rights reserved. * PROVIDED AS IS AND WITH NO WARRANTIES WHATSOEVER * http://forums.macosxhints.com/showthread.php?t=59575 * * COMPILE: * c++ setgetscreenres.m -framework ApplicationServices -o setgetscreenres * USE: * setgetscreenres 1440 900 */ #includebool MyDisplaySwitchToMode (CGDirectDisplayID display, CFDictionaryRef mode); int main (int argc, const char * argv[]) { int h; // horizontal resolution int v; // vertical resolution CFDictionaryRef switchMode; // mode to switch to CGDirectDisplayID mainDisplay; // ID of main display CFDictionaryRef CGDisplayCurrentMode(CGDirectDisplayID display); if (argc == 1) { CGRect screenFrame = CGDisplayBounds(kCGDirectMainDisplay); CGSize screenSize = screenFrame.size; printf("%d %d\n", screenSize.width, screenSize.height); return 0; } if (argc != 3 || !(h = atoi(argv[1])) || !(v = atoi(argv[2])) ) { fprintf(stderr, "ERROR: Use %s horres vertres\n", argv[0]); return -1; } mainDisplay = CGMainDisplayID(); switchMode = CGDisplayBestModeForParameters(mainDisplay, 32, h, v, NULL); if (! MyDisplaySwitchToMode(mainDisplay, switchMode)) { fprintf(stderr, "Error changing resolution to %d %d\n", h, v); return 1; } return 0; } bool MyDisplaySwitchToMode (CGDirectDisplayID display, CFDictionaryRef mode) { CGDisplayConfigRef config; if (CGBeginDisplayConfiguration(&config) == kCGErrorSuccess) { CGConfigureDisplayMode(config, display, mode); CGCompleteDisplayConfiguration(config, kCGConfigureForSession ); return true; } return false; }
編譯 :
c++ setgetscreenres.m -framework ApplicationServices -o setgetscreenres
執行下列指令就可以改變解析度為 1280 x 800 :
./setgetscreenres 1280 800