« first day (1500 days earlier)      last day (1680 days later) » 
00:00 - 14:0014:00 - 00:00

2:00 PM
@Kapol & 'C:\Users\Radek\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Deployment\PreInnoSetupConfiguration.ps1' -WorkingDir 'C:\Users\Radek\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Deployment\'
need the & in front.
I really do not like PS's quirks.
@mansellan Good, so you know you have the right build. To F5 instead of attach, you really have to be able to run VS as non-admin.
 
it completed
0_o
 
....
maybe it errored because the changes you made to the build events wasn't saved?
make sure it's saved with that extra quote we added to the $(projectDir)
then try again
 
@this Yeah F5 = "Rubberduck could not be loaded" - I guess because VS is elevated...
 
Correct. You must run it as non-admin if you want to F5. Otherwise, use attach debugger for now.
because f5 spawns a new process - by necessity, it is in same elevated context, so.... Attach debugger does not have that restriction.
 
Ok... the issue with that though is that VB6 (on win10 at least) has the same problem as VS... No obvious way to run it non-elevated...
 
2:05 PM
might be for compatiblity
 
think ima have to bite the bullet and install win7 in a VM
 
since it's written in the days where admin was a non-thing.
That's pretty much why I'm still using Windows 7 as my primary VM.
 
wonder why this happened today though. very suspicious its right after a win upgrade...
 
checks EOL 2 more years. sigh
 
@mansellan Makes me nervous as I sit here looking at the freshly rebooted VM I left running last night. I hate the new Windows updates.
 
2:07 PM
yeah, it really sucks
 
@this I tried changing the event text to C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -command "'$(ProjectDir)PreInnoSetupConfiguration.ps1' -WorkingDir '$(ProjectDir)'"
 
Hm, I can run VS as non-admin just fine on Win10.
 
this complains about -WorkingDir, but adding & is not an option
with ` <PreBuildEvent>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -command "'$(ProjectDir)PreInnoSetupConfiguration.ps1' -WorkingDir '$(ProjectDir)'"</PreBuildEvent>
` I get `Illegal syntax. Expecting valid start name character`
 
I need to check to see how we have the group policy for updates set up at work. Our IT guy spent days setting it up in a way that it would never do an unprompted reboot.
 
@Kapol try: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -command "$(ProjectDir)PreInnoSetupConfiguration.ps1 -WorkingDir '$(ProjectDir)'"
@Comintern days? :sadface:
 
2:09 PM
@this IKR? We kept having long running processes interrupted overnight.
 
The term 'C:\Users\Radek\Documents\Visual' is not recognized as the name of a cmdlet,
2> function, script file, or operable program
 
we have a SQL Server VM in Azure and it has rebooted midday because.....
 
