Suspend computer
От: Mazin Украина http://caree.narod.ru
Дата: 14.08.02 02:41
Оценка:
Не подскажете как в w2k программно послать комп в спящий режим? Нижеприведенный код не помогает...

    SetSuspendState(false, false, false);


Сенкс.

P.S.: Если б я знал как это сделать без написания новой программы..
Re: Suspend computer
От: LeXa24  
Дата: 14.08.02 04:20
Оценка:
Здравствуйте Mazin, Вы писали:

M>Не подскажете как в w2k программно послать комп в спящий режим? Нижеприведенный код не помогает... :???:


M>
M>    SetSuspendState(false, false, false);
M>


M>Сенкс.


M>P.S.: Если б я знал как это сделать без написания новой программы..



Да работает все:

hDll = LoadLibrary("Powrprof.dll");
if (hDll)
fnSuspended = (T_Suspended)GetProcAddress(hDll, "SetSuspendState");
if (fnSuspended)
fnSuspended(true, true, true);
.....................
:???:
Re[2]: Suspend computer
От: Аноним  
Дата: 15.08.02 01:25
Оценка:
Вот код:

typedef BOOLEAN (WINAPI *SETSUSPENDSTATE)(BOOLEAN, BOOLEAN, BOOLEAN);
SETSUSPENDSTATE SetSuspendState = NULL;

BOOL CSuspendDlg::OnInitDialog()
{
    ...

    if (!(m_hInstDll = LoadLibrary(_T("powrprof.dll"))) || 
        !(SetSuspendState = (SETSUSPENDSTATE)GetProcAddress(
            m_hInstDll, _T("SetSuspendState"))))
    {
        TCHAR buf[0xFF];
        lstrcpy(buf, _T("Generic error was occured"));
        MessageBox(buf, _T("Error starting program"), MB_ICONERROR);
        EndDialog(-1);
        return TRUE;
    }

    return TRUE;
}

void CSuspendDlg::OnSuspendBtnClick() 
{
    SetSuspendState(false, false, false);
}

BOOL CSuspendDlg::DestroyWindow() 
{
    FreeLibrary(m_hInstDll);

    return CDialog::DestroyWindow();
}


Выполнение SetSuspendState к сожалению ни к чему не приводит. Но вот когда время приходит (Power options), то виндоус и монитор гасит, и диски отрубает... Для этого она же пользуется чем-то. Может по отдельности монитор, а потом диски? Но как? ЧиркнИте pls, если в курсе ;o)
Re[3]: Suspend computer
От: Аноним  
Дата: 15.08.02 01:42
Оценка:
А>Вот код:

Забыл сказать, с "true, true, true" тоже не получается :(
Re[3]: Suspend computer
От: LeXa24  
Дата: 15.08.02 14:36
Оценка:
Здравствуйте Аноним, Вы писали:

А>Вот код:


А>
А>typedef BOOLEAN (WINAPI *SETSUSPENDSTATE)(BOOLEAN, BOOLEAN, BOOLEAN);
А>SETSUSPENDSTATE SetSuspendState = NULL;

А>BOOL CSuspendDlg::OnInitDialog()
А>{
А>    ...

А>    if (!(m_hInstDll = LoadLibrary(_T("powrprof.dll"))) || 
А>        !(SetSuspendState = (SETSUSPENDSTATE)GetProcAddress(
А>            m_hInstDll, _T("SetSuspendState"))))
А>    {
А>        TCHAR buf[0xFF];
А>        lstrcpy(buf, _T("Generic error was occured"));
А>        MessageBox(buf, _T("Error starting program"), MB_ICONERROR);
А>        EndDialog(-1);
А>        return TRUE;
А>    }

А>    return TRUE;
А>}

А>void CSuspendDlg::OnSuspendBtnClick() 
А>{
А>    SetSuspendState(false, false, false);
А>}

А>BOOL CSuspendDlg::DestroyWindow() 
А>{
А>    FreeLibrary(m_hInstDll);

А>    return CDialog::DestroyWindow();
А>}
А>


А>Выполнение SetSuspendState к сожалению ни к чему не приводит. Но вот когда время приходит (Power options), то виндоус и монитор гасит, и диски отрубает... Для этого она же пользуется чем-то. Может по отдельности монитор, а потом диски? Но как? ЧиркнИте pls, если в курсе ;o)


Весьма странно, у меня (на 2-х тачках W2KP, W2KS) все работает, поэтому проверяй настройки, в самой винде особых настроек нет, попробуй БИОС посмотреть. Да и проверь на возможность самого состояния: BOOL IsPwrSuspendAllowed().
Re[4]: Suspend computer
От: LeXa24  
Дата: 15.08.02 14:41
Оценка:
Здравствуйте Аноним, Вы писали:

А>>Вот код:


А>Забыл сказать, с "true, true, true" тоже не получается :(


Ну первый параметр лучше все таки делать true, тогда он в hibernate пошлет. Пробовал делать false, муть какая то получается. Последний параметр, по идее тоже лучше делать true, чтоб на всякие подозрительные wake up не отвечал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.