Declares may look intimidating, but they’re not so bad with a couple of quick googles… this took 5 minutes.
–Make a new module (IOKitSleepControl) and add some constants
Const kIOPMAssertionLevelOn = 255
Const kIOPMAssertionTypeNoDisplaySleep = “NoDisplaySleepAssertion”
Const kIOPMAssertionTypeNoIdleSleep = “NoIdleSleepAssertion”
Const kIOPMAssertionTypePreventSystemSleep = “PreventSystemSleep”
Const kIOPMAssertionTypePreventUserIdleDisplaySleep = “PreventUserIdleDisplaySleep”
Const kIOPMAssertionTypePreventUserIdleSystemSleep = “PreventUserIdleSystemSleep”
–add a couple functions
Function noSleep(NoSleepType As String,reasonForNoSleep as String) As integer
declare function IOPMAssertionCreateWithName lib “IOKit” (NoSleeptype as CFStringRef, kIOPMAssertionLevelOn as integer, reasonForActivity as CFStringRef, byref assertionID as integer ) as integer
Return IOPMAssertionCreateWithName(NoSleepType,kIOPMAssertionLevelOn,reasonForNoSleep,AssertionID)
End Function
Function sleepOk() As Integer
declare Function IOPMAssertionRelease lib “IOKit” (AssertionID as integer) as Integer
Return IOPMAssertionRelease(AssertionID)
End Function
–add a property
Private AssertionID As Integer
–Call noSleep
dim res As Integer=IOKitSleepControl.noSleep(kIOPMAssertionTypeNoDisplaySleep,“Just because”)
–Allow Sleep
dim ok as Integer=IOKitSleepControl.sleepOk
seems to work for me OSX10.7.5 Both functions return 0 on success