Преобразуйте код Objective C в C ++ для обнаружения простоя пользователя на OS X - PullRequest
3 голосов
/ 23 августа 2010

Я занимаюсь разработкой приложения Qt / C ++, и мне нужна простая функция, которая восстанавливает время простоя пользователя в Mac OS X за секунды.

Я нашел этот код для обнаружения простоя пользователя.

#include <IOKit/IOKitLib.h>

/**
 Returns the number of seconds the machine has been idle or -1 if an error occurs.
 The code is compatible with Tiger/10.4 and later (but not iOS).
 */
int64_t SystemIdleTime(void) {
    int64_t idlesecs = -1;
    io_iterator_t iter = 0;
    if (IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching("IOHIDSystem"), &iter) == KERN_SUCCESS) {
        io_registry_entry_t entry = IOIteratorNext(iter);
        if (entry) {
            CFMutableDictionaryRef dict = NULL;
            if (IORegistryEntryCreateCFProperties(entry, &dict, kCFAllocatorDefault, 0) == KERN_SUCCESS) {
                CFNumberRef obj = CFDictionaryGetValue(dict, CFSTR("HIDIdleTime"));
                if (obj) {
                    int64_t nanoseconds = 0;
                    if (CFNumberGetValue(obj, kCFNumberSInt64Type, &nanoseconds)) {
                        idlesecs = (nanoseconds >> 30); // Divide by 10^9 to convert from nanoseconds to seconds.
                    }
                }
                CFRelease(dict);
            }
            IOObjectRelease(entry);
        }
        IOObjectRelease(iter);
    }
    return idlesecs;
}    

Как преобразовать этот код в C ++ для использования с моим проектом Qt / C ++?

1 Ответ

3 голосов
/ 24 августа 2010

Вам просто нужно добавить IOKit.framework в список связанных фреймворков.Думайте о структуре как о пакете общих библиотек и связанных ресурсов.IOKit.framework в

 /System/Library/Frameworks/IOKit.framework

Я не знаю, как это сделать в проекте Qt;у проекта должен быть список дополнительных фреймворков, с которыми вы хотите связать.Если это стандартный проект XCode, есть пункт меню под названием add a framework to the project или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...