The history of PureLS ===================== 2008-02-29 (released) ---------- - Minor cleanup for 0.41 leap year release - Added (LSAPI): ls_main.c shows warning in debug builds when tray service fails to register. - Fixed (SHELLSVC): appbar.c, shellsvc.c, shellsvc.h Appbar support. 2005-11-02 ---------- - Changed (LSAPI): lsapi_gdi.c BitmapFromIcon() copied from Litestep's optimized version. - Changed (LSAPI): lsapi_gdi.c to use RGB() macro instead of hex color values. - Added (MINGW): shellsvc.mak build file to specify NONAMELESSUNION define. - Added (MINGW): Makefile.inc build file to use CDEFINES. - Added (SHELLSVC): startup.c define USE_STARTUP_POLICIES build macro to use NT startup policy checks. - Fixed (SHELLSVC): ssobjects.c addAndExecuteSSO unused parameter warning in UNICODE builds. - Fixed (SHELLSVC): ssobjects.c loadShellServiceObjects specifying incorrect buffer sizes in RegEnumValue() call. - Fixed (SHELLSVC): notifyicon.c _copyNotifyIcon2KXP from ignoring the NIF flags. - Fixed (SHELLSVC): notifyicon.c _copyNotifyIconBase from clearing the NIF_ICON flag when it shouldn't. - Fixed (SHELLSVC): notifyicon.c onNotifyIcon now passes on NIM_SETFOCUS and NIM_SETVERSION to modules. 2005-10-04 ---------- - Changed (ALL): Code formatting cleanup (whitespace etc) 2004-07-20 ---------- - Fixed (LSAPI): lsapi_gdi.c LoadLSIcon() had a bug which caused the icon index to be ignored and always set to zero. (not a very popular feature if no one ever noticed it until now, heh) 2004-07-18 (released) ---------- - Added (PURELS): XP event signal to remove Welcome splash screen on shell load. (thanks Litestep) 2004-04-26 ---------- - Fixed (PURELS): Race condition between the Litestep thread and the Shellsvc thread resulting in the Notify Icon callback not being registered for the Litestep thread. (The end result being that a systray module would not update) - Updated (SHELLSVC): Now sets event to signal the main purels thread to continue loading (see above fix to 'PURELS'). - Updated (SHELLSVC): Put in #ifdefs to remove AppBar and LoadInProc services at compile time. This is so that they may be removed for release binaries, as those services are not fully implemented yet. 2004-03-31 ---------- - Fixed (LSAPI): Crash in low memory situations. Did not check NULL value on failed malloc() call. - Fixed (SHELLSVC): Crash in low memory situations. Did not check NULL value on failed malloc() call. 2004-03-22 ---------- - Fixed (SHELLSVC): Startup policy was incorrectly checking the LOCALMACHINE policy when running the CURRENTUSER runonce key. 2004-03-18 ---------- - Updated (SHELLSVC): Continued SHAppBar work. The basics are implemented, and responding to desktop application bar positioning requests. (Thanks Ilmcuts and Message for the ground work on this) 2004-03-16 ---------- - Added (SHELLSVC): Started implementation of a functional SHAppBar service. 2004-02-29 (released) ---------- - Added (LSAPI): !Startup bang command. Issuing the command will run all startup items regardless if they have been previously run or not. - Fixed (CONFIG): utils.c had a mongo bug in the delVar function, which is used in the LSAPI wrapper LSSetVariable, so it was crashing things left and right. yay. 2004-02-28 ---------- - Fixed (LSAPI): lsapi_bang.c malloc error in unicode build. Forgot to multiply by sizeof(TCHAR). doh. - Changed (LSAPI): ls_msghdlr.c to show "-unicode" in the !about information dialog, when the core is built for UNICODE. - Fixed (PURELS): main.c was showing the wrong error message when a unicode build was ran on a 9x system. 2004-02-12 ---------- - Added (LSAPI): Support for LM_BANGCOMMAND and WM_COPYDATA, so external applications (!.exe) can send bang commands to the Litestep window. 2004-02-11 ---------- - Changed (LSAPI): Updated BitmapFromIcon(). It used to use CreateBitmapIndirect, which has performance issues. It now internally uses CreateCompatibleBitmap. 2004-02-09 ---------- - Changed (PURELS): I had never finished updating the command-line options previously. So I did that. -s[0/1] 0 = disable startup items, 1 = force startup items, if not specified, startup items are only run once per logon session. -m[0/1] 0 = only allow a single instance of PureLS (subsequent ones will quit silently) 1 = allow multiple instances. (If not specified, the user will be prompted to allow subsequent instances to run) - Added (STARTUP): SS_ForceStartup function. Same as SS_RunStartup, except the return value of internal StartupHasBeenRun() is ignored. 2004-02-04 ---------- - Fixed (STARTUP): Infinite loop in RunOnce handler, because I forgot to request write access to delete keys, and so keys were never deleted, thus the keys were run repeatedly in a loop. Fixed infinite loop possibility, and requested delete access. - Fixed (STARTUP): Incorrect registry key being used for Run keys, and header file clean up. - Changed (SHELLSVC): Removed "delay load" libraries of shell32 and advapi32 in shellsvc, because shell32 was needed anytime shellsvc was loaded, and advapi32 gets loaded by shell32, so no point in holding it off either. 2004-01-13 ---------- - Fixed (LSAPI): Now using DeregisterShellHookWindow to unregister the hook when exiting. Was not previously doing that. Ooops. - Fixed (LSAPI): Using ordinal values instead of function names for exports of RegisterShellHookWindow, DeregisterShellHookWindow and SwitchToThisWindow, for 9x compatibility. - Removed (PLSAPI): Got rid of Get/SetShellWnd and Get/SetDesktopWnd. While they are useful, I have decided to phase plsapi.dll out. I see no true need to expose new API that is not compatible with Litestep. 2003-12-16 ---------- - Added (CONFIG): Initial dynamic E-Var configuration added. Use RegisterVar in purels.cfg file to define specific E-Vars. Eventual support for module defined E-Vars as well. 2003-11-19 ---------- - Fixed (SHELLSVC): Small bug in flag state check's bit logic, which in rare cases made an icon never show up. 2003-11-12 ---------- - Changed (ALL): Worked on MinGW builds. Fixed a few code errors in LSAPI that the MS compiler never warned about. But mainly worked on the MinGW build environment and got working binaries out of it. Still a few function naming issues in the generated sdk libraries though for MinGW. - Changed (LSAPI): Class registration now stores return ATOM value and is used to create windows and unregister the class. 2003-11-10 ---------- - Fixed (SHELLSVC): The new startup code that handles RunOnceEx registry key would produce an error box on systems that did not support that key. The error box no longer is displayed. 2003-11-07 ---------- - Fixed (SHELLSVC): Updated the 2K/XP notify-icon handler to ignore notifications that have NIS_SHAREDICON set but with HICON == NULL. This fixes the XP DUN double icon problem. 2003-10-?? ---------- - Removed (PURELS): All startup code is removed from services.c and fully implemented in shellsvc.dll in startup.c - Changed (SHELLSVC): Startup runner is now fully self contained and looks for an existing event "ShellIsReadyEvent" to wait for processing startup items. - Changed (PURELS): Uses a named event "ShellIsReadyEvent" to specify when the shell is done loading, instead of previous unamed event which other modules could not be made aware of. 2003-10-25 ---------- - Changed (SHELLSVC): Finally finished up the modifications to the notify-icon service. All known issues are fixed. Thanks to Ilmcuts for pointing out how to get the Input Locales icon to show up. However, things have only been tested in Win2000. 9X/XP is untested but should work. (NOTE: Requires updated systray which posts notifications when its window pos/size changes) - Added (SDK): New messages and defines in shelltray.h for use by systray modules to post position/size status to the tray service. - Fixed (SHELLSVC): Startup items that had a quoted path, were not being run. I was forgetting to strip the quotes when parsing the path for the app's startup folder. Oops. - Fixed (SHELLSVC): Startup items being run from the Startup folder that were hidden or system files. Now files that are marked as hidden or system files are ignored. - Added (PURELS): RunOnceEx registry support. - Added (SHELLSVC): Localized and non localized startup folder contents for all users and current users are now run. Thanks again to Ilmcuts. - Added (SHELLSVC): Run Policy support (Thanks Ilmcuts) - Added (PURELS): Run Policy support - Added (SDK): startup.h define for registry location of policy defined startup items. 2003-10-22 ---------- - Fixed (SHELLSVC): Over the last couple of days, have been working on the shell notify-icon service. Icons no longer disapear on recycle. Unfortuneatly this required an extra copy of each icon to be in memory all of the time because some tray apps deleted their internal copy immediately after notifying the tray it was updated. So we had to make our own copy of it, and then whatever tray module is loaded, also makes a copy of it. Ohwell. 2003-10-18 ---------- - Fixed (LSAPI): Finally implemented a better handler for the LC functions. They can now handled nested calls, but are not thread safe (but then neither is most of lsapi.dll), and we do not yet clean up after leaky modules. 2003-10-17 ---------- - Fixed (SDK): shelltray.h function declarations were still defined as the old SH_TRAY_xxx instead of SS_xxx (see 2003-08-18 SHELLSVC change). - Changed (LSAPI): A little bit of clean up, including variable naming. - Fixed (SHELLSVC): The 2003-08-18 changes introduced a bug that prevented notifications icons from being created. Dumb logic error: x || y || z when it should have been x && y && z. bleh. 2003-09-28 ---------- - Changed (SDK): The NotifyIconData struct now uses wide char tooltip string in unicode builds. - Fixed (SHELLSVC): Unicode build had a couple of build errors with char/wide char conversions. - Changed (LSAPI): Cleaned up source. Made local functions static to clarify they are local. - Fixed (LSAPI): Shell window being destroyed before modules are unloaded. The main problem was that any module that added a window as a child to the shell window, would have their window destroyed before _quitModule was called, since all children windows are destroyed when their parents window is destroyed. - Changed (LSAPI): Program flow. When no modules are loaded on startup, startup items are still run, but the shell still exits. Previously startup items were not run. Note: When the recovery dialog is implemented, the shell will no longer exit in this case, instead the recovery dialog will be displayed. - Changed (LSAPI): 2003-08-19 change for IsSendMessage() check has been undone. IsSendMessage() only works from messages sent/posted from another thread, not the current one, so it did not work as expected. Bleh. - Changed (LSAPI): Litestep Thread exit routines are cleaned up and isolated to a single place. See _messageLoop() and _cleanExit(). PM_QUIT should be posted to the litestep module thread for the thread to exit. Do not destroy the shell window to acomplish this! (Modules should post LM_RECYCLE to the shell window). 2003-08-19 ---------- - Changed (LSAPI): Bit the bullet and rewrote the Message and Module handlers. Finally rid of all of that nasty dynamic array allocation. Should have done it sooner since all of the work I did on 2003-07-29 is now pointless, but I was lazy at the time. - Changed (SHELLSVC): No longer sends ShellHook messages via the callback, it now simply implements the service to enable other windows to register for the messages via the normal windows api RegisterShellHookWindow() function. - Changed (LSAPI): Registered for ShellHook messages via RegisterShellHookWindow() instead of from shellsvc.dll, per the above change to SHELLSVC. - Changed (LSAPI): All core LM_xxxx messages handlers are now appropriately wrapped in a IsSendMessage() check. So modules must correctly use SendMessage and PostMessage when talking to the core. 2003-08-18 ---------- - Changed (SHELLSVC): Reorganized source files. Added notifyicon.c, shellhook.c, renamed trayob.c to ssobjects.c, and merged startup.h into shellsvc.h. Renamed the exported functions from being prepended with SH_TRAY_ to simply SS_ for ShellServices. 2003-08-06 ---------- - Added (SHELLSVC): Created HasStartupBeenRun() in startup.c. - Added (PURELS): Using the new HasStartupBeenRun() function, we now check on NT systems to see if startup items have previously been ran. This functionality is common to Explorer as well. So either shell is aware of the other having already ran the startup items. Thanks Litestep Dev team for the code. 2003-08-05 ---------- - Added (LSAPI): Implemented IsDialogMessage() functionality into the main message loop. Added ls_dlghdlr.c to the project. Any module that wants to be supported must register via the new PM_REGISTERDIALOG and PM_UNREGISTERDIALOG message handlers. 2003-08-01 ---------- - Removed (LSAPI): Deleted the internal module specific !ToggleWharf and !Popup bang commands. - Changed (PLSAPI): Renamed all functions from SH_API_xxxx() to PL_xxxx(). And updated all dependant files accordingly. - Changed (LSAPI): Restructured shell message handling. Created a LegacyLSMsg() function to handle all Litestep messages that are considered "obsolete". They will eventually be deleted and this function should go away. - Added (SDK): Put all known Litestep Message (LM_xxx) #defines into lsmsgs.h. To enable them you must define DEFINEUNSUPPORTEDLSMSGS, otherwise only Litestep messages that are supported will be defined by default. 2003-07-30 ---------- - Changed (LSAPI): Created a new About dialog. Added lsapi_about.c to the project. This fixes issues with the old MessageBox dialog that would stay open across recycles, and thus potentially causing crashes. This is a work in progress, and looks even uglier then the old MessageBox at the moment. The changes are ongoing, and will note when it is finished. 2003-07-29 ---------- - Changed (LSAPI): Cleaned up ls_modhdlr.c and ls_msghdlr.c. 2003-07-28 ---------- - Added (CONFIG): Created SH_CFG_ReadParam(), SH_CFG_ReadString(), SH_CFG_ReadBool(), SH_CFG_ReadInt(), SH_CFG_ReadColor(). These are essentially the same as SH_CFG_Getxxx() functions, but instead of reading the value from the internal buffer, it reads it from the supplied string. - Removed (LSAPI): A pointless return value type check on LoadLSIcon() inside of LoadLSImage(), since that specific case is already being handled internally to LoadLSIcon(). - Removed (PURELS): Temporarily #ifdef'd out all of the exception handling. I broke something somewhere, and do not have access to the appropriate resources to figure it out. - Removed (LSAPI): Temporarily #ifdef'd out all of the exception handling. Same deal as above change to (PURELS). - Added (CONFIG): SH_CFG_RefillBuffer(). Reloads the settings from the configuration files. - Fixed (LSAPI): On recycle, the configuration was reloaded from the default "purels.cfg" instead of whatever file was actually used when the shell was loaded originally. - Changed (PURELS): Did a bit of work on the thread handling, and service loading/unloading. Thread events are managed a bit cleaner, and objects are released when they are no longer needed instead of being held open until the shell quit. - Changed (PURELS): Reimplemented thread termination on shell exit if the thread hasn't responded within a certain timeout (Used to wait to infinity). Hopefully this will never actually happen. - Added (LSAPI): Put a thread message handler for LM_QUIT in the message loop. Now if LM_QUIT is posted to the thread (as well as the window), it will exit. - Added (ALL): Created Unicode build configurations for the MSVC++ projects. 2003-07-27 ---------- - Changed (LSAPI): Converted lsapi_match.c to use TCHAR defines, and so can be used for unicode string matches when built for unicode. 2003-07-25 ---------- - Fixed (SDK): Made plsfile.h and lsapi.h to include so that the FILE* type is defined. - Added (SHELLSVC): Reimplemented the shell defined startup run items back into startup.c which were lost in the 2001-12-15 overhaul. Once again "StartupRunItem" and "StartupRunFolderContents" work in purels.cfg as defined. 2003-07-24 ---------- - Changed (LSAPI): Updated the internal bang command processing to remove a bit of pointless work and cleaned up lsapi_bang.c in general. - Changed (LSAPI): Made the "!About detailed" box to only show core purels dll files that are in use. 2003-07-09 ---------- - Fixed (LSAPI): TransparentBltLS() did not restore the original background/text colors of the destination DC before returning. 2003-07-08 ---------- - Fixed (CONFIG): A few global memory access points that were not protected from multiple thread access. 2003-06-30 ---------- - Changed (LSAPI): LoadLSImage(). Cleaned it up, icon support now utilizes LoadLSIcon() which can handle more icon file types. (Needs testing) - Changed (LSAPI): LoadLSIcon(). Cleaned it up. (Needs testing) 2003-06-29 ---------- - Changed (LSAPI): BitmapToRegion(). Optimized and cleaned it up. The transparent tolerance is now a +/- tolerance. I also decided to continue using ExtCreateRegion() which requires allocation of memory. It seems with complex regions it is more efficient than repeatedly creating a new rectangular region and combining it with the previous one. I fiddled with using GetDIBits() instead of CreateDIBSection() but it proved to be too messy when trying to convert the pixels to RGB format under low color depths. The current method handles that without issue. 2003-06-27 ---------- - Changed (PLSAPI): SH_API_BreakTokens(). It now ignores bracket sets within quotation sets. This fixes things like !LabelSetText within !execute, if the label text contains something like [cpu] in it. So using !execute [!labelsettext "CPU usage: [cpu]"] now works, but !execute [!labelsettext CPU usage: [cpu]] would not work. Notice the lack of quotation marks in the second example. - Changed (CONFIG): removeComment(). Updated this internal function to have the same tolerance of bracket sets within quotation sets, as the change mentioned above to SH_API_BreakTokens() does. So, now a command like: SomeCommand [arg1 ; "[arg2]" ; arg3] contains no comments. Previously arg3] would have been truncated. Still, however, without quotes around [arg2], then arg3] will still be truncated. We do not support nested brackets. - Fixed (LSAPI): LoadLSImage(). The image merging routine had several memory leaks. Optimized it slightly while I was at it. - Fixed (LSAPI): TransparentBltLS(). It was deleting object handles it didn't own. Cleaned it up a little as well. 2003-06-26 ---------- - Changed (CONFIG): Made config.dll thread safe. All global data access is now protected by a CRITICAL_SECTION. - Changed (CONFIG): Pulled out some duplicate file checking code and made a common utility function for it. - Fixed (LSAPI): Fixed small mem leak, Bang Commands are now purged on exit. - Fixed (PURELS): There was a possibility of an event handle being accessed after it was closed. 2003-06-19 ---------- - Fixed (LSAPI): Added a NULL pointer check on the Run/Shutdown GetProcAddress return values. - Changed (LSAPI): Cleaned up the multi monitor support. Removing some pointless NT system checks and _UNICODE defines. - Added (PURELS): Made a check to verify we are on an NT platform when built for UNICODE. If we aren't, then we warn the user and exit. 2003-06-17 ---------- - Fixed (LSAPI): The BangCommand function typedef was incorrect. It is now consistent with LS standards again. Updated all internal code as necessary. - Added (SDK): Created a new SDK header, ShellTray.h, which exposes the Notification and Task Icons interfaces from shellsvc.dll - Changed (SHELLSVC): Added a check that verifies that the Notification Icon request is actually different then what is stored, if it isn't, then it ignores. 2003-06-16 ---------- - Fixed (PLSAPI): SH_API_fGetLine(). There was a possibility of referencing a NULL pointer. - Changed (SHELLSVC): Removed all 2K/XP 'systray' icon sharing code (may re-implent later) - Changed (SHELLSVC): Removed all 2K/XP 'systray' "fixups". They were too hacked up and didn't work well. Will reimplement later. - Fixed (SHELLSVC): Crashes occured from multiple threads accessing the same data. All nice and wrapped in CRITICAL_SECTIONS now. - Added (SHELLSVC): It now supports sending tasklist events to registered clients. - Changed (SHELLSVC): Updated the tray notification callback registration. Now, anything that wants to be notified of Shell events may register. Currently systray and tasklist notices are available. - Changed (LSAPI): Updated to work with the SHELLSVC changes. - Fixed (SHELLSVC): Shell32.dll was not being mapped in to the process in time. Now manually load shell32.dll which is needed for the task list service. 2003-06-13 ---------- - Added (LSAPI): VarExpansionEx() - Changed (CONFIG): Majorly cleaned up buffer setup routines and optimized internal parsing handlers. - Changed (CONFIG): "LSColorBGR" setting is now only supported when using legacy mode step.rc configuration. "ColorBGR" may be used in the purels.cfg file. 2003-06-12 ---------- - Changed (PURELS): Cleaned up source using better variable naming conventions. 2003-06-11 ---------- - Fixed (PLSAPI): SH_API_SimpleToken() use case that did not correctly parse a string. - Fixed (PLSAPI): SH_API_BreakTokens() use case that did not NULL terminate the "extra" return buffer. - Fixed (PLASPI): SH_API_BreakTokens() from modifying the destination buffer when the function returns FALSE. All buffers are now left untouched if the function fails. - Fixed (PLSAPI): Fixed all relevant functions to verify the working buffer string length before trying to copy it. 2002-08-31 ---------- - Fixed (PURELS) getthreadcontext() caused problems in mingw, code implemented in assembler instead 2002-08-10 ---------- - Fixed (SHELLSVC) mingw lacked some required symbols, now everything compiles in mingw 2002-08-09 ---------- - Changed (ALL) better syntax, added includes and more to make mingw like the code better - Fixed (PURELS) bug that would result in invalid frame-pointer after an exception. - Added (PURELS) stack trace generation using dbghelp.dll. - Changed (ALL) altered the behaviour of mingw makefiles, almost everything compiles. 2002-08-04 ---------- - Changed (LSAPI) removed all VC++ specific __try()/__except() exception handling - Fixed (PURELS) bug that would hang main thread when LS Module thread crashed. 2002-08-03 ---------- - Changed (CONFIG) removed all VC++ specific __try()/__except() exception handling and cleaned up the code some 2002-08-02 ---------- - Added (ALL) makefiles to build the project using mingw. - Fixed (PURELS) exception handling to not remove handler before executing it. 2002-08-01 ---------- - Added (PURELS) support for basic exception handling. - Added (LSAPI) support for quitting a module upon exception. 2002-05-11 ---------- - Fixed (SHELLSVC) bug in tray unregister callback function. 2002-05-03 ---------- - Changed (CONFIG) SH_CFG_FillBuffer to default to "purels.cfg" if the config source passed into it is a NULL pointer. 2002-04-27 ---------- - Changed (PURELS) command line parser to use a new syntax and options. - Fixed (LSAPI) litestep modules crashing purels when they return a non 0 value from initModuleEx() entry point. quitModule() is now called before FreeLibrary() is called on the offending module giving the module a chance to clean up. 2002-03-30 ---------- - Fixed (SHELLSVC) mem leak with SharedIcons, which were not being removed when their owner was removed. 2002-03-23 ---------- - Changed (SHELLSVC) startup.c/h code. Reformatted and cleaned it up. 2002-03-19 ---------- - Added (PURELS) support for unregistering the systray callback function via shellsvc.dll. - Added (PURELS) thread management control and message event handling to the main PureLS thread. - Changed (PURELS) the event notification for the sub threads. - Fixed (PURELS) a code path that would leave the shell hung. - Fixed (SHELLSVC) systray callback function never being unregistered could cause a crash on exit. 2002-01-16 ---------- - Changed (CONFIG) some code formating around and cleaned up a little 2002-01-15 ---------- - Fixed (SHELLSVC) Tray service not notifying modules to update their menu/tooltips which caused menu/tooltips to be lost on recycle. - Fixed (PURELS) bug under Win95 dealing with _beginthreadex() causing it to fail. (thanks Gizmo for helping track it down) - Added (PLSAPI) SH_API_TransparentStretchBlt() function. (thanks nivenh for the code) 2002-01-14 ---------- - Added (SHELLSVC) System tray icon sharing under Windows 2000/XP. - Added (SHELLSVC) System tray supports Windows 2000/XP Shell icons. Still a problem of duplicate Network icons in Windows XP however. (thanks Message for researching the 2k/XP issues) - Added (SHELLSVC) System tray service is fully integrated. (thanks Gustav "grd" Munkby for an excellent tray service code base) 2001-12-15 ---------- - A lot has changed since the last entry. Basically there has been a complete structural rewrite. Reorganization of the source files. The addition of "shellsvc.dll" and merging of "startup.dll" into it. Also, all of the Litestep specific code is completely located in "lsapi.dll" now. Purels.exe launches a thread and runs a new export called "ShellMain" from lsapi.dll which loads the "Litestep Module System". Other additions include a native system tray service, correct sychronization of running the windows startup items. Several bug fixes and overall improved stability. A module crash will no longer bring down the shell. The plan on moving forward is to clean up and optimize all of the changes that have been made. Past that we will start working on a native PureLS module system which will greatly extend the functionality of PureLS. 2001-11-16 ---------- - Fixed (STARTUP) a possible bug when a process did not successfully start, causing a reference to an invalid handle. - Changed (STARTUP) some code around, and various cleanup. - Added "SDK folder". There is now a "vclib" and "include" sub folder that contains the headers and libraries needed for building modules. 2001-10-01 ---------- - Fixed minor compatibility issues to completely build UNICODE binaries. 2001-09-31 ---------- - Fixed minor compatibility issues so that the source will build under non MS compilers. 2001-09-23 (released) ---------- - Added (PLSAPI) GetDesktopWnd(). This should be used to retrieve the shell's registered desktop window. - Fixed (LSAPI) VarExpansion() from overflowing the passed in source buffer. - Added (LSAPI) LiteStep's multi-monitor support. This is just a quick initial (temporary?) integration. - Added (LSAPI) LiteStep's GetResStr() and GetResStrEx() functions. - Fixed (LSAPI) GetToken() from not returning szNextToken when szToken was passed in as a NULL. - Fixed (LSAPI) GetToken() from returning a non NULL pointer to szNextToken when there were no more tokens. 2001-07-16 ---------- - Added (LSAPI) LiteStep's GetToken() function. - Removed (STARTUP) project unecessary project dependancy on LSAPI. It was left over from when STARTUP used LSAPI, which it doesn't anymore. - Added (PURELS) LSAPI dependancy to project file, because there was no link to it after removing it from STARTUP. PURELS doesn't depend on LSAPI, but it needs to be built. 2001-07-15 (released) ---------- - Changed the Purels class name from PURELS_CLASS to PureLSClass. 2001-07-01 ---------- - Fixed (LSAPI) CommandParse() to respect passed in buffer size limits. (Previouisly removed to speed things up, but re-added for safety/compatibilty) - Fixed (LSAPI) LSExecute() in respects to launching folders. - Fixed (LSAPI) LSExecute() on non win2k machines not lauching a shortcut with defined display settings (minimized/maximized/normal) - Fixed (STARTUP) on non win2k machines not launching a shortcut with defined display settings (minimized/maximized/normal) - Changed (LSAPI) LSExecute() to except system variables surounded in percent signs (ie: %comspec%). Removed support previously, but decided it should be there, so re-added. - Added "exports.def" files to projects for clean function exports from libraries. 2001-06-12 ---------- - Fixed (PLSAPI) SH_API_SimpleToken() from dropping parameters that only contained a single quotation character. Now it returns the single quote char as a parameter itself. - Fixed (LSAPI) internal Tokenize function from not zero'ing arguments param when returning. 2001-06-08 ---------- - Fixed ParseBangCommand() passing bogus argument string to handler, when called without arguments. 2001-05-22 ---------- - Changed Error message in !Execute 2001-04-29 (released) ---------- - Minor cleanup. 2001-04-27 ---------- - Changed some PureLS API functionality around and added some new API. - Fixed (maybe) a problem with apps not running minized that were specified to do so. 2001-04-24 ---------- - Continued revamping of config.dll (all done for now). - Updated LSAPI.DLL wrappers to support changes in config.dll functions. 2001-04-23 ---------- - Added GetRCBoolDef() function to LSAPI.DLL wrapper to support further compatibility with LiteStep - Revamped config.dll functions (mainly parsing routines). It had some minor but fundemental problems. 2001-04-22 ---------- - Rewrote lsapi.dll BangHandlers. Much better now. - Optimized some more code in lsapi.dll - Added !LoadModule bang command - Changed !ReloadModule bang command to first unload a module (if its loaded) then reload it. 2001-04-21 ---------- - Fixed potential freezing problems when loading/unloading a module - Optimized some more code in lsapi.dll 2001-04-20 ---------- - Rewrote LSAPI.DLL "LCTokenize()" and "CommandTokenize()" functions and made them wrappers. - Fixed a problem with "SH_API_BreakTokens()" and "SH_API_SimpleToken()" functions. - Updated !Execute command to work with new strict Tokenize routines. 2001-04-18 ---------- - Fixed PureLS not exiting on logoff on Win98 machines - Unfixed PureLS window from being destroyed before modules were unloaded on quit. It caused problems. - Fixed !About box from showing multiple times. Only one box will now be shown. 2001-04-16 (released) ---------- - Umm I think startup.dll is fixed now. *sigh* - Back to MS VC++ compiler for now. - Fixed PureLS window from being destroyed before modules were unloaded on quit. - Other clean up. 2001-04-10 ---------- - Renamed several source files to a more standard naming scheme and changed code around in accordance. 2001-03-27 (released) ---------- - Fixed all the startup.dll problems - Other cleanup - Using slightly modified MinGW header files. - Compiling in MS VC6 with /Za option (strict ANSI C compliance/ no compiler extensions) - Changed about box ever so slightly. 2001-02-15 ---------- - Cleaned and fixed startup.dll - Cleaned up and changed LSExecute() and LSExecuteEx() and ParseBangCommand() and !execute bang command from lsapi.dll wrapper to behave like recent LiteStep builds which is better. - Added support to config.dll to run user defined programs at startup from PureLS Config file settings. - Other misc cleanup. 2001-01-28 (released) ---------- - Fully implemented config.dll parsing and other things