I think this does not work, because the first `$(ProjectDir) is not quoted
 
@Kapol for right now, maybe move the directory to a path with no spaces?
I have to go now unfortunately
 
me too
 
2:12 PM
as you see, powershell is very weird with quoting - there are times where you shouldnot quote it at all, othertimes where you have to.
 
the weird thing is the current event is declared like this
` <PreBuildEvent>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -command "$(ProjectDir)PreInnoSetupConfiguration.ps1 -WorkingDir $(ProjectDir)</PreBuildEvent>
`
there is an unmatched double quote
:D
 
oh boy
ok i'll try to get this fixed in a path w/ space but that mgiht be not until tonight my time
sorry about that again!
 
thanks for all the help, I will try to move the project to somewhere else
I'll leave updates here in chat
 
actually, ima go full-on dual-boot with win7. apart from everything else, win10 borked any chance of using WiDi again, so I want a full win7 partition with direct hardware access.
 
@this I know next to nothing about Powershell, but would it be better to build the command manually than trying to work with the command line expansions?
 
2:23 PM
@this OK, so I moved the project to a path without spaces, built it both as admin and as non-admin. Non-admin option works perfectly, running as admin tells me that RD could not be loaded.
My start-up project is Main, because Rubberduck.Deployment is a class library
Anyway, it looks like everything is fine, except for the PS command
 
Hmmm... I need to get oleview.exe installed. olewoo is having problems loading stdole2.tlb.
 
@Comintern there was a bug in olewoo that I fixed in my PR
maybe using the version in my PR works? didn't test.
@Comintern there's no way I know of getting the macros from the VS.
I don't want to hard-code any path more than I have to or make the build process fragile by making assumptions.
 
No idea. I prefer oleview anyway - I've been using it forever, so I'm more comfortable with the interface.
 
oleview should be installed w/ VS, though.
 
Only if you install C++ build tools.
IIR it's in the Windows SDK package.
 
2:33 PM
hmm. I thought it was installed w/o C++. At least I am sure i had it before I added the C++ for MIDL support
but I had to use VS developer prompt to launch it; otherwise it's not in the path
hmm my oleview is in 8.1 SDK, so maybe I did install windows SDK long ago and forgotten about it.
@Kapol Thanks! and thanks too for helping me pinpoint a bug - I'll try to get it fixed soon as possible.
 
3:18 PM
Wow, something is really messed up in stdole2.tlb - when I tried to load it with oleview.exe it locked up my VM so badly that I had to hard reset it.
 
3:37 PM
> I can confirm that this is still an issue:

![screenshot from 2018-07-15 10-34-15](https://user-images.githubusercontent.com/8944005/42735506-0f5c2082-881b-11e8-941c-ceb28c9e22b4.png)
 
-5
Q: Color code of Conditional formatted cell

Erik KallenbergI have conditionally formatted cells. They look for certain text strings, and based on that text string the cell gets a color. How do i look up the color code of these cells? What is the color code of cell 280? What is the color code of cell 281? I tried a VBA DisplayedColor, but it gives ...

 
3:56 PM
Hi. Does anyone know if olelib exists, or has an equivalent in VBA please? Can't find with internet search or in the VBE > References. I was looking to see if I could convert the following vb.Net into VBA. stackoverflow.com/a/48887214/6241235
 
@ThunderFrame snazzy.
 
@Duga will do. can't debug in vb6 just now, need to get win7 installed first
 
4:10 PM
@QHarr I don't think that's a VB6\VBA thing. AFAICT it's used as a shim to get around the fact that VB restricts certain interfaces. You can get the tlb here and reference it, but my guess is that you'd have to distribute it with the referencing code and make sure it's registered.
 
@Comintern Thank you. I will go looksie.
 
5:07 PM
@Comintern no longer in the SDK
41
A: How do I get Spy++ with Visual Studio 2017?

Sam Open Visual Studio Installer Note down which edition of Visual Studio you have installed (eg Professional or Community) Click Modify Click Individual Components Locate the Development activities heading Check the Visual Studio C++ core features component: Click Modify Spy++ might now reside in ...

 
@ThunderFrame spy++, or oleview? I just cheated and copied them from another VM.
 
OleView also, I think
 
Huh. That must be new for VS2017 - IIR spy++ is available from the tools menu in VS2015. Or maybe I'm thinking of 2013.
My god, does every interface in Excel have an Application property? I'm getting 661 hits in Excel.1.8
 
Yes, I think all objects in Excel have an Application property.
 
5:23 PM
@Comintern pretty much, and yet it's so hard to get it from a VBIDE object
`@Comintern what's the path the stdole2?
 
\Windows\System32
 
and 32-bit Office would use C:\Windows\SysWOW64\stdole2.tlb
 
That sounds right.
 
I can't open it either
I guess the Object Browser is the best picture of it we'll get?
 
Re #4096, does this Declaration look right? This is what it Excel.Application resolves to on my system:
<Node>
	<Accessibility>Global</Accessibility>
	<AsTypeName>Object</AsTypeName>
	<Attributes />
	<ComponentName>ISlicerItem</ComponentName>
	<DeclarationType>PropertyGet</DeclarationType>
	<IdentifierName>Application</IdentifierName>
	<IsArray>false</IsArray>
	<IsByRefParam>false</IsByRefParam>
	<IsControl>false</IsControl>
	<IsExtensible>false</IsExtensible>
	<IsOptionalParam>false</IsOptionalParam>
	<IsParamArray>false</IsParamArray>
	<IsSelfAssigned>false</IsSelfAssigned>
	<IsUserDefined>false</IsUserDefined>
Why is that Global?
 
