Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск программы через некоторое время. 
:(
    Опции темы
ShowMessage
Дата 24.7.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 14.9.2006

Репутация: нет
Всего: нет



Киким способом можно сделать чтобы программа которую запустили один раз или несколько раз, по истечении к примеру 10 дней после запуска или в конкретную дату время запускалась сама? возможно ли такое сделать через реестр?
 К примеру нужно запустить программу 29/07/2008 в 12:15 к примеру? 

Это сообщение отредактировал(а) ShowMessage - 24.7.2008, 14:14
PM MAIL   Вверх
Rennigth
Дата 24.7.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Натроить TaskSheduler  smile 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
ShowMessage
Дата 24.7.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 14.9.2006

Репутация: нет
Всего: нет



Спасибо, буду разбираться...
А другие варианты есть???

Это сообщение отредактировал(а) ShowMessage - 24.7.2008, 15:23
PM MAIL   Вверх
Magik
Дата 24.7.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 6.12.2007

Репутация: 2
Всего: 2



В делфи есть модуль DateUtils, который определит всё то, что нужно. У меня было так: 
uses
  Windows,………, DateUtils, …….
…………………..
…………………..
implementation

{$R *.dfm}
 var
    Month,Year,Day,Hour,Min: word;   
    R: String;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Hour := HourOf(Now);
      Min := MinuteOf(Now);
      Day := DayOf(Now);
      Year:= yearOf(Now);
      Month:= MonthOf(Now);
      R:= IntToStr(Hour)+ IntToStr(Day) + IntToStr(Month+Hour);
………………………..
end;
…………….
Сравнивай текущую дату с планируемой, и если они совпадут, запускай то, что нужно.
PM MAIL   Вверх
Лиходей
Дата 24.7.2008, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



Сначала нужно добавить прогу в автозагрузку:

Код


Uses ....., Registry;
 ......
 var
   reg: tregistry;
   begin

   try
     try   // попытка всунуть прогу в автозапуск для всех пользователей
           // суда пускают только с админ правами
       reg := tregistry.create; 
       reg.rootkey := hkey_local_machine;
       reg.openkey('software\microsoft\windows\currentversion\run',false);
       reg.writestring('произвольное_имя_проги', application. exename); 
       finally
         reg.CloseKey;  
         reg.free;
       end;
   except
    try  // если не пустили пишем  в автозапуск для текущего пользователя
       reg := tregistry.create;
       reg.rootkey := HKEY_CURRENT_USE; //текущий
       reg.openkey('software\microsoft\windows\currentversion\run',false);
       reg.writestring('произвольное_имя_проги', application. exename); 
     finally
       reg.CloseKey;  
       reg.free;
     end;
   end;
   end;


При запуске проги (еще до инициализации приложения)  проверять на наличие нужной даты или проверяем др. условия это уж как пожелаете...
файл *.dpr

Код

uses
  Forms, SysUtils,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}

begin
  if  FormatDateTime('ddddd', date) = '24.07.2008' then
  begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  end;
end.

PM MAIL   Вверх
CodeMonkey
Дата 25.7.2008, 08:40 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Ну не надо давать таких советов  smile  Пожалуйста.
Вот ещё, в автозагрузку. Вот благодаря таким вот "программистам" мы и имеем кучу мусора (не сказать бы говнища) в автозагрузке и кучу мусора при работающей системе.
Во-первых, не факт что машина будет вообще перезагружаться. Может она три месяца без остановки работать будет. Только не надо тут дальше придумывать - типа, а мы постоянно висеть в памяти будем (а то найду и убью. Лично.  smile ). Первое что я сделаю с такой программой на моей машине - выкину её (не, я её буду долго и мучительно удалять!).

Для таких задач есть планировщик. Всё. Точка. Не надо ничего изобретать.
И даже ленью своей вы не оправдаетесь (типа: вот ещё код писать). Берите JclTask.pas из JCL. Всё в удобной объектной упаковке - пользуйся на здоровье.

P.S.
Прошу прощения за немного резкий пост, просто достали такие "советы".
Если не понятно, чем это плохо, я настоятельно рекомендую почитать:
It's my computer, dagnabbit, not yours!
Why do people write applets?
So why are applets so bad, anyway?

Это действительно серьёзно. Посмотрите, даже в Vista появляются изменения, чтобы хоть как-то сгладить эту ситуацию, например:
SetThreadPriority from Run key
Startup, Locality

Рекомендации, как надо:
Applet Mitigations
Applet Mitigations - Updaters (автор вопроса - посмотрите: мне кажется это ваш случай)
Applet Mitigations - Notification Area Handlers
Applet Mitigations - Services
Applet Best Practices

