Главная страница
    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.47 MB
Время: 0.048 c
4-1081416983
Игорь
2004-04-08 13:36
2004.05.23
Помогите разобраться с Drag&Drop


8-1078568613
Pat
2004-03-06 13:23
2004.05.23
Сжатие звука по G723.1


1-1083875439
griban
2004-05-07 00:30
2004.05.23
StringGrid


11-1071528845
f3n
2003-12-16 01:54
2004.05.23
аналог VCL::TDrawGrid


3-1083074531
AlexBalex
2004-04-27 18:02
2004.05.23
Обновление указанной записи с помощью resync





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский