Здравствуйте, Abay, Вы писали:
A>Как программно отправить компьютер в спящий/ждущий режим? Не могу найти как в Visual Studio 2008(C#) использовать API функции.
Как-то так:
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("Kernel32.dll")]
extern static bool SetSystemPowerState(bool fSuspend, bool fForce);
static void Main()
{
SetSystemPowerState(true, true);
}
}
--
Справедливость выше закона. А человечность выше справедливости.
Я попробовал сделать так, но ничего видимого не произошло(. Как можно посмотреть, какие функции может предоставить *.dll? Как узнать и правильно использовать интерфейсные точки? В спящий режим компьютер так и не перешел(
Здравствуйте, Abay, Вы писали:
A>Здравствуйте, rg45, Вы писали:
R>> [DllImport("Kernel32.dll")] R>> extern static bool SetSystemPowerState(bool fSuspend, bool fForce);
A>Я попробовал сделать так, но ничего видимого не произошло(. В спящий режим компьютер так и не перешел(
Странно, у меня при вызове этой функции компьютер уходит в hibernate. Хочу уточнить, запускал ли ты мою программу, или вызывал эту функцию из своего приложения? Еще один интересный вопрос: какая операционная система?
A>Как можно посмотреть, какие функции может предоставить *.dll? Как узнать и правильно использовать интерфейсные точки?
Вообще, состав импортируемых функции можно увидеть с помощью утилиты depends.exe, поставляемой со студией, но списков параметров функций увидеть таким образом не получится. Что касается данной задачи, лучше всего смотреть документацию из MSDN. Начать можно со следующих функций: SetSystemPowerState, SetSuspendState, ExitWindows, ExitWindowsEx, а также близлежащую документацию.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, Abay, Вы писали:
A>Здравствуйте, rg45, Вы писали:
R>> [DllImport("Kernel32.dll")] R>> extern static bool SetSystemPowerState(bool fSuspend, bool fForce);
A>Я попробовал сделать так, но ничего видимого не произошло(. Как можно посмотреть, какие функции может предоставить *.dll? Как узнать и правильно использовать интерфейсные точки? В спящий режим компьютер так и не перешел(
Видимо в этом проблема:
[SetSystemPowerState is available for use in the operating systems specified in the Requirements section. It may be altered or unavailable in subsequent versions. Applications written for Windows Vista and later should use SetSuspendState instead.]
Здравствуйте, rg45, Вы писали:
A>> Хочу уточнить, запускал ли ты мою программу, или вызывал эту функцию из своего приложения?
Запускал программу и в точно таком виде и конечно же пробовал в своем приложении. не сработало(
A>> какая операционная система?
Operating System: Microsoft Windows XP Professional (32-bit)
OS Version: 5.01.2600 Service Pack 2
Здравствуйте, Abay, Вы писали:
A>Здравствуйте, rg45, Вы писали:
R>> [DllImport("Kernel32.dll")] R>> extern static bool SetSystemPowerState(bool fSuspend, bool fForce);
A>Я попробовал сделать так, но ничего видимого не произошло(. Как можно посмотреть, какие функции может предоставить *.dll? Как узнать и правильно использовать интерфейсные точки? В спящий режим компьютер так и не перешел(
MSDN:
The calling process must have the SE_SHUTDOWN_NAME privilege. To enable the SE_SHUTDOWN_NAME privilege, use the AdjustTokenPrivileges function. For more information, see Changing Privileges in a Token.