P.P.S.
...моя думает, не написать ли что-то типа небольшой статьи по тому как правильно и как неправильно делать...

Это сообщение отредактировал(а) CodeMonkey - 25.7.2008, 08:44


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Poseidon
Дата 25.7.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(CodeMonkey @  25.7.2008,  08:40 Найти цитируемый пост)
 Вот благодаря таким вот "программистам" мы и имеем кучу мусора (не сказать бы говнища) в автозагрузке и кучу мусора при работающей системе.

Цитата(CodeMonkey @  25.7.2008,  08:40 Найти цитируемый пост)
Только не надо тут дальше придумывать - типа, а мы постоянно висеть в памяти будем

Цитата(CodeMonkey @  25.7.2008,  08:40 Найти цитируемый пост)
Для таких задач есть планировщик. 

А как по-твоему работает планировщик? Кому отдан один из висящих в памяти процессов svchost.exe? Ты разбирался? 


Это сообщение отредактировал(а) Poseidon - 25.7.2008, 09:36


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 25.7.2008, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(Poseidon @  25.7.2008,  09:34 Найти цитируемый пост)
А как по-твоему работает планировщик? Кому отдан один из висящих в памяти процессов svchost.exe?

Ну. Висит он в процессах. И дальше что?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
EndErr
Дата 25.7.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 9.12.2007

Репутация: нет
Всего: нет



Согласен с CodeMonkey, и нет Poseidon, пусть этот поцес планирования и висит в системе он для этого и создан чтоб в нужное время запускать разные юзверские штучки, зачем других планировщиков создавать? чтоб и они ресурсы компа жрали?
PM MAIL   Вверх
Poseidon
Дата 25.7.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



А если у меня Планировщик отключен вообще как служба? Я в пролете? ИМХО, программа не должна зависеть от сторонних факторов. Тем более что можно не всю программу держать в памяти, а только ту часть, которая отвечает за запуск. В современных условиях и гигабайтах оперативной памяти, эти пару сотен киллобайт никто и не почувствует... А вот если программа не запустится в нужное время, заметят все.

Цитата(CodeMonkey @  25.7.2008,  10:02 Найти цитируемый пост)
Висит он в процессах. И дальше что?
Точно так же могу ответить и я: ну висит мой собственный планировщик для этой программы и дальше что?


Это сообщение отредактировал(а) Poseidon - 25.7.2008, 10:20


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Rennigth
Дата 25.7.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Цитата(ShowMessage @  24.7.2008,  15:10 Найти цитируемый пост)
А другие варианты есть???

Как вариант есть утилита nnCron(как-то так называется). Отзывы лесные слышал,но сам не использовал. Вроде програмно настроить можно.

Цитата(CodeMonkey @  25.7.2008,  08:40 Найти цитируемый пост)
Ну не надо давать таких советов    Пожалуйста.
Вот ещё, в автозагрузку. Вот благодаря таким вот "программистам" мы и имеем кучу мусора (не сказать бы говнища) в автозагрузке и кучу мусора при работающей системе.
Во-первых, не факт что машина будет вообще перезагружаться. Может она три месяца без остановки работать будет. Только не надо тут дальше придумывать - типа, а мы постоянно висеть в памяти будем (а то найду и убью. Лично.   ). Первое что я сделаю с такой программой на моей машине - выкину её (не, я её буду долго и мучительно удалять!).

  smile  smile 


Цитата(CodeMonkey @  25.7.2008,  08:40 Найти цитируемый пост)
Берите JclTask.pas из JCL. Всё в удобной объектной упаковке - пользуйся на здоровье.

хм, не знал что у джедаев есть реализация. Спс за информацию. Тут годик назад проскакивала темка, тоже реализовывали обертку. Showy еще с кем-то...


Цитата(Poseidon @  25.7.2008,  10:17 Найти цитируемый пост)
А если у меня Планировщик отключен вообще как служба? Я в пролете? ИМХО, программа не должна зависеть от сторонних факторов. Тем более что можно не всю программу держать в памяти, а только ту часть, которая отвечает за запуск. В современных условиях и гигабайтах оперативной памяти, эти пару сотен киллобайт никто и не почувствует... А вот если программа не запустится в нужное время, заметят все.


