±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
°­ÁÂ, ÆÁ, Á¤º¸ °­ÁÂ, ÆÁ, Á¤º¸ ÀÔ´Ï´Ù.
±Û³»¿ë - °­ÁÂ, ÆÁ, Á¤º¸
 [FMX] ¸Æ¿¡¼­ ¾îÇà½ÇÇàÇϴ µ¿¾È È­¸éº¸È£±â Enable/Disable
¹«´ë»Ç
(±è±ÔÇÑ)
2016-04-01 ¿ÀÈÄ 6:21:44
Ä«Å×°í¸®: ÆÁ
2337ȸ Á¶È¸



µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
µû·Î »©¼­ unitÀ¸·Î ÇÒ±î ÇÏ´Ù°¡ ±ÍÂú¾Æ¼­ ±×³É Ãß°¡ÇÏ¿´½À´Ï´Ù.
(¹°·Ð ±×³É Ãß°¡Çϸé dcu¶§¹®¿¡ ºôµå°¡ ¾ÈµË´Ï´Ù. ±×·¡¼­ º¹»çÇؼ­ ÇÊ¿äÇÑ ÇÁ·ÎÁ§Æ®¿¡ »ç¿ëÇÏ¿´½À´Ï´Ù)
ȯ°æÀº Delphi 10 Seattle ÀÔ´Ï´Ù.

-----------------------------------------
unit Macapi.IOKit

...

const
  kIOMasterPortDefault: mach_port_t = 0;
  kIOPlatformUUIDKey = 'IOPlatformUUID';

  // add
  kIOPMAssertionLevelOff = 0;
  kIOPMAssertionLevelOn  = 255;
  kIOPMAssertionTypeNoDisplaySleep = 'NoDisplaySleepAssertion';

...
type
...
function ...
...
function IOObjectRelease(anObject: io_object_t): kern_return_t; cdecl; external libIOKit name _PU + 'IOObjectRelease';

// add // AssertionID´Â Uint32ÀÇ Æ÷ÀÎÅÍÇü
function IOPMAssertionCreateWithName(AssertionType : CFStringRef; AssertLevel : uint32_t;
  AssertionName : CFStringRef; AssertionID : Pointer) : uint32_t; cdecl; external libIOKit name _PU + 'IOPMAssertionCreateWithName';
function IOPMAssertionRelease(AssertionID : uint32_t) : uint32_t; cdecl; external libIOKit name _PU + 'IOPMAssertionRelease';

---------------------------
example.


TForm1 = class(TForm)
  procedure BtnDisableClick(Sender: TObject);
  procedure BtnEnableClick(Sender: TObject);
private
  FSleepAssert : UInt32;
public
end;

implementation

uses
  Macapi.IOKit, Macapi.CoreFoundation;

............
procedure TForm1.BtnDisableClick(Sender: TObject);
begin
  FSleepAssert := 0;
  IOPMAssertionCreateWithName(CFSTR(kIOPMAssertionTypeNoDisplaySleep), kIOPMAssertionLevelOn, CFSTR('MyProject is Good'), @FSleepAssert);
  if FSleepAssert = 0 then
    ShowMessage('Disable Failed!!');
end;

procedure TForm1.BtnEnableClick(Sender: TObject);
begin
  if FSleepAssert > 0 then
    IOPMAssertionRelease(FSleepAssert);
end;