5:35 PM
@Comintern once you have VB6 installed, IIRC, you should have access to TLBINF32.dll which will at least let you enumerate the stdole2 TLB. I'm guessing it's using the same win32 calls underneath, so you might get some problems, but at least you'll get more information than what OleWoo/View are giving
@Comintern We had this discussion the other day, just before your resurrection.
@Comintern The Applicsation in <globals> is:
 
I'm also curious why it's <AsTypeName>Object</AsTypeName>
 
Property Application As Application
    read-only
    Member of Excel.Global
 
Yeah, that one comes through OK:
<Node>
	<Accessibility>Global</Accessibility>
	<AsTypeName>Application</AsTypeName>
	<Attributes />
	<ComponentName>Global</ComponentName>
	<DeclarationType>PropertyGet</DeclarationType>
	<IdentifierName>Application</IdentifierName>
	<IsArray>false</IsArray>
	<IsByRefParam>false</IsByRefParam>
	<IsControl>false</IsControl>
	<IsExtensible>false</IsExtensible>
	<IsOptionalParam>false</IsOptionalParam>
	<IsParamArray>false</IsParamArray>
	<IsSelfAssigned>false</IsSelfAssigned>
	<IsUserDefined>false</IsUserDefined>
 
what's the difference? The AsTypeName?
 
Yeah, the accessibility is correct too.
 
5:41 PM
oh, the SlicerItem. I remember now, it seems the collector takes the first match, not the best match. IIRC, @M.Doerner suggested a fix
 
This is the ISlicerItem one:
[propget, helpcontext(0x000dd359)]
HRESULT _stdcall Application([out, retval] Application** RHS);
 
huh, it's a comment in the issue - github.com/rubberduck-vba/Rubberduck/issues/…
 
Same as _Global's:
[id(0x00000094), propget, helpcontext(0x0002c739)]
HRESULT Application([out, retval] Application** RHS);
 
@Comintern are you running with the VBA parsing fix in place? IIRC, there were some objects returning Object while VBA library was borked
 
Yeah, I'm running it from my local.
 
5:44 PM
@Comintern Global is just a 1 for 1 implementation of _Global
 
The AsTypeName resolution seems to be a problem.
WTH? No changes to that code other than adding an Assert.
 
6:03 PM
> The 2 lines of code assigning to `x` are manifesting 2 different issues. The `stdole.LoadPicture()` issue is in the `ReferencedDeclarationsCollector` - currently the `ComParameter` for its `ReturnType` is failing, so it defaults the declaration to `Object`.

The `Excel.Application()` is declaration looks like it's being generated correctly, but all of the interface and coclass implementations are getting scoped to Global. I don't remember that being an issue for the resolver before, but appa
 
Greetings from Windows 7!
No just gotta install, uh, everything and I should be golden :-)
 
@mansellan Looks younger!
 
IKR!
 
6:21 PM
@Comintern if the AsTypeName == Application is based on the attribute appobject, then it's correct. Global is the one that has that attribute, not the Application.
 
@this It isn't - it should be coming directly from the type library. That's in ComMember.SetDeclarationType, line 81. I'm actually stepping through it in a debugger right now.
 
@Comintern FWIW, my oleview can load it. My modified olewoo can't, though. :\ I think it gets lost in recursive recurse of recursing doomâ„¢.
@Comintern OK
 
That's my guess. I'd bet the RD implementation only avoids it via the known type cache.
 
I don't use that for analyzing stdole2 or any other library.
I only use it to run through RD's own type library to inject attributes.
 
I was just trying to check to see whether the RD declaration matched the IDL. I suspect it doesn't.
Return type again, so I'm guessing it's the same issue as the Excel ones.
WTF, that's a new one.
Not lying about corrupting the target process either. :boom:
 
6:38 PM
The VS2017 debugger does that a lot.
 
I makes it hard as hell to debug. Does it help if I'm not running on multiple threads?
Yes, yes it does.
 
7:06 PM
@this, How does OleWoo parse the TLB? using Win32 functions or by reading the binary stream and structures directly?
 