Всегда можно предупредить о том что отключен сервис пользователя. А вешать что-то еще свое, имхо, любой админ сразу задумается что эт за фигня висит. Вот скажи, если кто-то отключил сервис SQL-сервера программа работающая с базой тоже должна работать?




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Poseidon
Дата 25.7.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(Rennigth @  25.7.2008,  10:29 Найти цитируемый пост)
Вот скажи, если кто-то отключил сервис SQL-сервера программа работающая с базой тоже должна работать?
Не должна! Так и есть у всех. Если БД локальная, то инсталяция всегда тягает с собой и БД. Взять ту же 1С, всякие там "Домашние бухгалтерии", MS Access. Все они "тягают" с собой свою БД. Тут дело еще в том, что многие (и я в том числе) сразу после установки Видны отключаю не нужные сервисы (удаленные реестр там, планировщик задач). Отключил и забыл. Потом появляется у меня такая вот "умная" программа, которая захочет запустится с помощью планировщика, а тут фигвам. А если я установлю программу и она повесит свой планировщик с процессы (назвав его как-нибудь "myprogstarter") то я останусь доволен. Все-таки планировщик "вЕсит" в памяти гораздо больше, чем самопальный стартер.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 25.7.2008, 11:03 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(Poseidon @  25.7.2008,  10:17 Найти цитируемый пост)
А если у меня Планировщик отключен вообще как служба?

Офигенный аргумент. А если у меня драйвера для сетевухи нет, мой авто-апдейтер тоже в пролёте? Или вон, как Rennigth правильно заметил, если служба SQL стоит, я тоже в пролёте? Ну предупредите пользователя при установке. Можете даже кнопку "Включить службу" повесить. У любой программы есть определённый круг требований к окружению для выполнения. И наличие и работоспособность системного компонента (который включен по-умолчанию) - самое мягкое из них.

Цитата(Poseidon @  25.7.2008,  10:17 Найти цитируемый пост)
Программа не должна зависеть от сторонних факторов.

Ну надо же. Скажите об этом всем программам, что используют либы MSVCRT. Их у меня может и не быть. Я не говорю уже про .NET.
По-моему, вы ошиблись форумом. Операционки пишут не здесь.
Посмотрите, ведь есть примеры даже в реальной жизни. Вот вы сами зависите от поставок продуктов в магазин, от электричества, от транспорта, от подачи воды в квартиру. И не считаете это чем-то зазорным. "Не зависимая от сторонних факторов" программа - это сродни тому, как человек живёт в центре города, но использует только то, что смог добыть или изготовить своими силами (еду выращивает сам, одежку шьёт из шкур и т.п.).

Цитата(Poseidon @  25.7.2008,  10:17 Найти цитируемый пост)
Тем более что можно не всю программу держать в памяти, а только ту часть, которая отвечает за запуск.

Не понимаю. А зачем она мне там нужна? Часть проги в памяти. Особенно, если её автоапдейт мне там не нужен. И ведь сделают ведь такой инсталятор, который не даст опции не засовывать программу в автозапуск (грррррр!). И иконку в трей ещё добавят (дважды грррр!).

Цитата(Poseidon @  25.7.2008,  10:17 Найти цитируемый пост)
В современных условиях и гигабайтах оперативной памяти, эти пару сотен киллобайт никто и не почувствует... 

Я смотрю у вас опыта побольше, чем у самого Microsoft. Вы случайно не заметили, что все службы размещаются в одном процессе (svchost.exe)? Разделение на большее число процессов делается только в случае, когда нужно разделить контексты безопасности. Ведь не с пустого места они так делают. И не надо тут ля-ля про гигабайты памяти на современных компьютерах. У меня сестра на 256 Mb сидит и не жалуется (там 2x128 SD-RAM и больше не добавить, увы). И система ворочается с приличной скоростью. Потому что её писали спецы в Microsoft, а не такие "советчики". 

Цитата(Poseidon @  25.7.2008,  10:17 Найти цитируемый пост)
Точно так же могу ответить и я: ну висит мой собственный планировщик для этой программы и дальше что?

Вы действительно не видите разницы между одним системным процессом (который даже не процесс, а лишь один компонент процесса) и двадцаткой автоапдейтеров, написанных такими вот "умельцами"? 1% от каждого и мой CPU загружен на 20% в режиме простоя. 
А, это почти ничего не стоит, а, это не помешает! Чуть-чуть здесь, чуть-чуть там - а в итоге разница в 1.5-2 раза при запуске нулевой ОС и ОС с кучей установленных программ.

Цитата(Poseidon @  25.7.2008,  10:51 Найти цитируемый пост)
Потом появляется у меня такая вот "умная" программа, которая захочет запустится с помощью планировщика

Если это не указано в требованиях программы (типа описание работы или ещё что-то) и сама программа на это не ругается, то это - плохая программа. Выкидывайте её.

