Вот мой текущий код, который не работает:Как смоделировать функцию скриншота (Mac) Cocoa?
CGEventSourceRef src =
CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef cmdd = CGEventCreateKeyboardEvent(src, 0x37, true);
CGEventRef cmdu = CGEventCreateKeyboardEvent(src, 0x37, false);
CGEventRef optd = CGEventCreateKeyboardEvent(src, 0x3A, true);
CGEventRef optu = CGEventCreateKeyboardEvent(src, 0x3A, false);
CGEventRef dd = CGEventCreateKeyboardEvent(src, 0x02, true);
CGEventRef du = CGEventCreateKeyboardEvent(src, 0x02, false);
CGEventSetFlags(dd, kCGEventFlagMaskCommand^kCGEventFlagMaskAlternate);
CGEventSetFlags(du, kCGEventFlagMaskCommand^kCGEventFlagMaskAlternate);
CGEventTapLocation loc = kCGHIDEventTap; // kCGSessionEventTap also works
CGEventPost(loc, cmdd); //Cmd down
CGEventPost(loc, optd); //Option down
CGEventPost(loc, dd); //D down
CGEventPost(loc, cmdu); //Cmd up
CGEventPost(loc, optu); //Option up
CGEventPost(loc, du); //D up
CFRelease(cmdd);
CFRelease(cmdu);
CFRelease(optd);
CFRelease(optu);
CFRelease(dd);
CFRelease(du);
CFRelease(src);
Что мне нужно изменить, чтобы сделать его работу? Кто-нибудь знает, почему он не работает?
Я пытался это сделать, и люди говорят, что это невозможно, ха-ха! Я изначально хотел сделать это программно. Благодаря! – CloudSync
В примере показан только полный захват экрана, и я хотел бы использовать функцию пользовательского интерфейса для выбора региона. Возможно ли это? – CloudSync
Вместо 'CGDisplayCreateImage()', используйте 'CGDisplayCreateImageForRect(). Вы можете использовать свой собственный пользовательский интерфейс, чтобы пользователь мог выбрать прямоугольник (прозрачное оверлейное окно, в котором вы рисуете полупрозрачный прямоугольник выбора). –