<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-29525096</atom:id><lastBuildDate>Sun, 01 Nov 2009 17:03:38 +0000</lastBuildDate><title>DevDoctor Software</title><description></description><link>http://www.devdoctor.com/software/</link><managingEditor>noreply@blogger.com (Matthew Skelton)</managingEditor><generator>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-29525096.post-114996384419316942</guid><pubDate>Sat, 10 Jun 2006 17:28:00 +0000</pubDate><atom:updated>2008-10-27T04:39:32.962Z</atom:updated><title>CopyFilenames Shell Extension</title><description>&lt;div class="download"&gt;
&lt;div class="download-link"&gt;&lt;br/&gt;
&lt;a href="http://www.devdoctor.com/software/downloads/SetupCopyFilenames.msi"&gt;Download CopyFilenames (283Kb)&lt;/a&gt;&lt;/div&gt;
&lt;div class="download-foot"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Overview&lt;/h3&gt;
&lt;p&gt;&lt;img src="/software/images/CopyFilenamesScreenshotMenu.gif" align="right"/&gt;&lt;dfn&gt;CopyFilenames&lt;/dfn&gt; is a free &lt;a href="http://msdn.microsoft.com/en-us/library/cc144067(VS.85).aspx"&gt;Shell Extension&lt;/a&gt; for Windows Explorer which allows you to copy the full filenames of one or more files to the clipboard. You can then paste the filename(s) into another document or email, or even directly into the filename box in your web-browser. No more searching for that file!&lt;/p&gt;
&lt;h3&gt;Download&lt;/h3&gt;
&lt;p&gt;&lt;dfn&gt;CopyFilenames&lt;/dfn&gt; should work on all versions of Windows. No other files are needed. &lt;a href="http://www.devdoctor.com/software/downloads/SetupCopyFilenames.msi"&gt;Download the Windows Installer package here [SetupCopyFilenames.msi - 283Kb]&lt;/a&gt; - follow the instructions in the setup installer.&lt;/p&gt;
&lt;h3&gt;Background&lt;/h3&gt;
&lt;p&gt;&lt;a href="/software/images/CopyFilenamesScreenshot.png"&gt;&lt;img src="/software/images/CopyFilenamesScreenshotThumb.png" align="left"/&gt;&lt;/a&gt;When browsing files with the Windows Explorer interface, I find I often want to copy/paste the name of a file or group of files.&lt;/p&gt;
&lt;p&gt;For example, when uploading an image or document in my webbrowser, without &lt;dfn&gt;CopyFilenames&lt;/dfn&gt;, I would click Browse... and then be forced to traverse the directory tree to find the file, which I can see in the Explorer window on screen!&lt;/p&gt;
&lt;p&gt;Or perhaps I want to make reference to a group of files in a document. I want to be able to grab their filenames quickly, without resorting to a nasty command prompt &lt;code&gt;dir *.jpg &gt; filenames.txt&lt;/code&gt; command.&lt;/p&gt;
&lt;h3&gt;Source Code&lt;/h3&gt;
&lt;p&gt;The code was written in Delphi 5, because it has great support for simple COM/ActiveX objects, and doesn't require the .Net Framework, so &lt;dfn&gt;CopyFilenames&lt;/dfn&gt; can run on almost every version of Windows.&lt;/p&gt;
&lt;p&gt;The gubbins of the source is as follows:&lt;/p&gt;
&lt;pre&gt;
  // ...

  // Render the data referenced by the IDataObject pointer to an HGLOBAL
  // storage medium in CF_HDROP format.
  Result := lpdobj.GetData(FormatEtc, StgMedium);
  if Failed(Result) then
    Exit;

  try

    // We collect a list of filenames for all items selected 
    // and store them in a string list object for later use.
    //
    //
    numFiles := DragQueryFile(StgMedium.hGlobal, $FFFFFFFF, nil, 0);
    _InitFilesList(numFiles); // preps the list with the correct number of slots

    for i:= 0 to numFiles-1 do
    begin
      filenameLength := DragQueryFile(StgMedium.hGlobal, i, nil, 0);
      DragQueryFile(StgMedium.hGlobal, i, LFileNameBuffer, SizeOf(LFileNameBuffer));
      filename := LFileNameBuffer;

      FFilenames[i] := filename;
    end;

    Result := NOERROR;

  finally
    ReleaseStgMedium(StgMedium);
  end;

  // ...
&lt;/pre&gt;
&lt;p&gt;The details are pretty arcane, but most of the heavy-lifting is done by the Windows Explorer interface and the Shell handlers, which provide us with all the information we need. We convert it to Delphi-style strings, then copy the info up the clipboard, with each filename separated by a newline.&lt;/p&gt;

&lt;p&gt;Any comments welcome.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;DevDoctor is a software systems consultancy providing expertise in the design, build and diagnosis of web-enabled software systems.

DevDoctor can help you grow your business by finding and eliminating errors and inefficiencies in your software, and by improving your software development process.

We also undertake bespoke systems development in a variety of languages.

http://www.devdoctor.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29525096-114996384419316942?l=www.devdoctor.com%2Fsoftware'/&gt;&lt;/div&gt;</description><link>http://www.devdoctor.com/software/2006/06/copyfilenames-shell-extension.html</link><author>noreply@blogger.com (Matthew Skelton)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-29525096.post-5386346604426041801</guid><pubDate>Thu, 23 Feb 2006 03:25:00 +0000</pubDate><atom:updated>2009-08-23T04:03:31.284+01:00</atom:updated><title>FilenameFormat - generate time-stamped filenames</title><description>&lt;div class="download"&gt;
&lt;div class="download-link"&gt;&lt;br/&gt;
&lt;a href="http://www.devdoctor.com/software/downloads/FilenameFormat.exe"&gt;Download FilenameFormat (10Kb .zip)&lt;/a&gt;&lt;/div&gt;
&lt;div class="download-foot"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;FilenameFormat.exe is a small utility to format filenames based on the current date and time. It's useful for batch scripting, for example, creating folders or files on a regular basis with a time- or date-stamp.
&lt;/p&gt;
&lt;p&gt;It uses C#-style "curly brace" formatting. The help outpur explains all:&lt;/p&gt;
&lt;pre&gt;
&gt; FilenameFormat.exe