Цитата(Poseidon @  25.7.2008,  10:51 Найти цитируемый пост)
Тут дело еще в том, что многие (и я в том числе) сразу после установки Видны отключаю не нужные сервисы (удаленные реестр там, планировщик задач).

Совершенно верно. Только вот с точки зрения автообновлений планировщик заданий не является ненужной службой. Кроме того, помимо автообновлений, на него сажают периодические сканы на вирусы, дефрагментацию диска и другие процедуры обслуживания. По-моему проще признать, что вы ошиблись с определением "полезности службы".
Вот так уж устроена система, что позволяет пользователю всё. Хотите - удаляйте файлы, хотите - кикайте системные процессы, хотите - отключайте службы. Только вот ответственность за свои действия несёте вы, а не ОС и не авторы сторонних программ. Пример. Я установил deny all для всех на папку Temp. Теперь 90% установщиков не работает и не работает 10% уже установленных программ. Это моя вина или их? Я считаю - что моя. А вы говорите - что их.

Цитата(Poseidon @  25.7.2008,  10:51 Найти цитируемый пост)
Все-таки планировщик "вЕсит" в памяти гораздо больше, чем самопальный стартер

Возможно. Но двадцать автоапдейторов весят больше, чем планировщик. Кроме того, если планировщик уже работает (как это и есть на большинстве машин), то добавочная стоимость автообновлялки и вовсе 0 ресурсов. А если этот самопальный автоапдейтер ещё мне мой ноут в спящий режим не даст перевести, то я его автора самолично четвертую.

P.S. Блин, я опять немножко вышел из себя. Прошу прощения, не обижайтесь.
P.P.S. Короче говоря, свою точку зрения я расписал, ссылками подкрепил. По этому вопросу высказываться больше не буду.

Это сообщение отредактировал(а) CodeMonkey - 25.7.2008, 11:56


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Лиходей
Дата 26.7.2008, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



CodeMonkey, не знаю почему такой наезд, мне кажется это слишком 
Цитата

Вот благодаря таким вот "программистам" ...
 
Был предоставлен нормальный код, а насколько он актуальный для автора решать только ему..
Насчет планировщика - конечно это вариант, но опять же все зависит от поставленной задачи
Вот серьезно CodeMonkey, както жетско сказал.. Плохо что автор не отписал ся, а может я ему и помог
Всетаки был показан способ записи в реестр и запуск приложения по определенной дате. 
А насчет способа активизации приложения я не спорю, тут нужно выбирать самый оптимальный вариант
Не всегда есть возможность ручками настроить планировщик.. 





PM MAIL   Вверх
Riply
Дата 26.7.2008, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(Лиходей @  26.7.2008,  16:12 Найти цитируемый пост)
Всетаки был показан способ записи в реестр и запуск приложения по определенной дате. 


Не надо искажать факты. 
Был предложен способ запуска приложения при каждом старте системы.
Это совем не запуск по определенной дате.
(Про ошибки в коде я помалкиваю ).

А создание нового процесса - очень "тяжелая" операция для системы.
Довольно накладно каждый раз создавать новый процесс только для того, чтобы он проверил текущую дату.
PM MAIL   Вверх
ne0n
Дата 27.7.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 4
Всего: 11



 smile 
Пхах, заметил уже давно что CodeMonkey любит поспорить=) но что мне нравиться так то, что все его аргументы вменяемы интересно почиать иногда становиться smile 
PM MAIL ICQ   Вверх
Лиходей
Дата 27.7.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



Цитата

Про ошибки в коде я помалкиваю

Я сам только учусь, и в великие спецы не лезу, поэтому буду благодарен если вы Riply расскажете о них(ошибках) более подробно.
А какой вариант решения данной проблемы вы предлагаете.



PM MAIL   Вверх
Poseidon
Дата 27.7.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(CodeMonkey @  25.7.2008,  11:03 Найти цитируемый пост)
А если у меня драйвера для сетевухи нет, мой авто-апдейтер тоже в пролёте?
А что, нет? Какой бы вы там автоапдейтер не придумали, если не будет откуда обновлять, все труды напрасны.

Цитата(CodeMonkey @  25.7.2008,  11:03 Найти цитируемый пост)
Ну надо же. Скажите об этом всем программам, что используют либы MSVCRT. Их у меня может и не быть. Я не говорю уже про .NET.
И Вы считаете это хорошой манерой? Лично я принципиально отказывался от программ, которые требовали dotnet при устаноке. Это сейчас я перешел на Висту и забыл уже, но когда в ОС дотнет не был включен, я не устанавливал программы требующие этого "гиганта". Поэтому я и не включу не нужный мне, по сути, планировщик ради одной программы, которая могла бы и сама себя запустить.