@ThunderFrame using win32
(from what i've seen of the source anyway - might have a fallback i guess)
 
OK, figured it out. I'd assumed that the funcDesc.elemdescFunc was always going to be the parameter with the IDLFLAG_FRETVAL flag. It isnt'. The ones that are collected as Object are getting the return value set to VT_HRESULT. This shouldn't be too hard to fix.
Is there any tlb information we aren't collecting (but should be)? I might as well add it while I'm mucking around in here.
 
> I often like to group inspection results by location and collapse all but one. However if I make a change and re-parse, my careful collapsing is undone. Would it be possible to retain these settings after refreshing? Perhaps if a new inspection result is introduced in a collapsed location then that could be un-collapsed, but the vast majority of modules are unaffected by changes in one.
> When I create a new module and type Implements ..., I need to re-parse before I can use Rubberduck's refactoring to implement that interface. This always triggers the 'project will not compile' warning. It would be nice if there were a way to skip the warning in this specific scenario (although part of me doubts that's feasible).
 
7:25 PM
@Comintern TBH, I thought we were hoovering it all.
 
Bingo.
...*and your little stdole, too.* :cackles:
<Node>
	<Accessibility>Global</Accessibility>
	<AsTypeName>IPictureDisp</AsTypeName>
	<Attributes>
		<SerializableMemberAttribute>
			<Name>LoadPicture.VB_Description</Name>
			<Values xmlns:d9p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
				<d9p1:string>Loads a picture from a file</d9p1:string>
			</Values>
		</SerializableMemberAttribute>
	</Attributes>
	<ComponentName>StdFunctions</ComponentName>
	<DeclarationType>Function</DeclarationType>
	<IdentifierName>LoadPicture</IdentifierName>
Time to find out how many tests break after updating the serialized declarations...
 
8:00 PM
@Comintern actually, while you're in stdole, I think there is an open issue for collecting short-form properties, and stdole is one of the few TLBs that has them. Let me see if I can find the issue.
 
OK
 
and the class with short-form properties is StdFont
Notice how StdFont's Bold Property doesn't have the keyword Property in the definition pane, while IFont's Bold property does.
 
Huh. Never noticed that before. What does a short-form property do exactly?
 
it's a normal property, it's just defined using a shorter syntax
more info in #3353
 
Never underestimate the ability of a programmer to be lazy.
 
8:11 PM
and the shorter syntax is only allowed in the Properties section, not in the methods section (where long-form properties are defined)
@Comintern considers starring that, decides too lazy to do so
 
lol
 
I guess it's a bit like lazily declaring a public variable in a class module, vs declaring a getter and setter in a class module. Both approaches add property getters and setters, at the TypeLib level.
 
Any reason you can think of to flag them as short form, or do we just need to find them?
 
flagging would be useful, if we want to build a better object browser
 
8:22 PM
Makes sense, will do. I'm checking out the MIDL now - doesn't look terribly difficult.
 
otherwise, I think we come pretty close to collecting just about everything in a TLB, to the point that we could probably produce an OleDuck spinoff.
 
Are they always read-write?
 
they have to be AFAICT
 
@ThunderFrame We ignore some stuff that VB(A) doesn't support.
Hmmm... I'll have to determine whether to make them Lets or Sets I think. Should be easy though.
 
morning @PeterMTaylor
 
8:35 PM
Glorious morning to you @ThunderFrame
Good job on the HTML
Just catching up last nights conversations...
 
@ThunderFrame More like using the native type library functions. IOW, no different from what com collector does, IINM. Note, however, olewoo has C++ DLL to deal with the lower level details, probably because in the .NET 2.0 days, COM interop wasn't as fun/easy as it is.
 
8:48 PM
Trying to decide whether to add a new ComProperty class or just use ComField. ComField appears to grab all the information we need.
 
hm is there a meaningful difference?
 
Not really. The only thing I can think of would be if an interface declares constants or user types.
I'm not sure it that meets spec though - I don't recall ever running across any.
 
If they are all VARDESC then hiding that detail seems to only hurt.
> MIDL allows you to declare constant integer, character, string, and Boolean types in the interface body of the IDL file. Const type declarations are reproduced in the generated header file as #define directives.
 
Yeah, that makes sense. Let work too.
@this Do we know if VB supports that?
 
