충주성심학교 교사 김원석입니다.
학교 컴퓨터실에서 학생들의 조작 미숙으로 프로그램이 자꾸 지워져서
탐색기를 수업시간에만 사용하도록 하려고 합니다.
컴퓨터가 랜으로 연결되어 있기에, 교사용 컴퓨터에 있는 'allow.ini'파일에
쓰여진 내용에 따라 학생용 컴퓨터에서 탐색기 실행여부를 결정하도록 했습니다.
탐색기 자체에 신호를 주고 받는 것은 아니고, 가짜 탐색기 아이콘을 만들고
이 아이콘을 통해서 'allow.ini'를 읽고 탐색기를 실행시키도록 했습니다.
그런데 단순히 네트워크 드라이브명을 직접 써 넣어서 했더니
갱신된 내용이 나타나지 않고 처음 읽은 내용만 나타나는 군요.
<< 갱신된 내용이 바로바로 반영되도록 하려면 어떻게 해야 하나요? >>
쉽게 생각했더니 네트워크를 활용하는 건 역시 어렵군요.
//-----------------------------
//학생용 컴퓨터에 설치한 파일.
//-----------------------------
unit A_explorp;
... 중간 생략 ...
procedure TForm1.FormCreate(Sender: TObject);
var
usercheck : integer ;
inifile : tinifile;
begin
inifile := tinifile.create('\\s00\c\allow.ini');
// 네트워크상의 교사용 컴퓨터에 있는 allow.ini파일 읽음.
// 한컴퓨터('c:\allow.ini'로지정) 에서는 갱신된 내용이
// 바로바로 읽혔으나,
// 네트워크 디렉토리를 사용할 경우에는
// 이 부분에서 갱신된 내용이 읽히지 않고 처음 읽은 내용만 나타남.
try
begin
usercheck:=inifile.readinteger('allowexplorer','allowYesNo',0);
inifile.free;
// allow.ini 파일의 내용이 1 이면 실행, 0 이면 실행 불가.
if usercheck = 1 then
winexec('C:\WINDOWS.000\EXPLORER.EXE /n,/e,C:\',SW_SHOWNORMAL)
// 학생용 컴퓨터 탐색기 실행
else
showMessage('지금은 탐색기를 사용할 수 없습니다.'
+#13+'수업시간에는 선생님께 문의하세요.');
end;
except on E: EInOutError do
// 교사용 컴퓨터가 꺼져 있거나 파일이 없을 경우.
showMessage('지금은 탐색기를 사용할 수 없습니다.'
+#13+'수업시간에는 선생님께 문의하세요.');
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
close // 프로그램이 실행되자마자 종료되도록 함.
end;
end.
//-----------------------------
//교사용 컴퓨터에 설치한 파일.
//-----------------------------
unit C_explorp;
... 중간 생략 ...
procedure TForm1.RadioGroup1Click(Sender: TObject);
var
usercheck : integer ;
inifile : tinifile;
begin
usercheck := 0 ;
case RadioGroup1.ItemIndex of
0 : usercheck :=1 ; // 사용 가
1 : usercheck :=0 ; // 사용불가
end;
inifile := tinifile.create('c:\allow.ini');
try
begin
inifile.writeinteger('allowexplorer','allowYesNo',usercheck);
inifile.free;
end;
except on E: EInOutError do
showMessage('파일 수정이 안됩니다.');
end;
end;
end.
//-------------------------------------------------------------
감사합니다.
|