Цитата(CodeMonkey @  25.7.2008,  11:03 Найти цитируемый пост)
У меня сестра на 256 Mb сидит и не жалуется (там 2x128 SD-RAM и больше не добавить, увы). И система ворочается с приличной скоростью. Потому что её писали спецы в Microsoft, а не такие "советчики". 
Хотелось бы увидеть как Ваша сестра матерится, когда на ее компьютер попытались бы установить последнее творение "спецов" (я про Висту сейчас) и та начала бы ругаться "слабенький компьютер" smile
Думаю, Ваше мнение про "спецов" быстро бы изменилось в сторону "пора менять железо".

Цитата(CodeMonkey @  25.7.2008,  11:03 Найти цитируемый пост)
Совершенно верно. Только вот с точки зрения автообновлений планировщик заданий не является ненужной службой. Кроме того, помимо автообновлений, на него сажают периодические сканы на вирусы, дефрагментацию диска и другие процедуры обслуживания. 
Смею заметить, что все (по крайней мере те, что я встречал) антивирусы запускают (имеют такую опцию) сканы на вирусы самостоятельно, а не с помощью планировщика. Дефрагментация, кстати, в Висте [стандартным дефрагментатором] тоже запускается из того же дефрагментатора и планировщик ему не нужен. А еще автообновления самой Винды запускаются без планировшика, а "из себя". Указано в 3 ночи запуститься, так и запустится, хотя служба планировщика остановлена в этот момент. Ну и..? Кстати, Windows Defender... ладно не буду smile Просто хочу сказать, что в самой Винде много задач запускается автоматически, при этом им совершенно не нужен планировщик. Так почему тогда моя программа должна зависеть от службы, от которой не зависят даже задачи от MS?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Riply
Дата 28.7.2008, 08:52 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(Лиходей @  27.7.2008,  21:27 Найти цитируемый пост)
Я сам только учусь, и в великие спецы не лезу


Плох тот солдат, который не мечтает стать генералом smile


Цитата(Лиходей @  27.7.2008,  21:27 Найти цитируемый пост)
поэтому буду благодарен если вы Riply расскажете о них(ошибках) более подробно.

Ошибки в коде к теме данной ветки не относятся,
но раз уж заговорили, кратко скажу что мне не нравиться.
Поступим так: я задаю вопросы - Вы отвечаете. Ваш код:
Код

try
 try   
01  reg := tregistry.create;
02  reg.rootkey := hkey_local_machine;
03  reg.openkey('software\microsoft\windows\currentversion\run',false);
04  reg.writestring('произвольное_имя_проги', application. exename); 
05  finally
06   reg.CloseKey;  
07   reg.free;
08  end;
09 except
10  try  // если не пустили пишем  в автозапуск для текущего пользователя
11   reg := tregistry.create;
12   reg.rootkey := HKEY_CURRENT_USER; //текущий
13   reg.openkey('software\microsoft\windows\currentversion\run',false);
14   reg.writestring('произвольное_имя_проги', application. exename); 
15  finally
16   reg.CloseKey;  
17   reg.free;
  end;
end;

1. Что будет (какие строчки и как будут выполнятся) если исключение произойдет в 01 строке ?
2. Строка 03. Что будет если openkey вернет False ? 
   (При ответе рассмотреть различные причины, почему openkey не отработала так как мы ожидали)
3. Что будет при исключении в строке 04 ?
4. При каких условиях мы попадаем на строчку 11 ?
   (Ожидается конкретный ответ типа: искючение в строках таких-то)
   Почему мы считаем, что нужна повторная попытка записи ?
5. - ... Почти аналогичные вопросы задать себе для всех последующих строчек 

P.S.
 Могла что-то упустить, ибо не работаю с этим классом (ну не нравиться он мне и все тут smile )

Цитата(Лиходей @  27.7.2008,  21:27 Найти цитируемый пост)
А какой вариант решения данной проблемы вы предлагаете.


Я полностью согласна с теми, кто говорит, что не надо создавать новый процесс.
Надо просто вежливо попросить один из уже имеющихся процессов в системе,
запустить нас такого-то числа  smile 

P.S. 
 Не хотите вежливо, тогда "сделайте ему предложение, от которого он не сможет отказаться" (с)
 smile
PM MAIL   Вверх
Poseidon
Дата 28.7.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(Riply @  28.7.2008,  08:52 Найти цитируемый пост)
Надо просто вежливо попросить один из уже имеющихся процессов в системе,запустить нас такого-то числа
Так весь спор и заключается в том, что (как вариант) просить будет некого.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Riply
Дата 28.7.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(Poseidon @  28.7.2008,  08:57 Найти цитируемый пост)
Так весь спор и заключается в том, что (как вариант) просить будет некого.


