Aug 172017

I just moved a Windows 8.1 installation in Virtual Box from one computer to another. When booting up, Windows told me:

This 64-bit application couldn’t load because your PC doesn’t have a 64-bit processor

The host computer is an Intel Xeon CPU which definitely is a 64 bit CPU (the previous computer was an older AMD 6 core CPU which was also 64 bit).

Oddly enough I could not find any solution on the interweb tubes (my Google fu seems to have weakened or maybe Google search isn’t as helpful as it used to be because it tries to guess what the user is searching for rather than simply searching for what he has typed).

It took me a while to figure out what the problem was: For some reason the virtual machine’s configuration had changed on the “General” -> “Basic” page from Version = “Windows 8.1 (64-bit)” to “Windows 7 (32-bit)”. Which apparently means that the CPU reported to the OS is a 32 bit CPU. Changing this back to the original value solved the problem.

Jun 262017

Note to self: If adding a Windows 8.1 computer to a SAMBA domain fails with the error “The specified domain either does not exist or could not be contacted” the following changes to the Registry might help:

Windows Registry Editor Version 5.00

; Enable NT-Domain compatibility mode
; Default:
; [value not present]
; "DomainCompatibilityMode"=-

; Disable required DNS name resolution
; Default:
; [value not present]
; "DNSNameResolutionRequired"=-

; Disable requirement of signed communication
; My Samba (3.0.33) works with signed communication enabled, so no need to disable it.
; Default:
; "RequireSignOrSeal"=dword:00000001
; Disable the usage of strong keys
; Default:
; "RequireStrongKey"=dword:00000001

source: the answer from gigiga in the forum.

May 282017

I blogged about SyncThing before, when BitTorrentSync started to annoy the hell out of me. SyncThing is an open source tool for synchronizing directory trees between different devices without requiring a cloud service (it needs a discovery server though in order to actually find these devices).

There is also an Android app for it as well as a tool called Anyplace Sync Browser that does not sync but allows you to selectively download files from SyncThing directories to your phone.

Unfortunately SyncThing is far from easy to install and configure. It seems easy when you read the documentation (OK, not easy, really, it’s too technical for the average user and is missing a lot of information for professionals) but if anything goes wrong, you are on your own. And something goes wrong every so often, especially when there is an update.

By default, it is a console program that runs in the background (daemon) and on Windows can be made into a service by using e.g. NSSM – the Non-Sucking Service Manager. Configuration is then done via a web interface provided by that program. But there are also native GUI front ends.

The Android app also comes with a UI, but that GUI is atrocious. I have rarely seen a tool with so confusing a UI.

On the bright side, there are programs for Windows, any flavor of Unix you can think of and the aforementioned Android App. When it works, it is great.

I use it for:

  • Sync photos from my phone one way to my desktop PC
  • Sync text files with notes and checklists both ways between my pone and my desktop PC

So, even though I think it is overly complicated, I still like the idea and am using it.

Mar 122017

For my dzComputerInfo tool I created a window without a title that can still be moved with the mouse. This is quite easy to do:

  1. To remove the title, set BorderStyle to bsNone.
  2. To let the user move it with the mouse, add the following message handler:
  TMyForm = class(TForm)
    procedure WMNCHitTest(var Msg: TWMNcHitTest); message WM_NCHITTEST;

procedure TMyForm .WMNCHitTest(var Msg: TWMNcHitTest);
  if (Msg.Result = htClient) then
    Msg.Result := htCaption;

It tells Windows, that the user clicked on the title rather than the client area. Windows then does the rest, and the user can move the window with the mouse as if he clicked on the window title.

If you also want the window to have a context menu, you’ll have to change the message handler, so it does not affect right mouse clicks:

procedure TMyForm .WMNCHitTest(var Msg: TWMNcHitTest);
  Res: SmallInt;
  Res := GetKeyState(VK_RBUTTON);
  if Res >= 0 then
    // only if the right mouse button was not pressed
    // (otherwise the popup menu wont show)
    if (Msg.Result = htClient) then
      Msg.Result := htCaption;
Mar 122017

USB serial converters from FTDI are quite popular. We also use them at work quite a lot because they do not have the problem of the competing products (like Prolific): Windows does not detect devices on them as Microsoft ball point devices.

