Как написать программу без окна, без класса окна, без циклов while, потребляющих процессор, без консоли, но с использованием цикла сообщений, который будет потреблять меньше процессора?
Я объясняю свои требования ниже.
Я пишу программу API win32, которая использует таймер и не нуждается в окне.
Согласно руководствам, цикл сообщений по умолчанию запускается только в том случае, если с ним связано окно.
Я просмотрел другое содержимое stackoverflow, в котором четко указано, что следует предотвращать циклы while и функции сна, которые вызовут слишком большую нагрузку на процессор.
Я хочу запустить эту программу как фоновую программу без окна.
Я использую функцию обратного вызова в качестве последнего параметра для функции setTimer, поэтому мне не нужно иметь оконную процедуру.
Я слышал о событиях/объектах, используемых в цикле сообщений по умолчанию, который будет поддерживать работу программы, но не будет перегружать процессор. это единственный способ? но я не знаю, как использовать эту опцию.
Каковы все возможные способы написать такое приложение без затрат ЦП и других ресурсов?
Ваши предложения и ссылки действительно помогут.
Вот код, который у меня есть сейчас, который выйдет, потому что окна не связаны, как сказано в других обсуждениях.
#include <windows.h>
void getidle();
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
SetTimer(NULL, 1, 5000, (TIMERPROC) getidle);
MSG msg;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
void getidle()
{
//some code here
}
Поэтому мне нужно использовать другой тип цикла сообщений, и я не уверен, как его использовать. что-то вроде MsgWaitForMultipleObjects или WaitForSingleObject. ? .
Кроме того, выполняя вышеупомянутый способ, например msgwait... waitforsigle... или объекты событий, тогда и только тогда, когда они могут потреблять больше ресурсов, которые просто скрывают окно, пожалуйста, укажите это также, потому что я выберу этот простой способ ...
Он работает
Мне действительно интересно, как это работает, потому что я читал, что люди говорят, что это не работает. Я искал в сети дополнительную информацию, и это сработало... Я не знаю.
Это нормально? это правильный путь? смущенный.
(TIMERPROC) getidle
потенциально является неопределенным поведением, см. приведение указателя функции к другому типу - person user   schedule 21.10.2014