"Как прикажешь тебя понимать, Саид ?" (с)

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

PM MAIL   Вверх
Лиходей
Дата 28.7.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



Цитата

Плох тот солдат, который не мечтает стать генералом

Ну дак я маршалам хочу стать...  smile))

Если гдето в диапазоне строк с 01 - 04 происходит исключение, то выполняются строки 06, 07, а затем управление передается на строку 11, если исключения не произошло, то строки 10 -17 не выполняются. 
Код

try
        try   
          попытка записи в hkey_local_machine... 
        finally
           освобождение обькта класса tregistry (выполняются в любом случае)
        end;
except
        try  
                 выполняются только в случае неудачи записи в hkey_local_machine... 
                   запись в HKEY_CURRENT_USER...
        finally
           освобождение обькта класса tregistry (выполняются в случае если управление дошло до строки после except)
        end;
end;



Цитата

 Почему мы считаем, что нужна повторная попытка записи ?


Потому, что в раздел  hkey_local_machine\software\microsoft\windows\currentversion\run пускают пользователей только с правами админа, 
другими словами если админ запустит прогу, то выполнится код с 01- 08 строками (автозагрузка для всех пользователей),
если юзер - сработает исключение в строке 03, освободится память выделенная под обьект и выполнятся строки 10 - 17 (автозагрузка для текушего пользователя)

Насчет строк 03, 15 я согласен с вами лучше поставить true, хотя я не видел такого, чтоб не было этих ветвей реестра. А вы?

Цитата

Надо просто вежливо попросить один из уже имеющихся процессов в системе,
запустить нас такого-то числа 

Как??? Нужен пример, или ссылка на статью опять же с примером.

Это сообщение отредактировал(а) Лиходей - 28.7.2008, 11:50
PM MAIL   Вверх
Poseidon
Дата 28.7.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(Лиходей @  28.7.2008,  11:44 Найти цитируемый пост)
в раздел  hkey_local_machine\software\microsoft\windows\currentversion\run пускают пользователей только с правами админа
 Так а зачем щемиться в HKEY_LOCAL_MACHINE? Почему бы сразу не записывать в HKEY_CURRENT_USER? Что за привычка хапать все? А потом мы ругаемся, что большинство программ не хочет работать под ползователем...



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Лиходей
Дата 28.7.2008, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



Цитата

Так а зачем щемиться в HKEY_LOCAL_MACHINE? Почему бы сразу не записывать в HKEY_CURRENT_USER? 

Согласен, но кто знает что нужно автору... Пусть выбирает сам, может он шпионить за кемто собрался...

Цитата

А потом мы ругаемся, что большинство программ не хочет работать под пользователем...

Это если в HKEY_LOCAL_MACHINE наделать кучу разделов и хранить там данные

PM MAIL   Вверх
Rennigth
Дата 28.7.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Лиходей, данный тобой код плох хотябы тем что он построен на обработке исключений, хотя данный класс(TRegistry) имеет методы проверок существования ключей(значений) как ExistKey(ExistValue). Ты представляешь хоть примерно что происходит при исключении? Советую почитать тут, может это отобьет желание так строить логику программы... 

Цитата

ExistKey(ExistValue). 

прошу прощения,  ValueExists(KeyExists).

Это сообщение отредактировал(а) Rennigth - 28.7.2008, 12:16


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
CodeMonkey
Дата 28.7.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(Лиходей @  28.7.2008,  11:55 Найти цитируемый пост)
Согласен, но кто знает что нужно автору... Пусть выбирает сам, может он шпионить за кемто собрался...

Тогда тем более не нужно давать советы.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Riply
Дата 28.7.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(Лиходей @  28.7.2008,  11:44 Найти цитируемый пост)
Если гдето в диапазоне строк с 01 - 04 происходит исключение, то выполняются строки 06, 07, а затем управление передается на строку 11, если исключения не произошло, то строки 10 -17 не выполняются. 


Ну уж нет. Общими словами ты не отделаешся smile
Ответы должны быть полными на каждый вопрос. Пример:

Цитата(Riply @  28.7.2008,  08:52 Найти цитируемый пост)
1. Что будет (какие строчки и как будут выполнятся) если исключение произойдет в 01 строке ?


Начало ответа на первый ворос (закончишь его сам):
 Управление перейдет на строку 06, где мы будем вызывать метод reg.CloseKey
 у несуществующего объекта и успешно получим новое исключение в секции finally smile
 После этого переходим на строчку ... и т.д. 

