Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2010, 19:52   #11
Ромка-12
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 21
По умолчанию

Код маленькой программы выключения компьютера:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure button1click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.button1click(Sender: TObject);
begin
 procedure ShutdownComputer;
var
  ph: THandle;
  tp, prevst: TTokenPrivileges;
  rl: DWORD;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, ph);
  LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
  tp.PrivilegeCount := 1;
  tp.Privileges[0].Attributes := 2;
  AdjustTokenPrivileges(ph, FALSE, tp, SizeOf(prevst), prevst, rl);
  ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
end;

end.
Ромка-12 вне форума Ответить с цитированием
Старый 10.08.2010, 19:56   #12
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Делфи - это не Паскаль... исправьте:
Код:
procedure TForm1.button1click(Sender: TObject);
begin
 procedure ShutdownComputer;
var
  ph: THandle;
  tp, prevst: TTokenPrivileges;
  rl: DWORD;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, ph);
  LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
  tp.PrivilegeCount := 1;
  tp.Privileges[0].Attributes := 2;
  AdjustTokenPrivileges(ph, FALSE, tp, SizeOf(prevst), prevst, rl);
  ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
end;
НА:
Код:
procedure TForm1.button1click(Sender: TObject);
var
  ph: THandle;
  tp, prevst: TTokenPrivileges;
  rl: DWORD;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, ph);
  LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
  tp.PrivilegeCount := 1;
  tp.Privileges[0].Attributes := 2;
  AdjustTokenPrivileges(ph, FALSE, tp, SizeOf(prevst), prevst, rl);
  ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
И посмотрите разницу
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 10.08.2010, 20:11   #13
ZvEr_HaCkEr
VisualC++/DirectX
Форумчанин
 
Аватар для ZvEr_HaCkEr
 
Регистрация: 16.07.2010
Сообщений: 831
По умолчанию

Цитата:
Сообщение от Ромка-12 Посмотреть сообщение
Как сделать так чтобы при нажатие на кнопку открывалась другая программа?
вот так
Код:
uses shellapi;
shellexecute(handle,nil,'моя прога.exe',nil,nil,sw_normal);
ZvEr_HaCkEr вне форума Ответить с цитированием
Старый 10.08.2010, 20:18   #14
Ромка-12
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 21
По умолчанию

Вот например. Я пытаюсь сделать так чтобы при нажатие на кнопку компьютер выключился

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure button1click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.button1click(Sender: TObject);
begin
 procedure ShutdownComputer;
var
  ph: THandle;
  tp, prevst: TTokenPrivileges;
  rl: DWORD;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, ph);
  LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
  tp.PrivilegeCount := 1;
  tp.Privileges[0].Attributes := 2;
  AdjustTokenPrivileges(ph, FALSE, tp, SizeOf(prevst), prevst, rl);
  ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
end;

end.
Ромка-12 вне форума Ответить с цитированием
Старый 10.08.2010, 20:29   #15
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Я же Вам написал, что надо удалить лишнее
Код:
begin
 procedure ShutdownComputer;
и в конце лишний end;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 11.08.2010, 09:17   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ромка-12
Чтоб получать от ответов максимальный эффект - Раскрой глаза и ВНИМАТЕЛЬНО читай что пишут.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 07:28   #17
Ромка-12
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 21
По умолчанию

Всё. все работает. я просто не правильно применял.
А как сделать так чтобы при нажатие на кнопку на клавиатуре например "F1" вылазила справка к программе моей?
Ромка-12 вне форума Ответить с цитированием
Старый 12.08.2010, 07:52   #18
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Ромка-12 Посмотреть сообщение
Всё. все работает. я просто не правильно применял.
А как сделать так чтобы при нажатие на кнопку на клавиатуре например "F1" вылазила справка к программе моей?
Из вкладки инструментов "Standard" выбираете ActionList, кидаете его на форму, кликаете по нему 2 раза - появится окно, в нем жмете клавишу "Insert" клавиатуры, кликаете мышкой по появившемуся Action1 и в окне "Object Inspector" в свойстве "ShortCut" выбираете "F1". Затем кликаете мышкой 2 раза по Action1 и в сгенерированной процедуре пишете свой код для отображения своей справки.

На счет того, что картинка не сразу удаляется:
Если вы используете TImage, то
Код:
Image1.Picture.Bitmap :=nil;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.

Последний раз редактировалось Sparkman; 12.08.2010 в 07:56.
Sparkman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы в моем браузере новое окно страницы открывалось в моем-же браузере??? Somilya Помощь студентам 6 22.12.2009 21:56
как сделать что новое окно не открывалось,а... DimOn4Ik Общие вопросы Delphi 10 15.10.2009 09:37
КАК СДЕЛАТЬ ТАК ЧТОБЫ ВСЕ КОМПОНЕНТЫ КОТ. НА ФОРМЕ РАСТЯГИВАЛИСЬ НА ВСЁ ОКНО ПРИ РАЗВЁОТЫВАНИЕ ОКНА???? Alexij Общие вопросы Delphi 4 23.06.2008 10:44
Как сделать так,чтобы при нажатии на кнопку выполнялась процедура? Bolgarin Общие вопросы Delphi 10 03.06.2008 23:48
как сделать, чтобы в определенное время появлялось новое окно Alar Общие вопросы Delphi 0 29.10.2006 20:30