FilenameFormat - formats filenames with current date/time info.
Copyright (c) 2006 DevDoctor.com

Usage: FilenameFormat &amp;lt;filename_pattern&amp;gt; &amp;lt;datetime_pattern&amp;gt; [&amp;lt;copy_target&amp;gt;]

       where:
       &amp;lt;filename_pattern&amp;gt; is the pattern of the target filename
       &amp;lt;datetime_pattern&amp;gt; is the pattern of the date
       &amp;lt;copy_target&amp;gt; (optional) copy this file to new file with preceeding pattern

Both parameters use C#-style string formatters.

Examples:
       'FilenameFormat datafile_{0}.dat yyyy-MM-dd'
               --&gt;     datafile_2008-02-04.dat
       'FilenameFormat day_{0}.dat dd C:\temp\day.dat'
               --&gt;     day_04.dat; copy 'C:\temp\day.dat' to 'C:\temp\day_04.dat'
&lt;/copy_target&gt;&lt;/datetime_pattern&gt;&lt;/filename_pattern&gt;&lt;/copy_target&gt;&lt;/datetime_pattern&gt;&lt;/filename_pattern&gt;&lt;/pre&gt;
&lt;p&gt;You are free to use this utility as you wish.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;DevDoctor is a software systems consultancy providing expertise in the design, build and diagnosis of web-enabled software systems.

DevDoctor can help you grow your business by finding and eliminating errors and inefficiencies in your software, and by improving your software development process.

We also undertake bespoke systems development in a variety of languages.

http://www.devdoctor.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29525096-5386346604426041801?l=www.devdoctor.com%2Fsoftware'/&gt;&lt;/div&gt;</description><link>http://www.devdoctor.com/software/2007/08/filenameformat-generate-time-stamped.html</link><author>noreply@blogger.com (Matthew Skelton)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-29525096.post-114997112913625111</guid><pubDate>Tue, 10 Jan 2006 21:12:00 +0000</pubDate><atom:updated>2009-08-23T03:34:59.138+01:00</atom:updated><title>Simple Redirect</title><description>&lt;div class="download"&gt;
&lt;div class="download-link"&gt;&lt;br/&gt;&lt;a href="/software/downloads/SimpleRedirect_Release.zip"&gt;Download SimpleRedirect (2Kb)&lt;/a&gt;&lt;/div&gt;
&lt;div class="download-foot"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Overview&lt;/h3&gt;
&lt;p&gt;&lt;dfn&gt;Simple Redirect&lt;/dfn&gt; performs a redirect from one &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5adfcce1-030d-45b8-997c-bdbfa08ea459.mspx?mfr=true"&gt;IIS Virtual Directory&lt;/a&gt; to another URL. Nothing fancy, it just does that!&lt;/p&gt;
&lt;p&gt;Useful for situaltions where the main part of your website is located under a sub-folder (i.e. Virtual Dir), and all requests for the root of the site should go to those pages.&lt;/p&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;p&gt;You have a webserver configured at &lt;code&gt;http://www.example.com/&lt;/code&gt;, but the main part of the site lives at &lt;code&gt;http://www.example.com/&lt;strong&gt;pages/&lt;/strong&gt;&lt;/code&gt;. You also have a CRM package installed at &lt;code&gt;http://www.example.com/&lt;strong&gt;crm/&lt;/strong&gt;&lt;/code&gt;. You cannot therefore perform a redirect at the IIS level for the whole domain, as the other applications will not be available.&lt;/p&gt;
&lt;p&gt;Anyone visiting the plain &lt;code&gt;http://www.example.com/&lt;/code&gt; address is assumed to &lt;em&gt;really&lt;/em&gt; want &lt;code&gt;http://www.example.com/&lt;strong&gt;pages/&lt;/strong&gt;&lt;/code&gt;, so is directed there, but those who visit the CRM pages directly receive those as expected.&lt;/p&gt;
&lt;h3&gt;Source Code&lt;/h3&gt;
&lt;p&gt;Here is the important source code:&lt;/p&gt;
&lt;pre&gt;
protected void Page_Load(object sender, EventArgs e)
{
    string targetURL = ConfigurationManager.AppSettings["TargetApplicationURL"];
    string targetName = ConfigurationManager.AppSettings["TargetApplicationName"];
    Response.Redirect(targetURL, true);
}
&lt;/pre&gt;
&lt;p&gt;The actual URL to redirect to is taken from the &lt;code&gt;web.config&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;The code was tested with ASP.NET 2.0, but should be easily modifiable for version 1.1&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;DevDoctor is a software systems consultancy providing expertise in the design, build and diagnosis of web-enabled software systems.

DevDoctor can help you grow your business by finding and eliminating errors and inefficiencies in your software, and by improving your software development process.

We also undertake bespoke systems development in a variety of languages.

http://www.devdoctor.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29525096-114997112913625111?l=www.devdoctor.com%2Fsoftware'/&gt;&lt;/div&gt;</description><link>http://www.devdoctor.com/software/2006/06/simple-redirect.html</link><author>noreply@blogger.com (Matthew Skelton)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>