News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Winexplorer

Started by donkey, January 31, 2006, 02:14:00 PM

Previous topic - Next topic

donkey

I had a bit of a bug in the Show Imports selection, while I was fixing it I enhanced it quite a bit, better icons, and a treeview instead of a listview makes it easier to find what you're looking for. The bug was also fixed. There was only 1 download, new upload to the first post in this thread.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

ipadilla

Hi Donkey,
I have only  found a small bug: the "title of the volume" is not OK. Please, see picture.
ipadilla

[attachment deleted by admin]

donkey

Hi ipadilla,

Looks like the string is improperly terminated when displaying a disk with no volume title. This is not supposed to happen as GetVolumeInformation is supposed to fill in the NULL character. What version of Windows are you running and what is the actual volume title ?

Edgar
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

ipadilla

Hi Donkey:

OS: Windows 98 SE
Volume Name: 20GIGAS

ipadilla

donkey

Hi ipadilla,

Very strange, I assume that the drive size is not 936 Gigabytes and the file system is FAT32, two other errors in the information returned. There is no logical reason that GetVolumeInformation should fail under these circumstances but I will find another way to extract the desired information.

Edgar
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

ipadilla

#20
Edgar,

Quote
Very strange, I assume that the drive size is not 936 Gigabytes and the file system is FAT32, two other errors in the information returned. There is no logical reason that GetVolumeInformation should fail under these circumstances but I will find another way to extract the desired information.

I have checked WinExplorer on other computer with the same result. The error is similar although the number of rare characters is different due to a different volume name.

In the first test the drive was 20 Gigabytes, in the second test I used drive of 32 Gigabytes, both under  Windows 98 SE and files system FAT32.
ipadilla

donkey

There was a slight bug in the plugin interface that was corrected, I have attached a test plugin here that traps a double click or "Open" selection from the listview, checks to see if it's a JPG and opens it in a viewer. The viewer is incredibly simple and not meant to be anything other than a test of the interface, it is certainly not what I would release as a JPG viewer. If anyone wants to improve on it be my guest. To use the plugin you must download the version of WinExplorer that I attached in the first post then use the PlugIn Wrangler on the toolbar to install it, the DLL does not have to be in any particular folder.

Also the date and time format will now default to locale specific. If you wish to change this you will have to edit the registry directly adding the following values to the Preferences subkey...

HKEY_CURRENT_USER\Software\Donkey\WinExplorer\Preferences
value Date format REG_SZ dd MMM yyyy
value Time format REG_SZ hh:mm tt



[attachment deleted by admin]
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

ipadilla

Hi Donkey,
here you are some information. Please, see attached .zip
ipadilla

[attachment deleted by admin]

donkey

Hi ipadilla,

I was not able to recreate any of your problems on my 98SE box and they did not show up on a 98SE virtual PC. I have to say that I am at a loss as to why you are having these problems but I will look into it a bit further when I have a chance. Currently I am trying to learn StrongARM assembly and that is taking most of my programming time as I want to write embedded applications. If you would like to try to find the problem yourself the drive properties are extracted in the WM_INITDIALOG handler of ShowDiskInfo. The plugin should only activate if you double click on a valid JPG file, you can recompile WEX1.DLL with a message box to be sure it is being called also be sure that you are using the version of WinExplorer at the top of this thread, otherwise the plugin will not receive the proper messages due to a bug in the earlier versions.

Edgar
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

jorgon

Donkey

Thank you for posting the source of your WinExplorer, it works very well and ably demonstrates the power of modern assembly language.
For my part I was particularly interested to see the way you implemented COM, including the use of the clever CoInvoke macro contained in Macro.inc which makes use of GoAsm's ARGCOUNT (assemble-time argument counter) which I recall you asked for in the first place! 
Although as you know I don't normally like macros, this one certainly makes the COM call very easy and understandable.
I was also interested to see the use of structs (declared in WinExplorer.inc) to resolve only to a number, enabling you to pass (for example) IShellLink.IUnknown.QueryInterface as an argument to the macro so that the nature of the call can immediately be seen.
By coincidence I needed to look at COM calls myself very recently and having studied this for a short while, including looking at various other ways of making the COM call, I'm not sure that GoAsm syntax can be improved upon in that regard.  If anyone thinks that there is room for improvement please let me know.
I intend to write another help file covering COM very soon, which I shall include in the next version of Testbug (sample code and debugger tester).

Jeremy
Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)

donkey

Thank you very much Jeremy, high praise indeed coming as it does from you. I don't usually like macros much either but will use them in cases like CoInvoke (or much earlier pushq) where they can actually improve code clarity and not just make assembly into a C langauge look alike. Though I have to admit that the syntax for CoInvoke was meant to mimic as closely as possible the example code at MSDN, this greatly helped my experiments with COM. Yes, I did originally request ARGCOUNT and it was with CoInvoke in mind that I did so. I do not believe that there is any need for improvement in GoAsm for COM, it is fairly easy to add anything I need via macros or if all else fails using procedures.

I believe the program demonstrates the single most powerful feature of GoAsm in my opinion, that is the way it imports DLL and LIB based functions. When compared with MASM, calls by ordinal are simpler, clearer and safer using GoAsm. Using LoadLibrary/GetProcAddress for ordinals is cumbersome and unclear and the risk of a "call to NULL" is always present. While in GoAsm, without the hinderance of PROTOs calls to ordinals can be verified by the PE loader prior to the app starting, eliminating unnecessary runtime checking. An example is my calls to the MRU lists in common controls which have existed as ordinals since Windows 95...

FindMRUString = COMCTL32.DLL:155

invoke FindMRUString,[hPlugInList],offset EnumBuffer,0

As you know I have been a bit of a pest when it comes to structures in GoAsm and I have to thank you for all of your efforts in that regard, I know that you are not a great user of structures and that most of the work you have done to improve them over the years has been almost solely for the benefit of your users.

Thanks for the great language and all the time and effort you have invested in making it as powerful as it is.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

donkey

Well,

I have added quite a bit to the program, too much to go into right now but download it and poke around and you'll find some bug fixes and added features, mostly bug fixes. The major new things are a MRU list for recently used files and Copy functionality added to the Simple Hex Viewer but there are a few other things as well for example when viewing a registry key value in the "Value Details" dialog it will expand REG_EXPAND_SZ strings. I may add editing to both the registry viewer and the hex editor, not a huge job but one for the weekend.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

PBrennick

Edgar,
I thing adding those two things will make this the premier Windows Explorer.
Paul
The GeneSys Project is available from:
The Repository or My crappy website

Mark Jones

Awesome work Edgar!

Request: ability to add & remove "Open with Winexplorer" to windows explorer's right-click menu. :bg
"To deny our impulses... foolish; to revel in them, chaos." MCJ 2003.08

donkey

Hi Paul,

I didn't have time this weekend but I will get to the edit functions as soon as I can

Hi Mark,

Good idea, I will add it

New upload, added the ability to set program options that were previously fixed and to edit the time and date formats. There is no toolbar button for the option dialog, just press ALT-O.

Edgar
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable