Author |
Message |
_aLfa_ Site Admin
Joined: 21 Sep 2002 Posts: 233 Location: Aveiro, Portugal
|
Posted: Mon Aug 23, 2004 5:07 pm
Post subject: Designer Info
|
|
Parents:
COM Registration Info
Code: | Type DesignerInfo
uuidDesigner(15) As Byte '0x00 (00d) CLSID of the Addin/Designer
lStructSize As Long '0x10 (16d) Total Size of the next fields
sAddinRegKey As bStr '0x14 (20d) Registry Key of the Addin
sAddinName As bStr '0x16 (22d) + iSizeAddinRegKey Friendly Name of the Addin
sAddinDescription As bStr '0x18 (24d) + iSizeAddinRegKey _
+ iSizeAddinName Description of Addin
lLoadBehaviour As Long '0x1A (26d) + iSizeAddinRegKey _
+ iSizeAddinName _
+ iSizeAddinDescription CLSID of Object
sSatelliteDLL As bStr '0x1E (30d) + iSizeAddinRegKey _
+ iSizeAddinName _
+ iSizeAddinDescription SatelliteDLL, if specified
sAdditionalRegKey As bStr '0x20 (32d) + iSizeAddinRegKey _
+ iSizeAddinName _
+ iSizeAddinDescription _
+ iSizeSatteliteDLL Extra Registry Key, if specified
lCommandLineSafe As Long '0x22 (34d) + iSizeAddinRegKey _
+ iSizeAddinName _
+ iSizeAddinDescription _
+ iSizeSatteliteDLL _
+ iSizeAdditionalRegKey Specifies a GUI-less Addin if 1
'0x14 + lStructSize <-- Structure Size
End Type
Type bStr
Size As Integer
Str As String * Size
End Type |
Notes:
This structure is an extension to the COM Registration Info structure if COMRegInfo.fIsDesigner <> 0 (Designer)
Greetings to Alexandru Ionescu for decoding this structure
Last edited by _aLfa_ on Wed Aug 25, 2004 12:07 pm; edited 2 times in total
|
|
Back to top |
|
|
|
MrUnleaded Site Admin
Joined: 21 Sep 2002 Posts: 385 Location: California
|
Posted: Mon Aug 23, 2004 5:23 pm
Post subject:
|
|
By augmentation.....do you mean it goes afterwards? similar to OptionalObjectInfo?
Also....is there another way we can do this struct....because it looks awfully confusing... as there is overlapping section(i assume based on the type of the struct.) and if it is based on the type of struct...perhaps several structs or even an appending struct should be made?
Thoughts? _________________ -MrU
|
|
Back to top |
|
|
|
ionescu007 Sometimes here
Joined: 21 Aug 2004 Posts: 33
|
Posted: Tue Aug 24, 2004 4:43 am
Post subject:
|
|
Unforunately, because of the dumb-headness of VB, variable UDTs don't really work out nicely. The whole idea is to treat the structure stable only until the first bstr, whose first long is the size of the upcoming string. Everything past that is variable and the best would be to use a dynamic array. Worse, you can't know in advance which strings are present or not, since you must actually read their size, and skip if 0.
This is sadly a limitation of VB
Best regards,
Alex Ionescu
|
|
Back to top |
|
|
|
Dr Memory Expert
Joined: 16 Aug 2004 Posts: 147 Location: Surrey, UK
|
Posted: Tue Aug 24, 2004 6:46 am
Post subject: Dynamic UDT's
|
|
VB6's reluctance to let you use a UDT that way has been a source of grief for many people over the past decade, that's for sure!
It is, however, just that - reluctance, not a limitation. It's perfectly capable of doing it for you, but making it available would require acknowledgement that it opens the door to open-slather pointer operations, making it all too easy for the average VB Joe in the street to screw his application
Like "can't build normal dll's", and several other famous problems, mythical beasts, the ability to apply an arbitrary UDT mapping to an address of your choosing is not so hard....
Have you never "rolled your own"???
Dynamic array, I mean, not a spliff! :chuckle:
You CAN have your cake (access Fred.Member.SubMember), and eat it too (set Fred.Address yourself). I do it all the time!
|
|
Back to top |
|
|
|
ionescu007 Sometimes here
Joined: 21 Aug 2004 Posts: 33
|
Posted: Tue Aug 24, 2004 10:48 am
Post subject:
|
|
If you're thinking of doing:
UDT Foo
Bar as Long
BarString() As String
Bar2 as Long
Bat2String() as String
Bar3 as Long
etc...
and then manually reading the first long, then copying into the strptr/varptr of the string array, you'll notice that the structure isn't alctually contigous (because of dynamic OLESAFEARRAYS) and if you'll want to read the whole thing at once (in the case of passing it to an API, I know it won't happen here), you'll run into a dead end.
In other news, I've found out the unknown/flag parts of ProjectInfo 2 and will be updating the PDF when I get back from school tonight.
Best regards,
Alex Ionescu
|
|
Back to top |
|
|
|
MrUnleaded Site Admin
Joined: 21 Sep 2002 Posts: 385 Location: California
|
Posted: Tue Aug 24, 2004 3:56 pm
Post subject:
|
|
Several of the structures here will simply not work when copied and pasted into VB5/6/.Net but they are all in a format that isnt too confusing to understand.
Anyways it looks like it has changed since my last view.
I guess it is just the +iSizeAddinRegKey +iSizeAddinName +... stuff that represents the offset that is confusing me....
Usually for something like this i load up the entire struct into a custom buffer....size equal to lStructSize....and then "pop" off variables....
Code: |
Type DesignerInfo
uuidDesigner(15) As Byte '0x00 (00d) CLSID of the Addin/Designer
lStructSize As Long '0x10 (16d) Total Size of the next fields
End Type
buffer.Load(cFile,DesignerInfo.lStructSize,Offset)
sAddinRegKey = buffer.PopString()
sAddinName = buffer.PopString()
sAddinDescription = buffer.PopString()
lLoadBehaviour = buffer.PopLong()
.....
|
This is just me...i dont understand Dr. Memorys way.....i dont usually try to read things from memory or load things into memory.... _________________ -MrU
|
|
Back to top |
|
|
|
_aLfa_ Site Admin
Joined: 21 Sep 2002 Posts: 233 Location: Aveiro, Portugal
|
Posted: Tue Aug 24, 2004 4:32 pm
Post subject:
|
|
I use something like that too.
And in VB .NET is even easier to do that _________________ One thing only I know, and that is that I know nothing. (Socrates)
|
|
Back to top |
|
|
|
Dr Memory Expert
Joined: 16 Aug 2004 Posts: 147 Location: Surrey, UK
|
Posted: Tue Aug 24, 2004 5:51 pm
Post subject:
|
|
Was that explanation a little too brief?
Oops! Sorry about that!
I'll fix that, but before I do, can you tell me, what methods are you and/or people here generally using to examine EXE files?
I mean, are you accessing it as a file or as an image?
Cheers
|
|
Back to top |
|
|
|
Dr Memory Expert
Joined: 16 Aug 2004 Posts: 147 Location: Surrey, UK
|
Posted: Tue Aug 24, 2004 5:58 pm
Post subject:
|
|
"something like that in VB.NET"
Omygawwd!
Don't worry, they'll probably develop a cure soon!
|
|
Back to top |
|
|
|
|
|