Der EverythingSearchClient kann nun seine Suchergebnisse sortiert zurückgeben. Der entsprechende neue Release v0.4 ist auf Github und als NuGet-Packet verfügbar.

Die Funktion die Suchergebnisse sortiert zu liefern zu können war einfach einzubauen, da sie hauptsächlich im Everything-Service selbst implementiert ist. I musste nur die entsprechenden Flags für die Query-v2 Interprozess-Communications-Anfrage in meine CSharp-Client-Bibliothek übernehmen.

Damit habe ich nun keine aktuellen Pläne für weitere Funktionen in meinem EverythingSearchClient. Ich benutze die Library bereits in ein paar meiner eigenen Projekte. Wenn Ihr sie auch benutzt, dann würde ich mich freuen das zu hören. :-)

Ich habe ein weiteres neues Tool zu meiner Tiny Tools Collection hinzugefügt: ToggleDisplay

Code: https://github.com/sgrottel/tiny-tools-collection/tree/main/ToggleDisplay
Ausführbare Datei: https://github.com/sgrottel/tiny-tools-collection/releases/tag/ToggleDisplay-v1.0

Damit könnt Ihr Displays aktivieren, deaktivieren und umschalten.

Warum das? Mein Computer ist an 2-3 Bildschirme angeschlossen. Zwei Computermonitore auf meinem Schreibtisch für die Arbeit. Und ein Fernseher auf der anderen Seite des Raumes, z.B. um Spiele von meinem Computer aus zu spielen oder um Videodateien in Ruhe anzusehen.

Oft genug fahre ich den Computer hoch, und dann verschwindet meine Maus vom Desktop, weil ich vergessen habe, dass der Fernseher vorher „an“ war, und die Maus hat sich über die Desktop-Monitore hinaus bewegt. Das ist ärgerlich. Die eingebaute Funktion „Windows-Taste + P“ ist verständlicherweise auf zwei Monitore beschränkt. Also musste ich immer „Windows + P“ drücken, dann „Weitere Einstellungen“, warten, bis der Dialog erscheint, herumfummeln, auf „Übernehmen“ drücken, … Ihr versteht, was ich meine.

Also habe ich im Internet recherchiert, wie man eine Anzeige programmgesteuert aktivieren oder deaktivieren kann. Und es gibt mehrere kostenlose Tools, mit denen das möglich ist. Ich habe zwei ausprobiert, und beide haben nicht funktioniert. Dann gibt es einen Hack, bei dem eine ausführbare Datei von Windows 10 unter Windows 11 verwendet wird. Ja, nein. Also gut. Suchen Sie weiter!

Es stellt sich heraus, dass es eine einfache API dafür gibt: ChangeDisplaySettingsEx. Nach einigen Experimenten konnte ich die Anzeige deaktivieren, aber nicht (wieder) aktivieren. Nicht gut genug. Weiter suchen!

