Jun 1
One last update to ArrangeByImage for today
I had a couple of suggestions passed to me today, one to allow drawing in the picture box area and arrange by the drawing, and two to build a few of the pictures into the executable and allow them to be used via a switch.
So for you folks out there who asked, you shall received, I just uploaded ArrangeByImage 1.2 (download from ArrageByImage Page above) which satisfies both requests.
Three new switches have been added “-heart”, “-star”, “-smiley” that will arrange the icons based on one of those three images that are saved in the executable so no additional picture is required.
Finally, there is now a check box that switches the program from selecting a file to allowing you to draw in the image area.
1 commentJun 1
Update to ArrangeByImage
As I attempted to anoy those around me with ArrangeByImage today I realized one major flaw. The original (now updated) code did nothing about the align to grid option on the desktop. I fiddled a bit and found the style that sets that on the desktop and I am now removing “Align To Grid” when you run the program. And in the interest of saving others the effort to find out how this is done here is a code snippet in c# / Win32API. Note this will actually work for any listview which is technically what the desktop is.
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpszClass, string lpszWindow);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
const uint LVM_SETEXTENDEDLISTVIEWSTYLE = 4150;
const uint LVM_GETEXTENDEDLISTVIEWSTYLE = 4151;
const uint LVS_EX_SNAPTOGRID = 524288;
private void turnOffSnapToGrid()
{
IntPtr programmanagerWindow = FindWindow(null, "Program Manager");
IntPtr desktopWindow = FindWindowEx(programmanagerWindow, IntPtr.Zero, "SHELLDLL_DefView", null);
IntPtr listviewWindow = FindWindowEx(desktopWindow, IntPtr.Zero, "SysListView32", null);
HandleRef desktopReference = new HandleRef(null, listviewWindow);
int CurrentSettings = (int) SendMessage(desktopReference, LVM_GETEXTENDEDLISTVIEWSTYLE, IntPtr.Zero, IntPtr.Zero);
IntPtr ptr = new IntPtr(CurrentSettings & ~LVS_EX_SNAPTOGRID);
SendMessage(desktopReference, LVM_SETEXTENDEDLISTVIEWSTYLE, IntPtr.Zero, ptr);
}
No comments
May 30
Updated ArrangeByImage
Made an update to ArrangeByImage so it now supports command line switches. This is in keeping with the general purpose of this site which is to annoy your co-workers. Now you can run ArrangeByIcon on a friends computer and watch their confused face. Have Fun!
No commentsMay 30
Arrange By Image
New app released, ArrangeByImage. My co-worker Mike and I modified some code he found and came up with this. Check out the link for full back story, screen shots, and the app with source code. ArrangeByImage allows you to arrange the icons on your desktop based on the black lines in a bitmap image.
No commentsApr 24
Major Update to Window Hider
I spent the last few days doing a major overhaul on Window Hider. Rebuilt the GUI, added some features, and overall just beefed it up. I also added a page dedicated to Window Hider since it is one of the most popular downloads.
I expanded the hot corner features a little to allow you to choose if the hot corner will only hide the windows or if it will toggle hide and show. I added this feature mostly because when you lock your computer it puts the mouse at 0,0 and will unhide your windows without your knowing it. Also it is a little to easy to hit that corner on accident while your boss is standing there. Set this feature on the settings page.
Second I added the ability to filter the processes based on their title. So now you can have two copies of Internet Explorer for example, one with work on it and the other with hulu or some other favorite site. The filter just looks to see if the title contains the string so partial strings work as well. Further you can leave the process name field blank to just hide all processes by name.
Third I improved the process adding method. Now there is a form that pops up and gathers information so you can more easily define what your looking for. Also I added an icon on the add process dialog that when drug over the top of other windows will fill in the boxes with that windows process and title.
No comments