ikarus/lib/Cocoa/helpers.ss

33 lines
899 B
Scheme

(library (Cocoa helpers)
(export make-app nsstring)
(import (ikarus) (Cocoa) (objc) (ikarus system $foreign))
(define (make-app)
(define kProcessTransformToForegroundApplication 1)
(define self (dlopen))
(define get-current-process
((make-callout 'void '(pointer))
(dlsym self "GetCurrentProcess")))
(define transform-process-type
((make-callout 'void '(pointer signed-int))
(dlsym self "TransformProcessType")))
(define set-front-process
((make-callout 'void '(pointer))
(dlsym self "SetFrontProcess")))
(let ([p (malloc 16)])
(get-current-process p)
(transform-process-type p kProcessTransformToForegroundApplication)
(set-front-process p)
(free p)))
(define (nsstring x)
[$ [$ NSString alloc]
initWithCharactersNoCopy: x
length: (string-length x)
freeWhenDone: #t])
)