"File As File Is" Utility
1 - Introduction
Hi..
I started writing File As File Is (FaFi) in mid '96. Initially all I wanted to achieve was to get real world programming experience for the Win32 platform. Suffice to say, I've gotten a little carried away and what you see attached with this file is the result of that effort.
At this point I need to make an important point. At no stage did I have any intention of competing with or replacing the standard Windows Explorer. What I can say is that I came from the good ol' days of Xtree Gold and Norton Commander. When I first started working with the new Explorer interface it was hate at first sight. This lead to the first requirement for FaFi, a screen layout that may be configured for either a tree view or a list view, the latter to allow for displaying two folder locations side by side.
The second requirement was for a MDI window style. This allows the user to have multiple windows open, each configurable to one's own preference. Like so many things the best way to learn about these options is simply to play with the different layouts.
The list-list view combination is also used when comparing folders and other options present on the 'File' and 'Tools' menu. These options are grayed out when the layout is not appropriate for the task.
The third requirement was the fun stuff - remote data transfer and file handling. A great excuse for digging into all things tcp/ip and RS232. With every man and his dog (mine's a Border Collie named Jade) doing Internet stuff acquiring a greater knowledge of socket communication is also very important for the CV.
All this talk of the Internet reminds me - Normally FaFi is used in a 'point to point' mode i.e. you need to be able to ping the remote machine to allow a FaFi to FaFi connection. If you're stuck behind a company firewall or proxy server you'll need 'Foxy' to connect to another machine on the internet. This is a small utility application that acts a router for the FaFi protocol.
I had considered including modem dialup for FaFi, but Windows ships with dialup
networking and RAS support. When configured appropriately it allows for
remote dialup and inclusion into the local network. Select the option that
statically allocates the machine dialing in an IP address and then simply use
the TCP/IP facility as before.
2 - Keyboard commands
Function Keys
Miscellaneous
Control Keys
Shift Keys
Alt keys
Drag and Drop
Note : For left handed mouse configuration the reverse applies
a - Speed concerns ? Remember that List Views are a lot faster than tree views.
b - Configure child windows with any combination of Tree Views and list views to your taste. My favourite is to have 3 maximised child windows - one list view only, on list view - tree View combination and one tree view only. Remember to use Ctrl+Tab to switch between windows.
c - All settings (paths, windows sizes, bookmarks etc) are stored in the registry at HKEY_CURRENT_USER\Software\SorryWare\File As File Is. Should something go wrong with the startup process delete this entry. Alternatively to avoid losing preconfigured bookmarks delete all but the bookmark entry. This has the same effect.
d - The default server socket port number may be changed with a commandline argument of -Number (ex. swFileM -4343)
e - If Notepad is not your favourite editor (just kidding) : FaFi will attempt to launch an editor called "Editor.exe" located within the same folder as the FaFi executable before selecting "Notepad".
f - Tired of selecting Yes, yes... when deleting or copying files. When dropping files onto the delete cross (main toolbar) or the drive icons (drive toolbar) NO confirmation dialogs are displayed.
Have fun.
Call me... (especially if you have some code to stick in !)
Leonard
Ps. Please, no hate mail if there's bugs. A stern word will suffice...
Date Last Updated: May 17, 1999

Comments
Using interrupt 15
Posted by Legacy on 09/25/2000 12:00amOriginally posted by: Michael Haephrati
There is an example in MSDN for preventing boot using CTRL+ALT+DEL which was writter for 16 bit environment, and use interrupt 15.
The link of the article is:
http://support.microsoft.com/support/kb/articles/Q81/8/87.ASP?VOTE=1
Can this be done in Win32 environemnt?
Replywindows commander?
Posted by Legacy on 09/17/2000 12:00amOriginally posted by: edwin eefting
Mayby you should look at http://www.ghisler.com/
This is the best norton/dos-navigator clone for windows i know. I use it all the time. I hate working with the mouse, and with this program you don't need one. :-)
Replyfafi.homepage.com
Posted by Legacy on 07/17/1999 12:00amOriginally posted by: Leonard Smith
Hi all
FaFi now has a web presence. The latest version is 0.91. The changes that I've made since the release posted here is documented in the readme.txt on the homepage.
Leonard
Ps. I want to say thanks to the people at codeguru who were kind enough to post FaFi on their site.
ReplyImpressive... but unsecure?
Posted by Legacy on 07/15/1999 12:00amOriginally posted by: John Slagel
That is a very nice application! It works great and the remote connection thing is very cool! Except...
I'm concerned that since the server starts automatically, if I left it running overnight, anyone who know my IP address and port number could copy my hard drive.
And if someone knew the protocol you use for TCP/IP connections, they could easily write an application to scan a range of IP addresses and ports and find someone running this and copy stuff from their hard drive.
Or am I missing something?
Thanks!
ReplyNice!
Posted by Legacy on 07/11/1999 12:00amOriginally posted by: Peter
It is very nice and I like it. Good Job!
Reply
Thanks!
Posted by Legacy on 06/18/1999 12:00amOriginally posted by: David Beardsley
Thank you for the taking the time to mention that you had this here in the newsgroups. For students trying to learn MFC source code examples are invaluable.
ReplyVery Good!
Posted by Legacy on 06/05/1999 12:00amOriginally posted by: Peter Pearson
Excellent program this, but there are a few minor bugs, but I realise it isn't finished yet.
Specificly, when you use the goto dialog to select a directory, the listview isn't updated, and clicking on the directory in the tree view when it is already selected doesn't work.
It also doesn't show the correct amount of free disk space for large drives (shows 2047 mb instead of 4500 mb).
Also, you could also make some of the textboxes for paths slightly longer in length.
Apart from that, an excellent program, and very fast!
ReplyDisk Format code
Posted by Legacy on 05/28/1999 12:00amOriginally posted by: Dennis Peek
I am very interested in this project of yours, as I believe Windows Explorer falls short in many areas of usefulness.
I notice that you haven't implemented the disk format and disk label features yet. Looking at your skeleton code for these features, you seem to be about ready to re-invent the wheel. May I suggest that you use an un-documented disk formatting fuction provided by the operating system (shell32.dll), which is compatible for Win95/98, WinNT 4.0, Win2000 and is used by Windows explorer. It contains its own dialogs, label edit field, error detection and message boxs etc, and obviously works.
Windows Developer's Journal (March 98) published an article by Dino Esposito who discovered and then researched this OS function. His article explained how to use this function for writing your own custom dialogs with more control over the parameters (such as formatting hard disk drives). He also shows how your custom code should take into account that Win95/98 and WinNT do things differently.
However, the default dialogs seem to be adequate and everything is done for you. Dino Esposito provided the tip that the function can be invoked by typing into Start/Run: rundll32 shell32.dll,SHFormatDrive
I put together the following code in a console app to test how the function can be invoked from within a program, and it worked OK on Win98 and WinNT systems. It only needs an item in a pop-up menu to invoke a member function with this code in it. It doesn't require any header files, because it is all done by the OS.
STARTUPINFO SInfo = {0};
SInfo.cb = sizeof(SInfo);
SInfo.dwFlags = STARTF_USESHOWWINDOW;
SInfo.wShowWindow = SW_HIDE;
PROCESS_INFORMATION PInfo;
CreateProcess(NULL, _T("rundll32 shell32.dll,SHFormatDrive"),
NULL, NULL, FALSE, HIGH_PRIORITY_CLASS,
NULL, NULL, &SInfo, &PInfo);
WaitForSingleObject(PInfo.hProcess, INFINITE);
CloseHandle(PInfo.hProcess);
A sincere thanks for what you have done so far.
Dennis Peek
ReplyWell done!
Posted by Legacy on 05/24/1999 12:00amOriginally posted by: William Yowell
While you are carried away with this. Why not add e-mail as one of the options in the "Send To" found in right-button.
ReplyImpressive stuff
Posted by Legacy on 05/18/1999 12:00amOriginally posted by: Ian Southwell
Just about everything I hate from explorer has been removed. It also seems to be very quick, no more of that annoying delay when changing folders in explorer. How long did this take you to write?
Reply