The EverythingSearchClient has now the capability to return the search result sorted. The new release v0.4 is available on Github and as NuGet package.

The addition was sort of straight forward, as the functionality to return the search results sorted is implemented in Everything itself. I just ported the respective configuration flags into my CSharp client library and extended the code which creates the interprocess communication query (version 2).

With this, I currently have no further features planned for my EverythingSearchClient. I am already using it in a couple of my own projects. If you use it as well, I would be happy to hear it. :-)

I added another new tool to my Tiny Tools Collection: ToggleDisplay

Code: https://github.com/sgrottel/tiny-tools-collection/tree/main/ToggleDisplay
Released Binary: https://github.com/sgrottel/tiny-tools-collection/releases/tag/ToggleDisplay-v1.0

It allows you to enable, disable, and toggle a display.

Why? My computer is connected to 2-3 displays. Two computer monitors on my desk for work. And a TV on the other side of the room, e.g. to play games from my computer or to watch video files in style.

Often enough I boot the computer, and then my mouse disappears from the desktop, because I forgot the TV was configured “on” before, and the mouse moved beyond the desktop monitors. Annoying. The built-in feature “Windows-Key + P” is understandably limited to two monitors. So, I always had to press “Windows + P”, then “Further Settings”, wait for the dialog to appear, fiddle around, press apply, … you get my point.

So, I researched the net a bit on how to programmatically enable or disable a display. And there are several free tools to do that. I tried two, and both did not work. Then there is a hack with using a Windows 10 executable on Windows 11. Yeah, no. Ok. Search on!

It turns out, there is an easy API for that: ChangeDisplaySettingsEx. Some experimental code later I was able to deactivate the display, but not to (re-)activate it. Not good enough. Search on!

Some search later, turns out there is a second API, not as simple and with next to no useful documentation: SetDisplayConfig. This one seems to be the API the windows built in display configuration dialog uses. But … how. I found code by “PuFF1k” on StackOverflow (https://stackoverflow.com/a/62038912/552373) who reverse engineered the API calls of the windows dialog. I tried his code, and it works. Nice! Thank you, PuFF1k!

The core of the trick is to not provide any modeInfo data to SetDisplayConfig, and to set all sourceInfo.modeInfoIdx and targetInfo.modeInfoIdx of all paths to DISPLAYCONFIG_PATH_MODE_IDX_INVALID.

Some refactoring and some cleanup later, I have ToggleDisplay, ready to be shared with the world.

By the way, I now also included source code of some of my older tools in this Tiny Tools Collection repository:

I uses that opportunity to also update these projects to recent DotNet runtimes. I did not set up any automated build pipeline or releases. Maybe some other time.

Some time ago I started a section on my website here about tools I use and like. I started that series writing about the Everything search tool by Voidtools, which is lightning fast and awesome.

Since then I integrate Everything into several internal tools of mine. Most of the time, I used the Everything command line client and parsed its output. However, I had some trouble with Unicode file names. Then I looked at Dotnet library solutions, namely Everything .Net Client and EverythingNet. Both are basically only P/Invoke wrappers around the Everything SDK, which itself is a wrapper around Interprocess Calls (IPC) to the Everything service. And so, since I know my stuff around low level techniques like Windows Message based IPC, and since I don’t like wrappers of wrappers of functions, I decided to write a library of my own: Everything Search Client

It is a .Net 6.0 library, completely written in CSharp, with some P/Invoke calls to native Windows functions of the Operating System, and directly talking to the Everything service.

The code is available on Github and the ready-to-use nuget package is on Nuget.org.

If you find it useful and use it in a tool of your own, I would love to hear about it: Used By, How to Contribute

Just recently, I read this article on Golem about Mouse Without Borders (in German).

Mouse Without Borders (http://www.aka.ms/mm)

My current project at work revolves around network communication. For several reasons I cannot work with a single computer and simulated networks, but I need two physical machines to do my work. And I hate switching keyboards and mice all the time. But, I thought, “how many people have such a problem. Surely not many.” So, I accepted it. And now, Mouse Without Borders comes totally unexpected to my aid. Awesome! And it works!

Here is, once again, a small tool the world does not really need.

UrlCollector.zipUrlCollector.zip UrlCollector
[158 KB; MD5: c7b75fcfbd602beec5902f8019f14ebb; Mehr Info]

The UrlCollector is a very small and simple utility. It simply checks whether the windows clipboard contains a single line of text which looks like a Web-URL. If it does, that text line is copied from the clipboard into the program window. E. g. that way you can easily collect several download links from a website for later download, without hitting “Ctrl+V” all the time. Just “Copy link location” does the job.

About two years ago I was tinkering with code for changing the resolutions of my monitors. Of course, I screwed up several times and broke the layout of the icons on my desktop. So I searched the internet for a tiny as-simple-as-it-can-get tool to store and restore the layout of my icons. I did not find any. I mean, I found hundreds, but some were to blown-up by functions I don’t want (background services automatically detecting screen resolution changes, or something like that) and some were shareware.

Shareware!

I mean … WTF?!

Don’t get me wrong. I have nothing against someone earning money with a useful and good-written software, but such a tiny little icon tool. I mean, it’s far less complex than Calc.exe of Notepad. I was really miffed and so I decided to write such a tool by my own and to give it away as freeware. Yes, freeware. Just, because I can.

Dib.1.4.16.0.zipDib.1.4.16.0.zip Desktop Icon Backup
Angeforderte Dateiversion nicht gefunden, zeige stattdessen neuste Version
[378 KB; MD5: 846a6d216e74ad0f09eae94f1f2279d7; Mehr Info]

And here it is: Desktop-Icon-Backup (DIB). Written in C# with Windows Forms and a whole bunch of P/Invoke. It only took me two or three afternoons to make it work. I am absolutely sure that somewhere out there a tool like this exists, and that I missed it, like I missed many others. Who cares? Now the world is blessed with one more freeware. Get it and have fun with it.