|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Операции с именами компьютеров
Здравствуйте. Помогите разобраться с одной задачей.
Есть программа(выполняет небольшие арифметические действия), лежит она на сервере, оттуда же и запускается. У наших компов есть имена типа N-1238, N-1500. Можно ли сделать так, чтобы вшить в прогу определенные имена компов, для которых возможен запуск? У меня есть база имен компьютеров, соответствующих именам людей. То есть: N-1238 := Никита N-1256 := Сергей N-1110 := Николай Можно ли в статус баре выводить сразу имя пользователя (например "Никита")? А для всех остальных чтобы отображалось сообщение "Вы не имеете прав на пользование данной программой. Попробовать 1 минутную пробную версию". И чтобы в статус баре шел обратный отсчет 1 минуты и программа закрывалась. Что Вы думаете насчет такого? Нашел функцию определения имени компьютера. Смог вывести имя самого компьютера в статусбар: Код:
Function ReadComputerName:string; var i:DWORD; p:PChar; begin i:=255; GetMem(p, i); GetComputerName(p, i); Result:=String(p); FreeMem(p); end; procedure TForm1.FormCreate(Sender: TObject); begin StatusBar1.Panels[2].Text:= 'Сессия пользователя '+ ReadComputerName; end; |
#2
|
||||
|
||||
Код:
type TAuthItem = record Computer, User: String; end; const Auths: array[1..3]of TAuthItem = ( (Computer: 'N-1238'; User: 'Никита'), (Computer: 'N-1256'; User: 'Сергей'), (Computer: 'N-1110'; User: 'Николай') ); var Logon: TAuthItem; Countdown: Integer = 60; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin Logon.Computer := ReadComputerName; for i := Low(Auths) to High(Auths) do begin if AnsiSameText(Logon.Computer, Auths[i].Computer) then begin Logon.User := Auths[i].User; Break; end; end; if Logon.User = '' then begin MessageDlg('Вы не имеете прав на пользование данной программой. '+ 'Попробовать 1 минутную пробную версию', mtInformation, [mbOK], 0); Timer1.Enabled := True; end else begin Timer1.Enabled := False; StatusBar1.Panels[0].Text := 'Сессия пользователя '+ Logon.User; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if Logon.User <> '' then Exit; Dec(Countdown); if Countdown <= 0 then begin Application.Terminate; end else begin StatusBar1.Panels[0].Text := Format('До закрытия осталось %d сек', [Countdown]); end; end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
softvok (21.01.2014)
|
#3
|
||||
|
||||
Цитата:
Цитата:
Код:
var Buf: array [0..$3ff] of Char; Len: Cardinal; begin Len:=Length(Buf); if GetComputerName(Buf, Len) then StatusBar1.Panels[0].Text:=Copy(Buf, 1, Len); end; а можно на сервере общую папку закрыть для нежелательных пользователей. Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
softvok (21.01.2014)
|
#4
|
|||
|
|||
poli-smen, Спасибо огромнейшее, замечательно работает все)
|