Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2009, 18:11   #1
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию Заставка

Я пишу небольшую програмку.

Сейчас отрабатываю ввод серийного номера.

Сделал первоначальное сплэш окно с логотипом, которое, если пользователь не успел ввести серийник - предоставляет ему такую возможность.

Если всё правильно - програмка сохраняет сериал в реестре - сплеш закрывается и открывается основное окошко программы.

Код:
procedure TForm2.FormShow(Sender: TObject);
var
RegSer: TReginiFile;
Serial: String;

begin
Form2.ClientHeight:=91;
RegSer:=TReginiFile.Create;
RegSer.RootKey:=HKEY_LOCAL_MACHINE;
RegSer.OpenKey('Software',true);
Serial := RegSer.ReadString('ProgName','Serial Number','0');
RegSer.Free;
if serial<>'1234-1234-1234-1234' then
begin
  Form2.ClientHeight:=200;
end
else
begin
  Sleep(2000);
  Form2.Close;
end;
end;
Так вот - когда серийный номер уже в реестре есть - по идее - сплэш окно с логотипом (уже без инструментов ввода серийника, ибо он уже в реестре есть) висит 2 секунды и закрывается, давая возможность программе продолжить.

Но окошко висит явно не 2 секунды и даже не 5, не собираясь закрываться.

В чём проблема?
Ark вне форума Ответить с цитированием
Старый 19.08.2009, 19:24   #2
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию .

Да. И основное окно (при ручном закрытии сплеша) больше нельзя двигать по экрану.
Ark вне форума Ответить с цитированием
Старый 19.08.2009, 19:32   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
if serial<>'1234-1234-1234-1234' then
begin
Form2.ClientHeight:=200;
Получается, если есть серийник в реестре то окно будет висеть, а если нет, то через 2 сек закроется, ты перепутал условия.

P.S. Есть кнопка правка, не пости подряд.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 19.08.2009, 20:31   #4
Mr.Qwerty
Что? Где? Когда?
Форумчанин
 
Аватар для Mr.Qwerty
 
Регистрация: 14.07.2009
Сообщений: 220
По умолчанию

Давно всем известный способ, я б посоветовал бы сделать посовременнее, вот краткий алгоритм работы:
1)Программа выводит случайно сгенерированный код пользователю;
2)Он в свою очередь обращается к вам за получением так называемого пин-кода, который вы генерируете отдельно написанной программкой, причем последний алгоритм не должен быть явно открытым в продукте распространения.
3)Юзерок платит вам денюшки, а вы ему даете код, уля-ля все рады и счастливы...
Хз, потрудиться прийдется хорошенько, но это того уверяю стоит.
Удачи)!+
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Mr.Qwerty вне форума Ответить с цитированием
Старый 19.08.2009, 20:34   #5
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

Ничего я не перепутал.

Код с комменариями:
Код:
// В переменную "Serial" записывается значение из реестра
// Если такового не наблюдается - serial = '0'
Serial := RegSer.ReadString('ProgName','Serial Number','0');

RegSer.Free;

// Если serial не равняется истинному серийному номеру
if serial<>'1234-1234-1234-1234' then
begin

// То окошко вытягивается обнажая инструменты для ввода.
  Form2.ClientHeight:=200;
end

// Если же serial равен истинному серийному номеру
else
begin

// Окошко спит 2 секунды и закрывается
  Sleep(2000);
  Form2.Close;
end;
Mr. Qwerty
Я думал об этом. Если при каждом запуске программы, в её неактивизированном состоянии!!!!!!!!!, генерится случайный код - не будет же юзер держать программу открытой до тех пор, пока ему на почту не придёт серийный номер именно для данного кода авторизации. Это значит, что код авторизации надо записывать в реестр.

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

Короче - не в этом суть. С защитой я как-бы определился.

Мне моя проблема нозит =)

Последний раз редактировалось Ark; 19.08.2009 в 20:42.
Ark вне форума Ответить с цитированием
Старый 20.08.2009, 07:17   #6
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

офф:
к сетевушки привяжи и номеру логического диска
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 20.08.2009, 12:54   #7
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

Barney - где посмотреть их номера?

Что-то народ не может мне решения подсказать.

На всякий случай - приведу код основы - может я чего-то не понял.

Код:
program Project2;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in '..\!!!Ras4et!!!\Unit2.pas' {Form2};

{$R *.res}

begin
  Form2:=TForm2.Create(nil);
  Form2.ShowModal;

  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Может здесь ошибка. =(
Ark вне форума Ответить с цитированием
Старый 20.08.2009, 12:58   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
  Form2:=TForm2.Create(nil);
  Form2.ShowModal;
Попробуй это перевести в OnCreate первой, а саму первую (Form1) запускать С Visible = FALSE
А на OnClose второй писать Form1.Visible:=TRUE или Form1.Show
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.08.2009, 15:15   #9
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Cчитывай ID компьютера http://www.programmersforum.ru/showt...ghlight=hostid и привязывай к паролю.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 20.08.2009, 16:35   #10
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

Alex Cones - не помогло. =( Проблема осталась.

Dekot - ссылка не работает.
Ark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заставка к программе (C++) NoiseEP Помощь студентам 0 08.04.2009 17:24
Заставка на рабочий стол Vladya Помощь студентам 1 11.11.2008 11:19
Антиэкранная заставка Veiron Общие вопросы Delphi 8 24.05.2008 21:37
Заставка в Делфи Верчик Помощь студентам 2 19.11.2007 23:32
заставка при старте програми VVk Общие вопросы Delphi 3 02.11.2007 11:37