Desktop-as-a-Service Designed for Any Cloud ? Nutanix Frame

  • 1 - Introduction
  • 2 - Keyboard commands
  • 3 - General comments
  • 1 - Introduction


    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

  • F1 = Help
  • F2 = Rename
  • F4 = Edit
  • F5 = Refresh (See also Ctrl+F5)
  • F6 = Move Across (Available with a independant panes)
  • F7 = New Folder
  • F8 = Copy Across (Available with a independant panes)
  • F9 = New File
  • F10 = Open with
  • Miscellaneous

  • Esc = Cancel drag and drop if in progress
  • Tab = Switch between panes
  • Backspace = Navigate up folder tree (See also Alt and Ctrl+Backspace)
  • Ins = Select focus item
  • Pause = Interrupts the list view initialisation.
  • Enter = List view : File item - launch application or its association
  • Control Keys

  • Ctrl+A = Select all
  • Ctrl+B = Opens bookmark dialog
  • Ctrl+C = Copy current selection to the internal clipboard
  • Ctrl+D = Toggle pane dependant status. This setting applies only to a list view - tree view combination and will ensure that the one follows the other.
  • Ctrl+E = Sort by date
  • Ctrl+G = Go to item
  • Ctrl+H = Show history dialog
  • Ctrl+I = Invert selection
  • Ctrl+J = Sets left pane path to be the same as right pane path
  • Ctrl+K = Sets right pane path to be the same as left pane path
  • Ctrl+L = Divide the splitter window into 1/3 : 2/3 areas
  • Ctrl+M = Center splitter
  • Ctrl+N = Sort by name
  • Ctrl+P = Show tcp/ip link dialog
  • Ctrl+R = Divide the splitter window into 2/3 : 1/3 areas
  • Ctrl+S = Show Rs232 configuration dialog
  • Ctrl+T = Show Select some dialog
  • Ctrl+U = Swap panes
  • Ctrl+V = Paste the internal clipboard content to the active path
  • Ctrl+W = Show transfer progress dialogs (if present and hidden)
  • Ctrl+X = Cut current selection to the internal clipboard
  • Ctrl+Y = Sort by type
  • Ctrl+Z = Sort by size

  • Ctrl+Ins = Copy current selection to the internal clipboard
  • Ctrl+Home = Navigate to the top of list view
  • Ctrl+F4 = Closes the current active child window
  • Ctrl+Tab = NB !! Switches between open child windows. Especially useful when child windows are maximised
  • Ctrl+F5 = Refresh the current path
  • Ctrl+Backspace = To next path in history list
  • Ctrl+Number(n) = Open tree brances n levels deep
  • Shift Keys

  • Shift+Delete = Cut current selection to the internal clipboard
  • Shift+Ins = Paste the internal clipboard content to the active path
  • Shift+Number(n) = Close tree brances so that only n levels are visible
  • Alt keys

  • Alt+F1 = Select left pane path location
  • Alt+F1 = Select right pane path location

  • Alt+Backspace = To previous path in history list
  • Alt+Number = Navigate to bookmark location (if configured)

  • Alt+R = Open a command prompt window in the current path (if supported)
  • Drag and Drop

  • Left mouse drag = Move
  • Right mouse drag = Copy
  • Note : For left handed mouse configuration the reverse applies

    3 - General comments

    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 !)


    Ps. Please, no hate mail if there's bugs. A stern word will suffice...

    Download source - 473 KB

    Download application - 311 KB

    Date Last Updated: May 17, 1999


    • Using interrupt 15

      Posted by Legacy on 09/25/2000 07:00am

      Originally 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:

      Can this be done in Win32 environemnt?

    • windows commander?

      Posted by Legacy on 09/17/2000 07:00am

      Originally 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. :-)

    • fafi.homepage.com

      Posted by Legacy on 07/17/1999 07:00am

      Originally 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.


      Ps. I want to say thanks to the people at codeguru who were kind enough to post FaFi on their site.

    • Impressive... but unsecure?

      Posted by Legacy on 07/15/1999 07:00am

      Originally 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?


    • Nice!

      Posted by Legacy on 07/11/1999 07:00am

      Originally posted by: Peter

      It is very nice and I like it. Good Job!

    • Thanks!

      Posted by Legacy on 06/18/1999 07:00am

      Originally 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.

    • Very Good!

      Posted by Legacy on 06/05/1999 07:00am

      Originally 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!

    • Disk Format code

      Posted by Legacy on 05/28/1999 07:00am

      Originally 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.wShowWindow = SW_HIDE;
      CreateProcess(NULL, _T("rundll32 shell32.dll,SHFormatDrive"),
      NULL, NULL, &SInfo, &PInfo);
      WaitForSingleObject(PInfo.hProcess, INFINITE);

      A sincere thanks for what you have done so far.

      Dennis Peek

    • Well done!

      Posted by Legacy on 05/24/1999 07:00am

      Originally 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.

    • Impressive stuff

      Posted by Legacy on 05/18/1999 07:00am

      Originally 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?

    • You must have javascript enabled in order to post comments.

    Leave a Comment
    • Your email address will not be published. All fields are required.

    Most Popular Programming Stories

    More for Developers

    RSS Feeds

    Thanks for your registration, follow us on our social networks to keep up-to-date