Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Чертов Скринсервер.   Найти похожие ветки 

 
studentRSU   (2004-05-12 01:09) [0]

Ситуация такая: я написал скринсервер, состоящий из двух форм (само изображение и окно настроек). Все настройки сохраняются в ini-файле. После компиляции я запускаю получившийся exe-шник, все проверяю, все работает. Однако когда я меняю расширение файла на scr и копирую его в WINDOWS\System32 начинаются проблемы. Он не читает настройки и не записывает их в ini-файл, и те настройки, которые должны быть по-умолчанию (на случай, если они отсутсвуют в ini-файле) тоже не работают. Вот код записи настроек:
var
  IniPath:string;
  FileName:string;
  IniFile: TIniFile;
begin
 GetDir(0,IniPath);
 FileName:=IniPath+"\eros.ini";
 IniFile:=TIniFile.Create(FileName);
 IniFile.WriteBool("Options","MoveMouse",CheckBox1.Checked);
 IniFile.WriteBool("Options","ClickMouse",CheckBox2.Checked);
 IniFile.WriteBool("Options","PressAnyKey",CheckBox3.Checked);
 IniFile.WriteBool("Options","PressEscKey",CheckBox4.Checked);
 IniFile.WriteBool("Options","Sound",CheckBox5.Checked);
 IniFile.WriteBool("Options","Cursor",CheckBox6.Checked);
 IniFile.WriteBool("Options","StretchPicture",CheckBox7.Checked);
 IniFile.WriteInteger("Options","Interval",SpinEdit1.Value);
 IniFile.Free;
 Close;
end;

Это код чтения настроек:

var IniPath:string;
   FileName:string;
   IniFile: TIniFile;
begin
   ScreenS.Left:=0;
   ScreenS.Top:=0;
   ScreenS.Height:=Screen.Height;
   ScreenS.Width:=Screen.Width;
   GetDir(0,IniPath);
   FileName:=IniPath+"\eros.ini";
   IniFile:=TIniFile.Create(FileName);
   MoveMouse:=IniFile.ReadBool("Options","MoveMouse",true);
   ClickMouse:=IniFile.ReadBool("Options","ClickMouse",true);
   PressAnyKey:=IniFile.ReadBool("Options","PressAnyKey",true);
   PressEscKey:=IniFile.ReadBool("Options","PressEscKey",true);
   Sound:=IniFile.ReadBool("Options","Sound",true);
   Mouse:=IniFile.ReadBool("Options","Cursor",false);
   StretchPicture:=IniFile.ReadBool("Options","StretchPicture",true);
   Interval:=IniFile.ReadInteger("Options","Interval",5);
   ID:=IniFile.ReadFloat("Registry","ID",0);
   if NOT Mouse then ShowCursor(false);
   Timer1.Interval:=Interval*1000;
   If NOT StretchPicture then PicStretch;
   if regestry(ID) then Label1.Visible:=false
   else begin Label1.Visible:=true; Label1.Left:=(Screen.Width-Label1.Width)div 2; end;
 end
end;

Переменные MoveMouse, ClickMouse, PressAnyKey и т.д. - глобальные. Совершенно непонятно для меня то, что даже если программа не может прочесть настройки из ini-файла, ведь есть же значения по-умолчанию. Скажем ClickMouse по-умолчанию равен true, однако после смены расширения у программы следующий код просто игнорируется:

procedure TScreenS.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if ClickMouse then Close;
end;

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

PS Мне советовали заменить
GetDir(0,IniPath);
   FileName:=IniPath+"\eros.ini";
   IniFile:=TIniFile.Create(FileName);
на
IniFile:=TIniFile.Create(ExtractFileDir(ParamStr(0))+"\eros.ini");
но это не помогло.


 
studentRSU   (2004-05-12 13:39) [1]

Неужели  никто не знает в чем дело? Ответьте, очень надо. Скажите хотя бы где искать.


 
stone ©   (2004-05-12 13:52) [2]

Удалено модератором


 
nejest   (2004-05-12 14:30) [3]

Попробуй не менять расширение, а написать маленькую программу .scr , которая будет запускать экзешник. Напиши что получилось.


 
ККВ ©   (2004-05-12 14:44) [4]

а чему равен IniPath?


 
WebErr ©   (2004-05-12 14:56) [5]


> Он не читает настройки и не записывает их в ini-файл

Как там с полным именем файла? :))))
Вообще-то если всё работает, но "когда переношу не работает", то ошибка скорее всего в полном имени файла.
Если Screen Saver не работает сам по себе (не учитывая чтение настроек), то дело в самом расширении Scr. В этом случае советую почитать документацию по данной теме.


 
pasha_golub ©   (2004-05-12 16:22) [6]

Удалено модератором


 
zeqfreed ©   (2004-05-12 19:10) [7]

Попробуй
IniPath := ExtractFilePath(ParamStr(0)) + "\" + IniPath;



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.105 c
14-1083091612
RealRascal
2004-04-27 22:46
2004.05.23
Размер объекта в памяти


3-1083061890
Просто Я
2004-04-27 14:31
2004.05.23
Поля


1-1084346469
DimonNew
2004-05-12 11:21
2004.05.23
RenameFile


4-1080566809
ipnet
2004-03-29 17:26
2004.05.23
Вывод через TextOut своим шрифтом


14-1083481434
XIII
2004-05-02 11:03
2004.05.23
Зацените Сайтец http://TIMUR.NeT.RU