Kurz später stellt sich heraus, dass es eine zweite API gibt, die nicht so einfach ist und für die es so gut wie keine brauchbare Dokumentation gibt: SetDisplayConfig. Dies scheint die API zu sein, die der in Windows eingebaute Dialog zur Anzeigekonfiguration verwendet. Aber … wie. Ich fand Code von „PuFF1k“ auf StackOverflow (https://stackoverflow.com/a/62038912/552373), der die API-Aufrufe des Windows-Dialogs zurückentwickelt hat. Ich habe seinen Code ausprobiert, und es funktioniert. Toll! Vielen Dank, PuFF1k!

Im Kern ist der Tricks, keine modeInfo-Daten an SetDisplayConfig zu übergeben, und alle sourceInfo.modeInfoIdx und targetInfo.modeInfoIdx aller Paths auf DISPLAYCONFIG_PATH_MODE_IDX_INVALID zu setzen.

Ein paar Überarbeitungen und Aufräumarbeiten später habe ich ToggleDisplay, bereit, mit der Welt geteilt zu werden.

Übrigens habe ich jetzt auch den Quellcode einiger meiner älteren Tools in dieses Tiny Tools Collection Repository aufgenommen:

Bei dieser Gelegenheit habe ich auch diese Projekte auf die neuesten DotNet-Laufzeiten aktualisiert. Eine automatisierte Build-Pipeline oder Releases habe ich nicht aufgesetzt. Vielleicht ein anderes Mal.

Vor einiger Zeit habe ich hier auf meiner Website einen Abschnitt über Tools eingerichtet, die ich benutze und mag. Ich hab diese Serie begonnen, indem ich über das Suchtool Everything von Voidtools geschrieben hatte, das superschnell und großartig ist.

Seitdem habe ich Everything in verschiedene interne Tools von mir eingesetzt, meist über das Everything-CLI und parsen dessen Ausgabe. Allerdings hatte ich einige Probleme mit Unicode-Dateinamen. Dann habe ich mir Dotnet-Libraries angesehen, vor allem Everything .Net Client und EverythingNet. Beide sind im Grunde P/Invoke-Wrapper um das Everything SDK, das selbst ein Wrapper um Interprocess Calls (IPC) zum Everything-Dienst ist. Und da ich mich mit Low-Level-Techniken wie Windows-Message-basierender IPC auskenne und ich keine Wrapper von Wrapper von Funktionen mag, habe ich beschlossen, eine eigene Library zu schreiben: Everything Search Client

Es ist eine .Net 6.0 Bibliothek, komplett in CSharp geschrieben, mit einigen P/Invoke-Aufrufen zu nativen Windows-Funktionen des Betriebssystems und direkter Kommunikation mit dem Everything-Dienst.

Der Code ist auf Github verfügbar und das fertige Nuget-Paket ist auf Nuget.org.

Wenn Sie es nützlich finden und es in einem eigenen Tool verwenden, würde ich mich freuen, davon zu hören: Used By, How to Contribute

Ich stelle vor, ein neues kleines Tool für einen sehr spezifischen Zweck: OpenHere

Es findet laufende Instanzen des Windows Datei-Explorers. Von der obersten Instanz holt es sich den geöffneten Pfad und alle ausgewählten Dateien. Per Befehlszeilenanwendung können diese Informationen abgerufen werden. Oder die GUI-Anwendung erlaubt in einem Fenster eines von bis zu zwölf konfigurierten Programmen auszuwählen und zu öffnen.

Meine Tastatur hat mehrere frei belegbare Makrotasten, die ich jahrelang nicht benutzt habe. Ganz einfach, weil ich keine Ahnung hatte, was ich mit ihnen anfangen sollte. Dann kam Windows 11. Eine der vielleicht am meisten kritisierten Funktionen ist das neue Kontextmenü im Dateiexplorer, in dem die meisten Funktionen versteckt sind, die man für Dateien und Ordner aufrufen kann oder eben auch nicht. Da dachte ich mir, es wäre doch schön, über die Makrotasten etwas für die ausgewählte Datei auszulösen, z. B. das Öffnen in Notepad++ oder das Öffnen des gesamten Ordners in Visual Studio Code oder in Fork oder so etwas. Und genau dafür habe ich OpenHere geschrieben.

Ich habe einiges über Low-Level-Funktionen zu Icons gelernt, z.B. das konsequente und korrekte Laden dieser in großen Auflösungen, und ich habe mehr Erfahrung im Umgang mit WPF sammeln können.

Heute habe ich eine neue Version meines Checkouts-Overview-Tools veröffentlicht.

Version 1.1 bringt neue Funktionen, Verbesserung des Scannens der Festplatten zum Finden neuer Repository-Checkouts und die Möglichkeit beim Update von Entry-Status-Informationen auch ein git fetch durchzuführen.

Ein paar kleinere Verbesserungen der Benutzeroberfläche erzeugen ein konsistenteres Aussehen.

Ladet den neue Release von Github herunter: Release Feature Release v1.1 – Better Disk Scanning and Git Fetch · sgrottel/checkouts-overview (github.com)

Ich habe ein neues Tool in meinem Software-Werkzeugkasten: KeePass HotKey ist ein Wrapper-Programm zum Öffnen einer KeePass-DB oder zum Auslösen der Auto-Type-Funktion.

Dieses Tool ist sehr spezifisch für meinen Anwendungsfall:

  • Ich möchte eine Aktion über eine spezielle Hardware-Taste auf meiner Tastatur auslösen
  • Diese Aktion soll entweder eine bestimmte, vom Benutzer konfigurierte KeePass-Datenbankdatei öffnen oder
  • die „auto-type selected“-Funktion von KeePass auslösen, wenn eine KeePass-Instanz geöffnet ist, läuft und einen ausgewählten Eintrag hat.

Quellcode und releaste Binaries sind auf Github verfügbar.