我怎么知道用户对word的操作状态呢

解决方案 »

  1.   

    在WordApplication中有一个OnQuit事件,这可以吧!
      

  2.   

    给你一个读写打印Ole的例程,自己去看吧:
    procedure ReadOleData(AdoQuery: TADOQuery;OleContainer: TOleContainer;OleField: String);
    var
      Stream_tmp:TStream;
    begin
      if (not (AdoQuery.FieldByName(OleField) as TBlobField).IsNull) then
      begin
        Stream_tmp := TMemoryStream.Create();
        Stream_tmp := AdoQuery.CreateBlobStream(AdoQuery.FieldByName(OleField) as TBlobField, bmRead);
        Stream_tmp.Position := 0;
        OleContainer.LoadFromStream(Stream_tmp);
        Stream_tmp.Free();
      end;
    end;procedure WriteOleData(AdoQuery: TADOQuery;OleContainer: TOleContainer;OleField: String);
    var
      Stream_tmp :TStream;
    begin
      if (OleContainer.State <> osEmpty ) then
      begin
        Stream_tmp := TMemoryStream.Create();
        OleContainer.SaveToStream(Stream_tmp);
        Stream_tmp.Position := 0;
        (AdoQuery.FieldByName(OleField) as TBlobField).LoadFromStream(Stream_tmp);
        Stream_tmp.Free();
      end;
    end;
    procedure PrintOle(AdoQuery: TADOQuery;OleContainer: TOleContainer; OleField: String);
    var
      Stream_tmp:TStream;
    begin
      if (not (AdoQuery.FieldByName(OleField) as TBlobField).IsNull) then
      begin
          Stream_tmp := TMemoryStream.Create();
          Stream_tmp := AdoQuery.CreateBlobStream(AdoQuery.FieldByName(OleField) as TBlobField, bmRead);
          Stream_tmp.Position := 0;
          OleContainer.LoadFromStream(Stream_tmp);
          OleContainer.DoVerb(ovPrimary);
          OleContainer.OleObject.OleProcedure('PrintOut');
          OleContainer.Close();
          Stream_tmp.Free();
      end;
    end;