GregFreeman Posted April 13, 2012 Report Posted April 13, 2012 (edited) I am trying to open shell32.dll with .NET but an exception is being thrown. I'm seeing this type of exception all over when I search google but really not much related to LabVIEW (mostly vb.net, c#.net etc). I have tried loading shell32.dll from system32/shell32.dll and SysWOW64/shell32.dll and both fail. I am running 32 bit LabVIEW on Windows 7 64 bit. I'm guessing it has something to do with that. I am going to try on a coworkers 32 bit computer when I get a chance, but does anyone have suggestions? Thanks. Edit: Tried on 32 bit labview on a 32 bit machine and it still fails. Edited April 13, 2012 by for(imstuck) Quote
GregR Posted April 13, 2012 Report Posted April 13, 2012 Not all dlls contain .NET metadata so they can't be loaded as .NET assemblies. I believe shell32 would be one of those. You would need to use LoadLibrary from the Win32 API to load it. Also you should just load it by name. The system will locate the appropriate copy. Quote
GregFreeman Posted April 13, 2012 Author Report Posted April 13, 2012 Not all dlls contain .NET metadata so they can't be loaded as .NET assemblies. I believe shell32 would be one of those. You would need to use LoadLibrary from the Win32 API to load it. Also you should just load it by name. The system will locate the appropriate copy. Thanks, I will go the CLFN route. Quote
asbo Posted April 14, 2012 Report Posted April 14, 2012 Not all dlls contain .NET metadata so they can't be loaded as .NET assemblies. I believe shell32 would be one of those. You would need to use LoadLibrary from the Win32 API to load it. Also you should just load it by name. The system will locate the appropriate copy. Agreed, shell32.dll is not a dot NET assembly. I think there's an assembly viewer tool that comes with Visual Studio which would could point at any given DLL to check with, but I don't know of anything that comes with Windows off-hand. Quote
GregFreeman Posted April 16, 2012 Author Report Posted April 16, 2012 You guys were right, but luckily there's the int->pointer function in .NET which allows you to get away from the CLFN rather quickly after making the initial call (at least in the case of grabbing icons from a dll). Quote
Rolf Kalbermatter Posted April 18, 2012 Report Posted April 18, 2012 Wow iterating over Pixels in a loop through .Net calls. You only can hope that icons never get bigger than 48 * 48 pixels or that function is going to be soooooooooo sloooooooooooow. Instead there are ready made LabVIEW VIs in vi.lib/platform/icon.llb that use exclusively Windwos API calls and are not just factors faster than your solution. 1 Quote
GregFreeman Posted April 18, 2012 Author Report Posted April 18, 2012 (edited) Yeah, I am not actually using this (luckily) it was just a thrown together example. But, I will remember that in the future because the speed (or lack there of) didn't even cross my mind. Not to mention, I didn't realize that library existed. Edited April 18, 2012 by for(imstuck) Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.