CMD + Option+Dキーの押下を同時にシミュレートする必要があります。私はあらゆる種類の調査を行いましたが、これまで見てきた最善の方法はこれを行うことです。
CGEventSourceRef src =
CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef cmdd = CGEventCreateKeyboardEvent(src, kVK_Command, true);
CGEventRef cmdu = CGEventCreateKeyboardEvent(src, kVK_Command, false);
CGEventRef optd = CGEventCreateKeyboardEvent(src, kVK_Option, true);
CGEventRef optu = CGEventCreateKeyboardEvent(src, kVK_Option, false);
CGEventRef dd = CGEventCreateKeyboardEvent(src, kVK_ANSI_D, true);
CGEventRef du = CGEventCreateKeyboardEvent(src, kVK_ANSI_D, false);
CGEventSetFlags(dd, kCGEventFlagMaskCommand); //NO idea why this is here.
CGEventSetFlags(du, kCGEventFlagMaskCommand); //NO idea why this is here.
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);
ただし、これを行うと、キーボードを使用するときのようにドックが切り替わりませんか?どうしてこれなの?私は何が間違っているのですか?Carbon.hをインポートしたので、これでうまくいくようです。