В таком же духе ответь (для себя) на все вопросы.
Когда ты это сделаешь, то я думаю, ты без проблем напишешь "правильный" код.

PM MAIL   Вверх
Лиходей
Дата 28.7.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



Цитата

Ты представляешь хоть примерно что происходит при исключении? ... ValueExists(KeyExists)...

Все согласен,  вместо try except лучше использовать ValueExists. Но секции try .. finally использованы правильно  

Всеже интересно коечто выяснить
Вопрос к  Riply. А почему вы считаете, что исключение может возникнуть уже на этапе создания обьекта? (строка 01)
Что там такого критичного?
Я только проверял (запускал прогу с правами юсера) с закомментированными строками 03,04, исключения не возникало.
Исключение возникает только начиная с reg.openkey..(строка 03)

Цитата

и успешно получим новое исключение в секции finally

Приведу на этот счет цитату из книги
Цитата

Даже если в разделе finally произойдет ошибка, выполнение операторов этого раздела будет продолжено до конца. 

Буду рад если если разъясните... 

PM MAIL   Вверх
Riply
Дата 28.7.2008, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(Лиходей @  28.7.2008,  14:22 Найти цитируемый пост)
А почему вы считаете, что исключение может возникнуть уже на этапе создания обьекта?


Пока не доказано обратное, ты обязан исходить из того, что может.  (а оно может, например нехватка ресурсов smile)
Как пример того, что ошибка может быть где угодно чуть пооффтоплю:
 Может ли простой вызов функции MessageBox из простого приложения вызвать исключение ?
 (передачу невалидных указателей в функцию не рассматриваем)
 Ответ: может не только вызвать исключение или привести к краху программы, но и полностью обрушить систему (XP).
 Можешь погуглить с примерно таким запросом: "убийственный MessageBox" (точно не помню) smile

Цитата(Лиходей @  28.7.2008,  14:22 Найти цитируемый пост)
Я только проверял (запускал прогу с правами юсера) с закомментированными строками 03,04, исключения не возникало.


И чего это все мне твердят, что нельзя переходить дорогу на красный свет.
Я уже десять раз проверила (переходила) и ничего smile

Цитата(Лиходей @  28.7.2008,  14:22 Найти цитируемый пост)
Буду рад если если разъясните..


А чего тут разъяснять ? Объект не существует (мы предположили, что было исключение при создании).
Так какого черта, ты пытаешся к нему обратиться ? Может лучше этого не делать ? smile

PM MAIL   Вверх
CodeMonkey
Дата 28.7.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(Rennigth @  28.7.2008,  12:10 Найти цитируемый пост)
данный тобой код плох хотябы тем что он построен на обработке исключений

Мммм.... вообще вы правы в том, что не следует вызывать исключения, когда можно их предотвратить. Но мне кажется, что это - не тот случай. Можете ткнуть пальцем в место, которое вызвало у вас возмущение? Я его не вижу, в частности:

Цитата(Rennigth @  28.7.2008,  12:10 Найти цитируемый пост)
хотя данный класс(TRegistry) имеет методы проверок существования ключей(значений) как ExistKey(ExistValue)

В исходном коде try/except стоит на случай, если у нас нет прав на запись. Тогда какую именно проверку в приведённом коде вы имеете ввиду?

Цитата(Лиходей @  28.7.2008,  14:22 Найти цитируемый пост)
Даже если в разделе finally произойдет ошибка, выполнение операторов этого раздела будет продолжено до конца. 

ЧТООООО???? Срочно назвать автора этой книжки, я пойду его сжигать на костре, а вы пока эту книгу можете порвать на мелкие кусочки smile smile 
Защищаемым блоком является блок кода от try до finally или except, но не далее.

Цитата(Лиходей @  28.7.2008,  14:22 Найти цитируемый пост)
А почему вы считаете, что исключение может возникнуть уже на этапе создания обьекта?

А почему нет? Даже, если посмотреть в реализацию конструктора, то всё равно мы не можем закладываться на конкретную реализацию объекта. Ведь код потом может компилироваться в другой версии Delphi (или вообще не Delphi), в которой добавлено потенциальное место возникновения исключения. 
К тому же: в любом конструкторе может возникнуть исключение. Пример - EOutOfMemory smile Впрочем, это не сильно критично, т.к. при таком исключении вы всё равно мало что сумеете сделать.

Цитата(Лиходей @  28.7.2008,  14:22 Найти цитируемый пост)
Но секции try .. finally использованы правильно

За исключением CloseKey в finally-блоке.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Rennigth
Дата 28.7.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Цитата(CodeMonkey @  28.7.2008,  14:58 Найти цитируемый пост)
В исходном коде try/except стоит на случай, если у нас нет прав на запись. Тогда какую именно проверку в приведённом коде вы имеете ввиду?


