отправить программно в спящий/ждущий режим
От: Abay Казахстан  
Дата: 14.03.09 18:58
Оценка:
Как программно отправить компьютер в спящий/ждущий режим? Не могу найти как в Visual Studio 2008(C#) использовать API функции.
с уважением, Абай
visual studio .net c# shutdown спящий режим api
Re: отправить программно в спящий/ждущий режим
От: rg45 СССР  
Дата: 14.03.09 19:51
Оценка: 5 (2)
Здравствуйте, 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);
    }
}
--
Справедливость выше закона. А человечность выше справедливости.
Re[2]: функции *.dll
От: Abay Казахстан  
Дата: 14.03.09 21:36
Оценка:
Здравствуйте, rg45, Вы писали:

R> [DllImport("Kernel32.dll")]

R> extern static bool SetSystemPowerState(bool fSuspend, bool fForce);

Я попробовал сделать так, но ничего видимого не произошло(. Как можно посмотреть, какие функции может предоставить *.dll? Как узнать и правильно использовать интерфейсные точки? В спящий режим компьютер так и не перешел(
с уважением, Абай
dllimport api visual studio c# спящий режим shutdowh
Re[3]: функции *.dll
От: rg45 СССР  
Дата: 14.03.09 21:50
Оценка:
Здравствуйте, 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, а также близлежащую документацию.
--
Справедливость выше закона. А человечность выше справедливости.
Re[3]: функции *.dll
От: dkameleon Украина http://dkameleon.com
Дата: 15.03.09 04:41
Оценка:
Здравствуйте, 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.]
Re[4]: функции *.dll
От: Abay Казахстан  
Дата: 15.03.09 08:42
Оценка:
Здравствуйте, rg45, Вы писали:

A>> Хочу уточнить, запускал ли ты мою программу, или вызывал эту функцию из своего приложения?

Запускал программу и в точно таком виде и конечно же пробовал в своем приложении. не сработало(

A>> какая операционная система?

Operating System: Microsoft Windows XP Professional (32-bit)
OS Version: 5.01.2600 Service Pack 2
с уважением, Абай
Re[3]: функции *.dll
От: randomname  
Дата: 16.03.09 08:40
Оценка: 1 (1)
Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.