These converters can be configured interactively using a dialog accessible from the hardware manager’s device property dialog, page “Port Settings” by pressing the “Advanced …” button.

There are various settings, the most common ones to change are

  • COM Port Number
  • BM Options: Latency Timer
  • Miscellaneous Options: Serial Enumerator

The first one is obvious: It sets the COM port number of the emulated serial port. Every converter ever connected to the computer will reserve one COM port, so if you attach many of them you will sooner or later get rather high port numbers which many tools cannot use. The workaround is to force the driver to use a particular COM port here.

The second one, Latency Timer is not that obvious: It sets the latency timer in milliseconds to be used when the data received is not large enough to fill the buffer. Reducing this value from the default 16 to e.g. 4 solves many problems where data is being received with a delay of several seconds (e.g. the GPS position displayed is lagging behind your vehicle position by several seconds, which results in several 10th of metres at higher velocities. I have seen 4 seconds which at 60 km/h equals about 80 metres.)

The last one, Serial Enumerator, solves the Microsoft Ball Point detection mentioned above. As long as it is checked and a device is attached that sends data, Windows might mistakenly think it’s a mouse and the mouse cursor will jump all around the screen and even randomly click everywhere. This is quite annoying when it happens (and it happens very often when you connect a GPS). To resolve the problem, uncheck this option.
(Btw: Microsoft Ball Point devices have not been in use for over a decade, but the bug is still present in Windows XP, 7 and 8/8.1. (don’t know about Windows 10) despite users having problems because of it for many years. Shame on you, Microsoft!)

dzEditorLineEndsFix 1.0.3 released

 Delphi, Uncategorized, Windows, Windows 8.1  Comments Off on dzEditorLineEndsFix 1.0.3 released
Jan 212017

I have released a new version of my dzEditorLineEndsFix tool for Delphi 2006 to 2010. There is only one change: I removed the balloon hint it used to show at startup. It started to annoy the hell out of me (and I’m probably not the only one).

The tool also now has its own page on this blog.

Filter multiple criteria in Windows Explorer

 Uncategorized, Windows, Windows 7, Windows 8.1  Comments Off on Filter multiple criteria in Windows Explorer
Nov 092016

Note to self: It is possible to filter on multiple criteria – e.g. extensions – in Windows Explorer by combining them with OR:

.txt OR .doc
  • The OR must be written all upper case (AND is also possible).
  • *.txt will not work
  • It will search recursively
  • A semicolon (as in file filters) does not work.

More on filtering, grouping and searching here.

Force “unidentified networks” to be private or public in Windows 7

 Uncategorized, Windows, Windows 7  Comments Off on Force “unidentified networks” to be private or public in Windows 7
Oct 282016

Windows 7 has got an annoying feature that categorises network connections to be public, home or work networks. This might work for others but it has never worked for me. Even worse, for some reason the link that usually allows the user to change the network type sometimes is not available.

Microsoft even has got Knowledge base entry KB2578723 for that problem, which unfortunately didn’t work for me. I could change the current network, but after a reboot it again categorised the same network as unidentified network and public.

The solution is described in this article on Either use the Local Security Policy editor or RegEdit to change the setting how to treat unidentified networks. This setting is usually missing from the registry, so the keys must be created first. The easiest way to do that is the .reg file you can download from the page linked above. It looks like this:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\010103000F0000F0010000000F0000F0C967A3643C3AD745950DA7859209176EF5B87C875FA20DF21951640E807D7C24]

As I said: the registry keys don’t exist by default. Creating them manually is difficult because of the long number Microsoft chose to use, so it was either the Policy Editor or the .reg file for me. I took the Policy Editor approach but later verified that it created the registry entry shown above, so it’s probably safe to just use the .reg file.

Getting the system boot time in Windows

 Uncategorized, Windows  Comments Off on Getting the system boot time in Windows
Oct 132016

Today I needed to get the system boot time of my computer.

You can either open the system log and look for the entries a Windows start up writes there, or you can let a tool do the work:

@echo off
systeminfo | find "System Boot Time"

In my case the result looks like this:

System Boot Time:          13.10.2016, 09:14:50
Press any key to continue . . .

There are a lot more options, detailed in this answer on StackOverflow.

%d bloggers like this: