Some initial comparison thoughts
Here again the two macros in their slightly rearranged and modified form to help compare
https://i.postimg.cc/rskdx3bT/Me-Clsids.jpg https://i.postimg.cc/VN20LdWd/Me-Cls...s-Prog-IDs.jpg https://i.postimg.cc/RC7J4C6Z/Mike-Clsids-Prog-IDs.jpg
Attachment 5814
The registry object looks the same. Its Getted as an object like these
Mike _ "winmgmts:{impersonationLevel=impersonate}!" & strComputer & "\root\default:StdRegProv"
Me ___________________ "winmgmts:\\.\root\default:StdRegProv"
My code I cobbled together a bit wildly. I am not sure yet how Mike got his
We both do a .EnumKey thing referencing the CLSID which gives us an array back of a Variant types, (0 to 6525) . I use a variable KeyValues() , Mike uses a variable entryArray() . Those arrays are identical , perhaps as expected as the FONT=Courier New].EnumKey [/FONT] thing is very similar
___ .EnumKey &H80000000, "CLSID", entryArray() - Mike
.EnumKey 2147483650#, "SOFTWARE\Classes\CLSID", KeyValues() - Me
The array ( Me - KeyValues() , Mike entryArray() ) has exclusively strings in it, the first is just the word CLSID ,the rest of the 6525 are those 36 characters in the squiggly bracket , { } things.
We both effectively loop them strings out. I do just that. Mike makes that the first column that, ( and also Mike makes a second column, which appears to get the name you would use in the late binding thing CreateObject("name") thing. )
Squiggly bracket , { } thing
Regarding that thing in the Mike first of two columns, (the only thing my first macro does), so it is that 36 characters in the squiggly bracket , { } things. I ended up putting each squiggly bracket , { } thing in a variable KeyValue, getting each one out of my KeyValues() . Mike just loops out directly each of his entryArray() (He does in his original coding give that the heading, CLSID
The name you would use in the late binding thing CreateObject("name") thing.
My second abortion coding, Sub CLSIDsValueNames() , attempted to get that. It did not work too well, but got something similar sometimes.
Mike gets that as well in his coding.
( Mike strangely uses the variable name KeyValue , for the name thing. Whereas I use the variable name KeyValue for the other thing, the squiggly bracket , { } things, which Mike uses no variable for but they comes from his entryArray() and he gives his first column the name CLSID . It is a bit pedantic perhaps, but I might like to think a bit more about the better more appropriate variable name as it can help understand/ remember what is going on **)
Mike gets the name effectively from a line each time inside the loop
.getstringvalue &H80000000, "CLSID" & entryArray(ExRowCnt) & "\ProgId", "", KeyValue
**Maybe one or both of us could do better with the name of our variables to make things more clear ??
Maybe later thoughts, …… later ….
For now I will post here , at eileenslounge, and wait a while, in case someone Smarter has any comments.
https://eileenslounge.com/viewtopic....316704#p316704
https://eileenslounge.com/viewtopic....316705#p316705
( A few other for later, later thoughts ….._
_..... there is one obvious similarity in the two macros, they are using some WimMIe widget gismo thing. This WimMIe widget gismo stuff is a windows lurking thing so I expect you can get in a few ways. I feel a desire to do this sort of thing with PowerShell from within VBA. I’m not sure why yet , - either a simple perversion or some gut feeling that it might be handy later …. Not quite sure why yet … just a feeling in my bones that it could be useful )
Share ‘CLSDsUndClassNames.xls’ https://app.box.com/s/nkjwti5yym9j0v634hrxerz4x7n1o90w
Bookmarks