FireMonkey Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
FireMonkey 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

FireMonkey 팁&트릭
[20] 맥에서 어플 실행동안 화면보호기(Screen Saver) Enable/Disable
무대뽀 [kazankros] 3012 읽음    2016-04-01 18:20
따로 빼서 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;

험프리 [hjfactory]   2016-04-04 13:29 X
공유 감사합니다^^
무대뽀 [kazankros]   2016-04-04 15:32 X
제가 Disable하는부분만 보느라 실수한 부분이 있네요. 다시 수정하였습니다.
IOPMAssertionRelease부분의 파라메터가 Pointer가 아닌 Uint32입니다. 그래서 다시 수정 하였습니다 ㅠ_ㅠ

+ -

관련 글 리스트
20 맥에서 어플 실행동안 화면보호기(Screen Saver) Enable/Disable 무대뽀 3012 2016/04/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.