Перенесено из старого форума: Пост #1 - Hunter -
Вот появились вопросы:
1) Как изDelphi можно отключить компьютер
2)Как указать папку Windiws
3)Как отослать e-mail из своей проги
4)Как сделать так, чтобы при нажатии на кнопку открывался браузер с адресом сайта
Только если пишите ответ пишите подробно, вплоть до того, что нужно писать в uses
Пост #2 - Hunter
На первый нашёл ответ:
Вставляем этот код после $R *.dfm:
Code
function MyExitWindows(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTo kenPvg ,
c btpPrevious,
rTTokenPvg,
pcbtpPreviousRe quired );
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;
Потом создаем то, что будет у нас отключать или перезагружать комп. Я создал две кнопки, для выключения и перезагрузки соответственно: Код для выключения:
Code
MyExitWindows(EWX_POWEROFF or EWX_FORCE);
Для перезагрузки:
Code
MyExitWindows(EWX_REBOOT or EWX_FORCE);
Так как я не плагиатор я напишу: Ответ на вопрос я взял отсюда.
Пост #3 - Dj_smart
Как узнать Windows и реализовать ссылки я помогу:
1. Функция GetWindows. У меня возвращает C:\Windows :
Code
function getwindows:string;
var Dir: String;
maxpath:integer;
begin
setlength(Dir, MaxPath);
GetWindowsDirectory(PChar(Dir), MaxPath);
result := String(PChar(Dir));
end;
2. Ссылки:
ShellExecute(GetDesktopWindow(), 'open', 'http://www.smt.ucoz.com/', '', '', SW_SHOWDEFAULT); кинет на мой сайт.
Тоже не плагиатор . DELPHIWORLD rulez
Пост #4 - Hunter -
Dj_smart
Я уже пробывал ShellExecutw
Выдает ошибку. Там точно ничего не надо в Uses писать?
Пост #5 - Dj_smart
Ну конечно, же. А ты не пробовал нажать F1 на слово ShellExecute?
Модуль, отвечающий за эту чушь - ShellApi