Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 212»
Модератор форума: stalker, Ekz 
Форум » Все о Delphi » Начинающим » Убрать программу из автозагрузки? (Регистр)
Убрать программу из автозагрузки?
russerДата: Среда, 21.01.2009, 18:35 | Сообщение # 1
Ранг 1
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
Подскажитье как убрать программу из авто загрузки ?
На примере mail.ru Агента?
То есть мне надо чтобы при запуске моей программы майл агент сразу убирался из автозагрузки

и еще один вопрос
Как сделать так чтобы при запуски моя программа сразу капировалась в определенную дерикторию например програм файлс?

Сообщение отредактировал russer - Среда, 21.01.2009, 18:40
 
AdminДата: Среда, 21.01.2009, 19:00 | Сообщение # 2
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
/publ/5-1-0-13 - как добавить и убрать свою программу из автозапуска.
А чтобы убрать майл агент нужно узнать куда он себя размещает (100% в реестре). Разобравшись с примером (ссылка чуть выше) не будет никаких проблем убрать и майл.

/publ/13-1-0-138 - как скопировать программе саму себя.

p.s. учитесь пользоваться поиском. Он не зря на сайте есть.


Не оказываю помощь через личные сообщения и ICQ
 
russerДата: Четверг, 22.01.2009, 16:33 | Сообщение # 3
Ранг 1
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', false);
Reg.DeleteValue(NameParam);
Reg.Free;
Я так понел что это чтобы удалить прогу из регистра но тогда другой вопрос что имненно ставить за место NameParam путь в регистре имя или чтото еще ?*
 
AdminДата: Четверг, 22.01.2009, 16:40 | Сообщение # 4
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Не регистр а реестр.
NameParam - входной параметр в моей процедуре. Это имя записи в реестре (ну какбы файл в директории). Просто вместо NameParam напиши чтото вроде этого 'имя'.


Не оказываю помощь через личные сообщения и ICQ
 
russerДата: Четверг, 22.01.2009, 16:50 | Сообщение # 5
Ранг 1
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
Элемент самая первая строчка и кстати файл тоже не капируеться

Добавлено (22.01.2009, 13:50)
---------------------------------------------
Если н5е сложна выложи пожалуйста пример простей шей программы от начала и до конца с копированием файла

 
AdminДата: Четверг, 22.01.2009, 16:51 | Сообщение # 6
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Ничего не понял. Ну вот в regedit зашел по нужной ветке. Справа список записей. вот имя этой записи (какую тебе нада) и пишеш. А копирование чего не работает? У меня все работает. Как делаеш?

В примере вместо mail пишеш имя записи в реестре которую удалить нужно. У меня нету майл агента.

Прикрепления: file.rar(5Kb)


Не оказываю помощь через личные сообщения и ICQ
 
russerДата: Четверг, 22.01.2009, 16:54 | Сообщение # 7
Ранг 1
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
после
implementation
вставляю
function CopyFile(lpExistingFileName, lpNewFileName: PChar;
bFailIfExists: BOOL):BOOL;
begin
end;

а патом
procedure TMail.FormCreate(Sender: TObject);
begin

CopyFile(PChar(ParamStr(0)), PChar('C:\'+ExtractFileName(ParamStr(0))), True);
end;

 
AdminДата: Четверг, 22.01.2009, 16:57 | Сообщение # 8
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
ууу а я думал я понятно пишу статьи. :))
в 6 посте пример скачай. Все проще чем ты думаеш.
function CopyFile(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL):BOOL; - это описание, какбы заголовок функции. ты получается создал собственную функцию с таким же именем. Но ничего не выполняеш в функции. Вызываеш эту функцию, которая ничего и не делает.

Погляди я статью маленько подправил - может быть так станет понятнее?


Не оказываю помощь через личные сообщения и ICQ
 
