Einzelnen Beitrag anzeigen

ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Devicechange aus Service mitbekommen

  Alt 10. Mai 2012, 15:23
Ich brauche keine Komplettlösung, aber ein Hint zu nützlichen Dokus/Infos wäre klasse.
Bei mir funktioniert das Monitoring eines Devicewechsels unter WinXP grundsätzlich auch in der eigenen Service-App sowohl beim Wechsel einer CD/DVD als auch beim Anschluss irgend eines USB-Geräts (Scanner, Drucker, Stick, externe HD):

Code:
Const  LogFileName = 'c:\temp\logged.txt'; // z.B.

procedure LogMessage(const Msg: string);
const
  OpenFlags: array[Boolean] of Integer = (fmCreate or fmShareExclusive,
    fmOpenReadWrite or fmShareExclusive);
Var
 FileStream : TFileStream;
begin
begin
// hier Msg in Logfile speichern oder sonstwas machen ...
  FileStream := TFileStream.Create(LogFileName, OpenFlags[FileExists(LogFileName)]);
  try
    FileStream.Seek(0, soFromEnd);
   FileStream.Write(PChar(Msg + #13#10)^, Length(Msg) + 2)
  finally
    FileStream.Free;
  end;
end;

procedure TService1.WndProc(var AMsg: TMessage);
begin
  if AMsg.Msg = WM_DEVICECHANGE then
    LogMessage(format('%s Message: %s', [FormatDateTime('dd.mm.yyyy hh:nn:ss', Now), 'WM_DEVICECHANGE']));
end;

procedure TService1.ServiceExecute(Sender: TService);
begin
  while not Terminated do
    ServiceThread.ProcessRequests(true);
end;
Die weitere Analyse der Feinheiten (Gerätetyp, ggf. Laufwerksbuchstaben, usw.) habe ich aber so schnell noch nicht einbauen können; ist ja etwas aufwändiger. Hilft's trotzdem was ?
  Mit Zitat antworten Zitat