IDK. Maybe we need a mock type lib. :)
(and besides, even if VB didn't, it doesn't mean we'll not encounter a funky type lib with those stuff that is still usable by VB otherwise)
 
8:55 PM
Currently they would be missing - the collector only looks for constants and types on modules.
Although if there are any, I might find them shortly. :-D
I'm seriously considering making an .xlsm with all of the reference boxes checked and running it through the collector. Wonder if I have the disc space to serialize all of them...
 
This is the MIDL for Word's Range.CheckSpelling:
			VARIANT CheckSpelling(
				[in, optional] VARIANT CustomDictionary,
				[in, optional] VARIANT IgnoreUppercase,
				[in, optional] VARIANT AlwaysSuggest,
				[in, optional] VARIANT SpellLang
			);
This is the MIDL for Excel's Range.CheckSpelling:
		HRESULT CheckSpelling(
			[in, optional] VARIANT* CustomDictionary,
			[in, optional] VARIANT* IgnoreUppercase,
			[in, optional] VARIANT* AlwaysSuggest,
			[in, optional] VARIANT* CustomDictionary2,
			[in, optional] VARIANT* CustomDictionary3,
			[in, optional] VARIANT* CustomDictionary4,
			[in, optional] VARIANT* CustomDictionary5,
			[in, optional] VARIANT* CustomDictionary6,
			[in, optional] VARIANT* CustomDictionary7,
			[in, optional] VARIANT* CustomDictionary8,
			[in, optional] VARIANT* CustomDictionary9,
the key difference being the optional parameters are pointers in Word, which means they must be passed ByRef.
 
@Comintern you might find that lot of references won't work. :\
 
Sub CheckSpelling([CustomDictionary], [IgnoreUppercase], [AlwaysSuggest], [CustomDictionary2], [CustomDictionary3], [CustomDictionary4], [CustomDictionary5], [CustomDictionary6], [CustomDictionary7], [CustomDictionary8], [CustomDictionary9], [CustomDictionary10])
Member of Word.Range
Function CheckSpelling([CustomDictionary], [IgnoreUppercase], [AlwaysSuggest], [SpellLang])
Member of Excel.Range
 
@this That would be the goal.
 
No, i mean you can't add them to xlsm.
"can't load DLL because blah"
 
8:59 PM
So why doesn't Object Browser show ByRef for the Word declaration, or at least differ in some way (other than the parameter names) to the Excel declaration?
 
Guessing it would mostly be 32 v 64.
@ThunderFrame Gimme a sec and I'll check to see what the last changes did. The Excel ones should be ByRef though.
 
@this @Comintern Do you remember if references to files enclosing multiple TLBs works? IIRC, it's a comma syntax with the TLB number at the end. I've been able to add a reference to the VB6 TLBs for PropertyBag, in VBA, but not using the References dialog. I wonder if Com collector can handle that.
 
if we resolve the vbscript regex, then yeah?
 
@Comintern it's one of the reasons you can use System.Missing for optional paramters in Excel, through interop in .NET, but for Word, you must declare an object and pass it ref for each parameter.
 
@ThunderFrame By spec missing parameters are just VT_ERROR I think.
 
9:05 PM
Lippert in VSTO for 2007:
> In Word, optional parameters are handled differently than in the other Office applications. Word’s object model requires that optional parameters be passed by reference
 
IOW, Lippert identified the root of problem: You're using Word.
 
LOL
 
and further:
> Optional parameters in Word can produce some strange-looking C# code because the values passed to optional parameters must be passed by reference
 
So HTH does asking for struct instead of a pointer equate to by reference? Were they high when they wrote the MIDL?
Actually that would probably make sense, because they were definitely high when they implemented Word.Range...
 
I'm guessing VBA enforces ByRef for Excel and Word, but .NET had to deal with it through interop, at a lower level
 
9:09 PM
could be that because variant itself can contain a pointer?
 
@Comintern haha - That reminds me, did you see my reponse to your Word.Range question on SO?
4
Q: Can't get recursive Range.Find in Word VBA to work

CominternI've been flailing at this for a while and can't seem to come up with a solution. I have to search through a document from start to finish with a wildcard search for custom mark-up. For the sake of the question, we'll say {something} When I find a specific match, it gets replaced with the content...

 
e.g. it converts a byref parameter into a variant with BYREF something
Anyway, I confirmed two things...
yes, we can compile a TLB with no DLL and no registration and it'll get loaded
and no, we can't see the const on the interface.
[
  uuid(F342A9DC-6226-4948-A532-712779004277),
  version(1.0),
  helpstring("Lame")
]
library lame
{
	[uuid(F342A9DC-6226-4948-A532-712779004278)]
	interface ILame {
        const BSTR LameConst = "foo";
	}
}
 
@ThunderFrame Nope. I got that working though. IIR I duplicated the Range and checked to see if they intersected.
 
hmm. running it via oleview....
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: <could not determine filename>

[
  uuid(F342A9DC-6226-4948-A532-712779004277),
  version(1.0),
  helpstring("Lame"),
  custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 134283886),
  custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 2147483647),
  custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, "Created by MIDL version 8.01.0622 at Mon Jan 18 21:14:07 2038
")

]
library lame
{
    // TLib :     // Forward declare all types defined in this typelib
that explains why the OB shows nothing, I guess.
 
@this Ah, so it must require that the VT_BYREF flag is set.
 
9:14 PM
@Comintern yeah I was thinking that there might be a special case where it'll marshal a byval variant with that flag set. Remember how we also have that rule where we cannot marshal another VT_BYREF variant pointing to a another VT_BYREF variant?
 
I can add that check in ComParameter.GetParameterType.
That's a stupid implementation though. Wouldn't that invert the responsibility of managing the memory for the passed VARIANT struct?
 
That's a question you'll have to ask Word team.
 
I.e., how do you know when you can deallocate memory pointed to by the VARIANT?
 
but take caution; there may be secondhand smoke effect if you approach them.... (and I don't mean cigarettes)
Hmm. interesting. const defined outside the interface won't show up.
 
LOL. I've always envisioned being assigned to the Word programming team as being some form of punishment at MS. Like for people who park in executive reserved parking or something.
 
9:20 PM
thinking about it - Oleview itself does not even have a folder for Const.
 
@Comintern what punishment does the Word team offer for miscreants?
 
so even though it's valid and will be happily consumed by the MIDL it just does.... nothing.
@ThunderFrame work on VBE
 
@ThunderFrame PowerPoint.
 
@this That might just be an implementation detail in the viewer.
@ThunderFrame OneNote is somewhere in purgatory too. The cool kids work on Excel.
The hipsters probably gravitate toward Project, but only because it's ironic.
 
9:24 PM
@Comintern yep, Excel or Visio
 
@ThunderFrame so the difference is moot at the level below VBA? Working on following your discussion
 
I've been scanning through the documentation for LoadTypeLibEx and can't find anything that hints at how to load multiple type libraries from the same DLL. Is there a reference pointer I'm missing somewhere?
 
@IvenBach I think so. VBA just hides the complexity of handling the HRESULT and everything else. That's in part why it's called Visual Basic
@Comintern here's the syntax for adding an indexed reference in VBA:
Mar 20 '17 at 5:20, by ThunderFrame
thisworkbook.VBProject.References.addfromfile "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA7.1\VBE7.dll\3"
thought it was a comma, but seems to be a backslash
 
@ThunderFrame Interesting. That implies that they're indexed, which likely means theres a call somewhere to get a typelib count.
 
IDK - I seem to recall finding a TLB that had a missing index, IIRC, OLEVIEW or OLEWOO will show you the details. I really can't remember much more than that.
damn, where is the real location of VBE7.dll?
hmm, i think it's C:\Windows\SysWOW64\msvbvm60.dll
 
9:47 PM
@ThunderFrame I only grok at portion of what you’re working on.
 
@Comintern I remember now, you can see the index numbers in ResourceHacker
 
@Comintern I'm not so sure. I think it's just one of those extra baggages that isn't germane to COM/OLE
 
the 2nd sentence is key:
> MIDL allows you to declare constant integer, character, string, and Boolean types in the interface body of the IDL file. Const type declarations are reproduced in the generated header file as #define directives.
header file ≠ TLB
 
@ThunderFrame Ahah! Open an issue for it.
 
9:52 PM
@ThunderFrame FYI it's also found in Common Files\microsoft shared. That's what the office host uses.
 
I need to find a .pdf of the MIDL spec so I can sit down and read the whole damned thing.
 
@this not with 2016, C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA7.1 doesn't contain any files, only a 1033 folder
 
I've been cowboying it from the docs. IDK if there's even a PDF. But I know that it's used for more stuff than just COM/OLE so there are lot of attributes that don't apply
 
and the 1033 folder has only CHM files
 
@ThunderFrame Serialize your declarations and look in the XML file for the path.
 
9:54 PM
@ThunderFrame right cos CTRs are sandboxed. You can also get the actual path by doing:
 
Delete them or move them from the directory when you're done though, my next PR will invalidate them.
 
?Application.VBE.ActiveVBProject.References(1).FullPath
C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL
 
already found it - it's virtualized in MSVBVM60.dll
7 mins ago, by ThunderFrame
hmm, i think it's C:\Windows\SysWOW64\msvbvm60.dll
 
hmm. for some reason that feels so wrong.
 
@this it's a lie
 
9:55 PM
@this Isn't that the VBE motto?
 
@ThunderFrame the silly sandbox they built is a whole lie, I guess.
@Comintern If they're ok with long-living cucumbers, then I guess?
 
"For some reason that feels so wrong. LONG LIVE THE CUCUMBER!"
 
@Comintern parsing that VBInternal library that is added to a VBA project with thisworkbook.VBProject.References.addfromfile "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA7.1\VBE7.dll\3" results in an error when trying to read the reference's FullPath property. It might be good to test with Rubberduck's COM collector. I'll add it to the yet-to-come issue.
 
Interesting. So that means we'd need another method to access it then...
 
@Comintern IIRC, some of the TypeLib code in RD is returning references with # separators, that probably detail the real path
 
10:10 PM
Is that an Office 2016 thing?
 
huh, C:\WINDOWS\SysWOW64\FM20.DLL appears to have 2 TLBs in it, both with the same name, but with a different number of declarations.
 
Apparently properties can be read-only. There's a VARFLAG_FREADONLY flag.
 
@Comintern The VBInternal/VBE7.dll\3error with reading the path is Run-time error '-2147319779 (8002801d)': Automation error - Library not registered. - I don't think it is related to Office 2016
 
@ThunderFrame RD naively loaded the reference as a path. It would need to parse it for the reference index.
 
IDK if that backslash-index syntax works with the win32 functions, but I guess you still need to know the indices. I suppose there must be more win32 functions for geting the resources within a dll?
bbl
 
10:24 PM
Yeah, those would be the APIs that ResourceHacker uses.
 
@Comintern i know I'm a few days late (mainly because of my spotty attendance record)...but welcome back!
 
@BZngr Thanks! Finding out I left a partially implemented COM collector. :-P
 
:)
 
10:42 PM
lol two of RD's PS build scripts just made Avast panic :-)
 
@ThunderFrame Remember that 2016 run in a sandbox and has its own registry. You need to look at its registry hive to see how it sees the world.
@mansellan :(
 
uh, the build also assumes system root is on C: :-(
 
Jul 12 at 6:41, by this
@Comintern It might be worthwhile to check out this particular feature of typelib API: GetReferenceInfo, ReferencesCollection,
Jul 12 at 6:41, by this
and TypeInfoReference. This has the added advantage of providing you with the info even for a broken reference as well.
@mansellan hmm I tried hard to not use any absolute path. That might be beyond my control. Are we referring to the project directory or to the Visual Studio installation path?
 
found a couple of places so far - in the pre\post build props of deployment, and in the build registry script
(only finding them now F: is my boot drive :-) )
 
oh
 
10:49 PM
OK, time to find out what I just broke.
 
let's fix them. I'm also fixing the issue that kapol reported earlier
powershell does not make it easy or intuitive when it comes to quoting... >:(
 
Grepping for C:\ finds a ton of stuff in tests, but I'm not worried about that for now
 
I think that might be from the xml files
 
@mansellan I think the serialized declarations are from my machine.
 
I think that encodes the absolute path.
 
10:52 PM
^^^
 
yeah there's some in XML, but many just paths in tests
it may well be they're just mock values, haven't looked into them
 
@mansellan Are they using them to load the serialized declarations or mocking IDeclaration?
 
not that I can see no
 
If this revision to the COM collector breaks them all, I'll make them consts somewhere. I'm going to need to update the test files when I'm done.
 
UI keeps freezing on the Find window when it scrolls past the XMLs ;-)
 
not the problem I'm looking to solve atm anyway, just wanna be able to attach to VB6 again :-)
 
@mansellan I discovered yesterday that Notepad++ doesn't choke on them if you pretty-print the XML. I dropped in a precompiler directive for that. :-)
Not for production use though - Excel generates like 10MB of tabs and newlines.
 
If Avast doesn't quit blocking PS scripts soon, it's heading for the uninstaller.
 
user image
2
Houston, we have short-form properties.
 
11:02 PM
@mansellan it does make sense. PS scripts can do a lot. Why not just whitelist?
 
hmm, seen this before?
F:\My\Dev\Rubberduck\Rubberduck.Deployment\BuildRegistryScript.ps1 : Exception
calling "LoadFrom" with "1" argument(s): "Could not load file or assembly 'file
:///F:\My\Dev\Rubberduck\Rubberduck.Deployment\bin\Debug\Rubberduck.Deployment.
dll' or one of its dependencies. This assembly is built by a runtime newer than
the currently loaded runtime and cannot be loaded."
@this I've tried, it seems to be disobeying me
 
hmm. we're on 4.6.
 
do I need to update PS ?
 
what does the output show?
 
Severity Code Description Project File Line Suppression State
Error The command "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -command "F:\My\Dev\Rubberduck\Rubberduck.Deployment\BuildRegistryScript.ps1 -config 'Debug' -builderAssemblyPath 'F:\My\Dev\Rubberduck\Rubberduck.Deployment\bin\Debug\Rubberduck.Deployment.dll' -netToolsDir 'F:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\' -wixToolsDir 'F:\My\Dev\Rubberduck\Rubberduck.Deployment\WixToolset\' -sourceDir 'F:\My\Dev\Rubberduck\Rubberduck.Deployment\bin\Debug\' -targetD
 
11:04 PM
oh wait, you're on windows 7? Very possibly. Yes, update PS first
 
ok will do
 
that's still from the error list
the output is one where you see build messages - that has more details
 
ah sorry
16>F:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3270: There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "olewoo_interop", "x86". This mismatch may cause runtime failures. Please consider changing the targeted processor architecture of your project through the Configuration Manager so as to align the processor architectures between your project and references, or take a dependency on references with a processor a
 
definitely update PS
 
they don't make it easy to find the right dl...
Win7AndW2K8R2-KB3191566-x64.zip
squints yep - Win7 x64
 
11:08 PM
"VBA RUBBERDUCKING?"
 
i love how they put in the KB article in middle.
 
xd
Is Minecraft an option?
asdfghjkl;'
 
@FallenUser do you want to contribute to the rubberduck project?
 
@FallenUser "_AVIATION?_"
 
YAY!!! I'm attached to VB6 :-)
With a ton of new COMExceptions, but #progress :-)
 
11:20 PM
curious from where?
 
Hmm wow - with no MS Office installed, it must be using the CommandBars installed with VB6 (i.e. Office 8). Every call to CommandBarControl.Tag is throwing this:
System.InvalidCastException
HResult=0x80004002
Message=Unable to cast COM object of type 'System.__ComObject' to interface type 'Office.CommandBarControl'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000C0308-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
Source=mscorlib
StackTrace:
at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease)
 
good thing you caught that
 
yeah...
 
that means we are probably not smart enough to handle downleveling
might be the effect of us embedding (or not?) the interops.
 
perhaps
sounds like a tomorrow kinda problem. ttgtb.
 
11:26 PM
freaking finally. got it to build with a space in path.
I do NOT like powershell's cutesy way of handling quoting....
 
If IDictionary.TryGetValue is false, does it modify the out parameter?
 
IDK and I prefer to not assume.
better to stick it in out var foo
then assign foo to whatever you want
 
Makes sense.
 
11:42 PM
Time to fail me some unit tests.
 
@This I would very much like to contribute to the rubberduck project! (I'm asking for it! :))
 
@FallenUser great! So, one way to get started is to find what issue interests you. Here's a list.
find one that seems fun or interesting for you to take on. You might want to read the wiki on contributing: github.com/rubberduck-vba/Rubberduck/wiki/Contributing
 
00:00 - 14:0014:00 - 00:00

« first day (1500 days earlier)      last day (1680 days later) »