Hi, I've been working with hslf reading/writing .PPT files with some success. However, I want to change a property of an embedded Flash ActiveX control. PowerPoint binary format stores this as a docfile stream inside the PowerPoint file within a record of type ExOleObjStg (record type #4113). You can get at the uncompressed stream, of course, by calling getData() on the specific record object.
I can get at the data that represents the ActiveX Flash control just fine and can see using a hex editor some various properties. However, when I try to update any characters in-place and save the .PPT back out, it often will open with an error (strangely, sometimes changing a single byte does not result in an error). Here is a sample of a stream that is storing the ActiveX data that that Flash OCX apparently reads: http://skitch.com/speby/k1s3/a The above example shows a part of the data inside after calling getData() on an ExOleObjStg which is the embedded Flash ActiveX (.OCX) data. The Movie property, in the above example is set to lowercase 'a' for the curious. I have gone through a few basic reverse-engineering trials whereby I save a .PPT with a single Flash ActiveX control and only change the movie property. One .PPT with a Flash Movieproperty 'a', one with Movie property 'b', and so on for a few more. The only differences in the output I see above between each of those successive iterations is in the 4 bytes at offset 1008 (2A 55 00 00) and the 4 bytes right after at offset 100C (B4 3A 00 00). That's all thatchanges. Given this and the very small changes I was making in each, the values that were being saved out at those two offsets are wildly different. My only conclusion, thus far, is that those 8 bytes represent some kind of checksum, perhaps, but have no way to practically verify that in any reasonable amount of time. What I don't know is whether those are specific to the Flash OCX control itself or are they specific to the ActiveX IStorage interface on Windows or something else entirely? I was hoping, maybe, just maybe, someone here knew enough about and could provide any inside as to what is going on here. I realize there is not specific record type for these and it might even be outside the realm of the POI project if this is Flash-specific data. Any ideas? I know it's a stretch but any feedback is welcome. Thanks. Sean p.s. I am aware that one can use COM interop and get effect I am after but I would like to avoid that if I can.
