Hi cincura.net, Tomcat and others...
How did you know it was Delphi (the horrible default icon)?
Happy to make it open source, it's no big secret and it's not actually that difficult.
It is written in Delphi 7 (but should work with pretty much any version of Delphi). I am not using WinExec, I am using CreateProcess, that gives a bit more control over the launching of the app.
It uses one freeware Delphi component which simplifies the creation and running of the Salamander process. It uses the Servant Salamander windows class (which is "SalamanderMainWindowVer16"), launches the app, waits for the app to go "idle", then reparents Salamander into a new tab. It doesn't really need to subclass Salamander, but I will. This will allow a bit of extra functionality such as changing the tab captions to match the Salamander window caption. It will also allow me to pick up a keystroke combination within Salamander and use that to switch between tabs. For example, the hotkey to go to the next tab in SalShell is CTRL+N, if Salamander has the focus and it is not subclassed, then I have no way of detecting that keystroke combination.
The resizing of the Salamander windows is done with SalShell. Salamander runs "full screen" within each tab, so when you resize SalShell (by dragging or maximising), you just send a "resize" message to each Salamander instance and they will fill the tab.
One point to note:
1. I think the Salamander option of "Save on Exit" should be turned off. I think it may cause problems if Salamander saves it settings on exit, and you have 4 or 5 of them running at once, and they all close at much the same time when closing SalShell.
And yes, I guess it could be made generic to work with other stuff (notepad, windows explorer etc, but I might leave that to some other bright spark).