Russian Qt Forum

Программирование => Общий => Тема начата: hackoff от Июнь 02, 2010, 09:30



Название: Ждущий режим
Отправлено: hackoff от Июнь 02, 2010, 09:30
При попытке перевести компьютер в ждущий режим с помощью функции
Код:
#include <PowrProf.h>

Код:
SetSuspendState(true, false, false);

Выдает ошибки на стадии компиляции:
Код:
D:\diplom\clnt/src//systemFunction.cpp:56: undefined reference to `SetSuspendState@12'
Файл PowProf.h существует, и в нем есть BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);

В чем ошибка?


Название: Re: Ждущий режим
Отправлено: pastor от Июнь 02, 2010, 10:47
это ошибка на стадии линковки. Подключи PowrProf.lib к проекту.


Название: Re: Ждущий режим
Отправлено: hackoff от Июнь 02, 2010, 12:23
Добавил
Код:
LIBS += C:/Windows/System32/powrprof.dll
. Не помогло.
Сделал так:
Код:
    HINSTANCE hMyDll;
    LPCSTR str("PowrProf.dll");
    hMyDll = LoadLibraryA(str);

    typedef bool (WINAPI *PFN_MyFunction)(bool,bool,bool);
    PFN_MyFunction pfnMyFunction;
    pfnMyFunction=(PFN_MyFunction) GetProcAddress(hMyDll,"SetSuspendState");
    pfnMyFunction(false,false,false);

Только вот при вызове  pfnMyFunction(false,false,false); и  pfnMyFunction(true,false,false); почему-то одно и тоже делает (уходит в спячку).
Хотя как я понял при pfnMyFunction(false,false,false) ждущий режим, а при pfnMyFunction(true,false,false) спящий режим...
Ох уж это winApi... ничего не понятно :(


Название: Re: Ждущий режим
Отправлено: Sahab от Июнь 02, 2010, 12:39
LIBS += path/to/PowrProf.lib

...
p.s. а зочем выдирать с либы если есть хидер?


Название: Re: Ждущий режим
Отправлено: hackoff от Июнь 02, 2010, 12:51
у меня опыта нет работы с либами.... вот и изобретаю велосипед :(


Название: Re: Ждущий режим
Отправлено: hackoff от Июнь 02, 2010, 14:19
g++: path/to/PowrProf.lib: No such file or directory
не понятно...


Название: Re: Ждущий режим
Отправлено: crossly от Июнь 02, 2010, 14:26
g++: path/to/PowrProf.lib: No such file or directory
не понятно...
не ужели даже желания читать то что тебе пишут нету??:).... сразу видно студент.... найди у себя путь path/to/


Название: Re: Ждущий режим
Отправлено: hackoff от Июнь 02, 2010, 14:29
сделал так:
Код:
LIBS += C:\Qt\2010.02.1\mingw\lib\libpowrprof.a
При малом кругозоре в работе с библиотеками трудной найти полезную информацию, да и информативность ее на порядок ниже.

Код:
path/to/
не нашел.


Название: Re: Ждущий режим
Отправлено: crossly от Июнь 02, 2010, 14:36
Цитировать
Код:
path/to/
не нашел.
очень странно .... ума не приложу... с чего бы это не было....


Название: Re: Ждущий режим
Отправлено: hackoff от Июнь 02, 2010, 14:43
аналогично. Даже великий поиск не помог :(


Название: Re: Ждущий режим
Отправлено: crossly от Июнь 02, 2010, 16:07
а смысл path to понятен?? .... это вопрос на тему "А где на клавиатуре Any Key?"


Название: Re: Ждущий режим
Отправлено: Sahab от Июнь 02, 2010, 16:29
провокация?
аналогично. Даже великий поиск не помог :(
это имелось в виду win+F или google?
Добавил
Код:
LIBS += C:/Windows/System32/powrprof.dll
. Не помогло.
Сделал так:
Код:
    HINSTANCE hMyDll;
    LPCSTR str("PowrProf.dll");
    hMyDll = LoadLibraryA(str);

    typedef bool (WINAPI *PFN_MyFunction)(bool,bool,bool);
    PFN_MyFunction pfnMyFunction;
    pfnMyFunction=(PFN_MyFunction) GetProcAddress(hMyDll,"SetSuspendState");
    pfnMyFunction(false,false,false);

Только вот при вызове  pfnMyFunction(false,false,false); и  pfnMyFunction(true,false,false); почему-то одно и тоже делает (уходит в спячку).
Хотя как я понял при pfnMyFunction(false,false,false) ждущий режим, а при pfnMyFunction(true,false,false) спящий режим...
Ох уж это winApi... ничего не понятно :(

резолвить мы значит можем а "path/to" никак? или я беру слишком высоко и это простой копи-паст?...
но тогда "diplom" в пути навевает ...
Цитировать
D:\diplom\clnt/src//systemFunction.cpp:56: undefined reference to `SetSuspendState@12'
... /me в недоумении


Название: Re: Ждущий режим
Отправлено: hackoff от Июнь 03, 2010, 05:27
издеваетесь... А мне по прежнему не понятен смысл совета "LIBS += path/to/PowrProf.lib".
Возможно я и должен был догадаться что path/to  это произвольная папка(pathTo понятнее). Но вот что PowrProf.lib == libpowrprof.a это сложнее... Если бы я это знал, то проблемы не возникло бы.
Прошу прощения, за то, что отвлекаю глупыми вопросами, но мне и правда было не понятно.