russerДата: Четверг, 22.01.2009, 17:02 | Сообщение # 9
Ранг 1
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
Тоесть полностью функция будет выгедить вот так
function CopyFile(PChar(ParamStr(0)), PChar('C:\'+ExtractFileName(ParamStr(0))), True);
Тогда вопрос как ееё вызвать ?
 
AdminДата: Четверг, 22.01.2009, 17:18 | Сообщение # 10
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Да не нужно ее писать. Она уже написана в другом модуле. Просто вызываете в любом нужном месте.
Code
CopyFile(PChar(ParamStr(0)), PChar('C:\'+ExtractFileName(ParamStr(0))), True);

Посмотри пример и все поймеш. А еще прочти мой учебник. Я считаю писал все понятно и примитивнее некуда.


Не оказываю помощь через личные сообщения и ICQ
 
russerДата: Четверг, 22.01.2009, 17:21 | Сообщение # 11
Ранг 1
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
Спасибо большое чето я ступил я разабрался
ну и последний вопрос как переименовать файл из указаной деректории тоесть к примеру перименавать опера в експлолер если файл лежит на диске с
Меня всегдамучил вопрос можно ли убрать имконки сверху програмы ?
 
MegaMenДата: Четверг, 22.01.2009, 17:35 | Сообщение # 12
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
ёмайо, вот это люди..

Добавление в автозапуск на один раз:

Code
procedure DoAppToRunOnce(RunName, AppName: string);
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True);
      WriteString(RunName, AppName);
      CloseKey;
      Free;
    end;
  end;

Проверка, есть ли в реестре запись об автозапуске на 1 раз:

Code
function IsAppInRunOnce(RunName: string): Boolean;
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', False);
      Result := ValueExists(RunName);
      CloseKey;
      Free;
    end;
  end;

Удаление из автозапуска на 1 раз:

Code
procedure DelAppFromRunOnce(RunName: string);
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True);
      if ValueExists(RunName) then DeleteValue(RunName);
      CloseKey;
      Free;
    end;
  end;

Что делает это "на 1 раз"? Оно добавляет в реестр запись, после перезагрузки компьютера запись сама удаляется, и программа запуститься только 1 раз...

А вот на обычный автозапуск (постоянный):

Добавление в автозапуск:

Code
procedure DoAppToRun(RunName, AppName: string);
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
      WriteString(RunName, AppName);
      CloseKey;
      Free;
    end;
  end;

проверка:

Code
function IsAppInRun(RunName: string): Boolean;
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
      Result := ValueExists(RunName);
      CloseKey;
      Free;
    end;
  end;

и удаление:

Code
procedure DelAppFromRun(RunName: string);
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
      if ValueExists(RunName) then DeleteValue(RunName);
      CloseKey;
      Free;
    end;
  end;

всё очень просто...

А вот пример:

Code
uses ... Registry;

...

procedure DoAppToRun(RunName, AppName: string);
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
      WriteString(RunName, AppName);
      CloseKey;
      Free;
    end;
  end;

function IsAppInRun(RunName: string): Boolean;
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
      Result := ValueExists(RunName);
      CloseKey;
      Free;
    end;
  end;

procedure DelAppFromRun(RunName: string);
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create;
    with Reg do
    begin
      RootKey := HKEY_CURRENT USER;
      OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
      if ValueExists(RunName) then DeleteValue(RunName);
      CloseKey;
      Free;
    end;
  end;

procedure TForm1.Button1Click(Sender: TObject);
  var
    Reg: TRegistry;

begin
  if IsAppInRun('Program') then
  ShowMessage('Программа уже в автозапуске.')
  else
  DoAppToRun('Program', ExtractFilePath(ParamStr(0))+ExtractFileName(Application.ExeName) {Путь к программе});
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if IsAppInRun('Program') then
  begin
  DelAppFromRun('Program');
  ShowMessage('Программа успешно удалена из автозапуска.');
  end
  else
  ShowMessage('Программы нет в автозапуске!!!');
end;

Кнопка 1: добавляет в автозапуск.
Кнопка 2: Удаляет из автозапуска.

Установлена проверка.

Фуф, написал.. smile

Добавлено (22.01.2009, 14:35)
---------------------------------------------

Quote (russer)
Меня всегдамучил вопрос можно ли убрать имконки сверху програмы ?

Можно

свойство BorderIcons у формы.

Quote (russer)
ну и последний вопрос как переименовать файл из указаной деректории тоесть к примеру перименавать опера в експлолер если файл лежит на диске с

Code
if fileexists('путь/староеимя.формат') then
renamefile('путь/староеимя.формат','путь/новоеимя.формат')
else
ShowMessage('файл не найден');


Чтобы добиться цели, надо прежде всего её добиваться.
 
AdminДата: Четверг, 22.01.2009, 17:43 | Сообщение # 13
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Code
RenameFile('c:\1.txt', 'c:\2');

нужно будет это в статьи написать. Чтобы через поисковик можно было найти!


Не оказываю помощь через личные сообщения и ICQ
 
MegaMenДата: Четверг, 22.01.2009, 17:48 | Сообщение # 14
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
Quote (Admin)
RenameFile('c:\1.txt', 'c:\2');

расширение нужно указывать, он иначе снимет расширение файла..

Code
RenameFile('c:\1.txt', 'c:\2.txt');


Чтобы добиться цели, надо прежде всего её добиваться.
 
AdminДата: Четверг, 22.01.2009, 17:55 | Сообщение # 15
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
ну переименовал в другой файл. В имя же входит расширение. Просто быстренько написал и не усмотрел. smile

Не оказываю помощь через личные сообщения и ICQ
 
Форум » Все о Delphi » Начинающим » Убрать программу из автозагрузки? (Регистр)
Страница 1 из 212»
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz