Mit Hilfe eines Threads wird unter Win NT ein Verzeichnis überwacht.
Die Anwendung schlummert in der Taskbar und kommt nur in den Vordergrund, wenn eine neue Datei im Verzeichnis abgelegt wird und sendet die Datei Über die serielle Schnittstelle an den Drucker.
Die Applikaton enthält ein PopUpMenu, über die die Anwendung beendet
werden soll. Zum anderen sollte über die Tastenkombination ALT+F4
das Programm automatisch beendet werden.
Genau da liegt das Problem: das Beenden dauert teilweise sehr lange oder
erfolgt gar nicht. Der Rechner muss ausgeschaltet werden, dass das unter
NT nicht so toll ist kann sich jeder denken.
Quellcode ist wie im Borland Delphi 4 - Buch vom Hanser Verlag:
{ Thread-Code }
procedure TWatch.Execute;
begin
changehandle:=FindFirstChangeNotification(PChar(wa tchpath),FALSE,FILE_NOTIFY_CHANGE_FILE_NAME);
if changehandle <> INVALID_HANDLE_VALUE then begin
while True do begin // normalerweise eine Endlosschleife
if WaitForSingleObject(changehandle,500)= WAIT_OBJECT_0 then begin
synchronize(Drucke_Was);
end;
FindNextChangeNotification(changehandle);
if Terminated then break;
end; { while }
end; { if changehandle }
end; { procedure }
procedure TForm1.WMTASKBAREVENT(var message: TMessage);
var point : TPoint;
begin
case message.LParamLo of
WM_LBUTTONDBLCLK : begin
InfoBox.show;
end;
WM_RBUTTONDOWN : begin
GetCursorPos(point);
popupmenu1.popup(point.x,point.y);
end;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TaskBarRemoveIcon;
Application.Terminate;
Action := caFree;
end;
procedure TForm1.Beenden1Click(Sender: TObject);
begin
Application.Terminate;
form1.Close;
end;
Wer weiss Rat????
Die Anwendung schlummert in der Taskbar und kommt nur in den Vordergrund, wenn eine neue Datei im Verzeichnis abgelegt wird und sendet die Datei Über die serielle Schnittstelle an den Drucker.
Die Applikaton enthält ein PopUpMenu, über die die Anwendung beendet
werden soll. Zum anderen sollte über die Tastenkombination ALT+F4
das Programm automatisch beendet werden.
Genau da liegt das Problem: das Beenden dauert teilweise sehr lange oder
erfolgt gar nicht. Der Rechner muss ausgeschaltet werden, dass das unter
NT nicht so toll ist kann sich jeder denken.
Quellcode ist wie im Borland Delphi 4 - Buch vom Hanser Verlag:
{ Thread-Code }
procedure TWatch.Execute;
begin
changehandle:=FindFirstChangeNotification(PChar(wa tchpath),FALSE,FILE_NOTIFY_CHANGE_FILE_NAME);
if changehandle <> INVALID_HANDLE_VALUE then begin
while True do begin // normalerweise eine Endlosschleife
if WaitForSingleObject(changehandle,500)= WAIT_OBJECT_0 then begin
synchronize(Drucke_Was);
end;
FindNextChangeNotification(changehandle);
if Terminated then break;
end; { while }
end; { if changehandle }
end; { procedure }
procedure TForm1.WMTASKBAREVENT(var message: TMessage);
var point : TPoint;
begin
case message.LParamLo of
WM_LBUTTONDBLCLK : begin
InfoBox.show;
end;
WM_RBUTTONDOWN : begin
GetCursorPos(point);
popupmenu1.popup(point.x,point.y);
end;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TaskBarRemoveIcon;
Application.Terminate;
Action := caFree;
end;
procedure TForm1.Beenden1Click(Sender: TObject);
begin
Application.Terminate;
form1.Close;
end;
Wer weiss Rat????
Comment