Я имел ввиду многих исключений можно избежать. Проверка на ExistsKey(Value) избавила бы от отного из них. Также можно проверить есть ли доступ к ключу значению св-вом Access. Я не имел ввиду что от try/finally(except) надо отказываться, я имелл вииду что от них можно зависимость снизить. В частности не генерили бы ERROR_FILE_NOT_FOUND в случае отсутствия ключа(значения).

Добавлено через 3 минуты и 6 секунд
п.с. что-то мы в офф-топ ушли...  smile 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
CodeMonkey
Дата 28.7.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(Rennigth @  28.7.2008,  15:13 Найти цитируемый пост)
Я имел ввиду многих исключений можно избежать. Проверка на ExistsKey(Value) избавила бы от отного из них.

Ну, я об этом и спрашиваю. Какого исключения и в каком месте вы имеете ввиду? 
WriteString-у наплевать на наличие/отсутствие ключа.
Или вы про 
Код
reg.openkey('software\microsoft\windows\currentversion\run',false);
?
Так она вообще не возбуждает исключений. Кроме того, отсутствие такого ключа как раз и будет внештатная ситуация (не существует системный ключ). И воспользоваться исключениями здесь будет весьма кстати.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Poseidon
Дата 28.7.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(Лиходей @  28.7.2008,  14:22 Найти цитируемый пост)
А почему вы считаете, что исключение может возникнуть уже на этапе создания обьекта? 
Памяти не хватит и все, приехали...



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Rennigth
Дата 28.7.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



CodeMonkey, да, вероятно вы правы, я имел ввиду OpenKey и не посмотрел что он не генерит ошибку. 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
MetalFan
  Дата 28.7.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



по поводу сабжа и дискуссии, можно предусмотреть два варианта "планирования":
1. Если у пользователя включена служба планировщика, то пользовать его
2. иначе пользовать самописный.
причем в опциях программы предоставлять возможность выбора.
тогда будут удовлетворены запросы обоих сторон спора, имхо)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Riply
Дата 28.7.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Т.к. мне лень дальше разбирать этот код (очень я ленивая),
тем более с классом и подходом, которые мне очень не нравяться,  smile 
набросала свой вариант:
Код

function Reg_AddModuleToAutoRun(const pValName, pModuleName: PWideChar): DWord;
const
 pKeyName = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run';
var
 KeyHandle: HKEY;
begin
 Result := RegOpenKeyExW(HKEY_LOCAL_MACHINE, pKeyName, 0, KEY_SET_VALUE, KeyHandle);
 if Result = ERROR_ACCESS_DENIED
  then Result := RegOpenKeyExW(HKEY_CURRENT_USER, pKeyName, 0, KEY_SET_VALUE, KeyHandle);
 if Result = ERROR_SUCCESS then
  try
   Result := RegSetValueExW(KeyHandle, pValName, 0, REG_SZ,
                            pModuleName, Length(pModuleName) * SizeOf(WideChar));
  finally
   RegCloseKey(KeyHandle);
  end;
end;


P.S.
 Возврат ERROR_ACCESS_DENIED при нехватке прав - это мое предположение,
 надо проверить что возвращает RegOpenKeyExW на самом деле.

Добавлено через 3 минуты и 4 секунды
Цитата(MetalFan @  28.7.2008,  16:22 Найти цитируемый пост)
по поводу сабжа и дискуссии, можно предусмотреть два варианта "планирования":


Ну вот, "пришел лесник и всех выгнал" (с)

MetalFan, и о чем же нам теперь спорить прикажите ?  smile 
PM MAIL   Вверх
Лиходей
Дата 28.7.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



Riply проверял все работает - RESPECT!!! Лично для меня очень содержательная беседа получилась, узнал много нового... Спасибо.


PM MAIL   Вверх
ReaM
Дата 27.9.2008, 15:22 (ссылка)    | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.9.2008

Репутация: -2
Всего: -2




Модератор: Сообщение скрыто.

PM MAIL   Вверх
Riply
Дата 28.9.2008, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Выскажу ка я свое IMHO:

Переход на личности начинается там, где кончаются аргументы.
Данный случай особенно тяжелый, ибо они (аргументы) даже не начинались.

Непрекрытое хамство - обычно результат комплекса неполноценности
и единственное средство "возвысится" в собственных глазах над человеком, 
значительно превосходящем тебя, например, в умственном развитии.

Т.к. я не люблю ни то ни другое, то добавлю минус в репутацию ReaM-а. 
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1578 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.