Не подскажете как в
w2k программно послать комп в спящий режим? Нижеприведенный код не помогает...
SetSuspendState(false, false, false);
Сенкс.
P.S.: Если б я знал как это сделать без написания новой программы..
Здравствуйте 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);
.....................
:???:
Вот код:
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)
Здравствуйте Аноним, Вы писали:
А>Вот код:
А>А>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().