I hope I'm asking in the right place.
I don't have Win8 machine available and my computer can't run Win8 in a virtual machine, so I'm asking for help from someone with Win8 machine to find out why my code doesn't work in Win8.
I received request for a small project, namely Explorer thumbnail shell extension for OpenRaster (*.ora) files saved by the MyPaint application.
OpenRaster files have the same structure as OpenOffice files (*.odt, etc...), the thumbnail is stored as "Thumbnails\thumbnail.png" inside the zip file.
I've made similar thumbnail shell extensions before and I have working code from previous projects but it's a bit more complicated.
This time I got inspired by article I found here (Google translate FTW!): http://eternalwindows.jp/installer/zip/zip02.html
Apparently you can use CompressedFolder zip storage handler COM object (from zipfldr.dll) as described in the article, pretty elegant and lightweight even though it doesn't support Unicode file names inside zip.
My code finds and extracts thumbnail.png inside the zip and loads it with ATL::CImage.
I've made this activex dll (ATL project, source + 32/64bit binaries): https://dl.dropbox.com/u/61407853/orathumbs1002.zip
I use VC2008 Express + Win7 SDK + ATL7 headers (from WDK) and I started off with VC6 ATL project skeleton.
Everything compiles without warnings and everything worked fine both on XP and Win7 32/64-bit but I'm told it doesn't work on Win8 x64, the dll is registered and thumbnail cache cleared but no thumbnails are generated, and I couldn't say where's the problem without access to Win8 machine.
Here is a small Win32/ATL dialog project that tests the extracting code: https://dl.dropbox.com/u/61407853/ThumbTest.zip
Inside the zip is the source, compiled exe (debug release) and 2 test files (1 good and 1 with invalid thumbnail). The dialog accepts dropped files and shows the thumbnail if successful.
It pops up a messagebox with a description of HRESULT error and calling location in source file (just hit Ctrl+C to copy text from messagebox).
I don't know what is the problem, is my activex dll code broken or is the extracting code broken, do I need to compile with VS2012/WinSDK8 or something else, so if someone could help me track down the problem (compile and debug), it would be greatly appreciated.
My apologies if my post is chaotic, I try to describe in as much detail I can.
I would think you'd be extremely lucky if you found someone here with time and the setup to do what you suggest - not impossible, but a good deal of the inhabitants here do have day jobs
but I'm told it doesn't work on Win8 x64, the dll is registered and thumbnail
cache cleared but no thumbnails are generated, and I couldn't say where's the
problem without access to Win8 machine.
It pops up a messagebox with a description of HRESULT error and calling location
in source file (just hit Ctrl+C to copy text from messagebox).
When I read these, I thought surely its no different from a standard deploy to (remote) customer setup - the bit you have missed, it seems to me, is trace/debug logging - can you log trace/debug statements/results (etc) to a file, and get that sent back to you ?
Ideally you'd also have a snapshot of the things like the event logs etc or a crashdump from the machine so you could analyse it
see i have created the com dll for shell context menu ..
if (DragQueryFile((HDROP)medium.lpszFileName, i, path, MAX_PATH))
szFileName = g_szSelectedFiles[i];
from here i am getting the path (szFileName )i want in exe code so that i can proceed this my doubt ..
the variable is decalred as static in header file of the dll .i link the library of dll .the scope is not remaining .....
the path(Szfilename)is useed in dll .Now this szfilename path i want use in the application code .
i explain how i tried i linked the dll lib to an application code and then i included the header file of the dll in an application code so that i can use the path(szfilename).
this szfilename is declared in static so its scope remain in application code also ..
I have the following code sequences whose pourpose is to display a .txt file in a Excel Spreadsheet, however the .txt file is not being loaded after I execute workbooks.opentext
a workbook is loaded but there are no sheets displayed let alone text
I get good return codes from IDispatch->invoke and good return codes in excpInfo
I have changed the file name to a bogous name and the same thing happens
Then you should provide a LPCTSTR in your call, rather than providing a LPCSTR, and then telling the compiler to ignore the fact that the string may not be in the correct format. Lookup the use of the TEXT() macro and make sure your strings are generated correctly, and read the documentation on the correct use of casts.
I think the string I am passing is being interpetted correctly
By luck, not judgement; if your project is built in UNICODE mode then it will be wrong. You should not use a cast unless you understand the consequences. Instead, use the TEXT() macro to ensure that your character string is generated in the appropriate character set to match the build. Your cast in the foregoing code is telling the compiler to ignore the fact that the string may be in the wrong character set.
I have tried this code with a variety of names (supposedly in Excel) but get the same response each time. The MSDN documentation is not very helpful so I'm not sure where to go from here. However, once again I would ask, what problem are you actually trying to solve?