Programmer Resources

Access to WriteLog’s automation interfaces from .NET

Here is an example of how to automate WriteLog:

Plug a keyboard shortcut processor into WriteLog

WriteLog will load and call your .NET assembly on its keyboard shortcut interface. This feature is separate from, but builds on, the automation interfaces. That is, this keyboard shortcut interface plugs into WriteLog and it calls your code on certain WriteLog events. The automation interface, by contrast, is your way to call WriteLog to get WriteLog do do things for your application. Your keyboard shortcut assembly can be that application, but literally any Windows application can connect to WriteLog’s automation interface and call it. There are two examples published on github. All are useful in their own regard:
The first is simpler and therefore has less code to wade through to understand. The second is a high performance SO2R keyboard accelerator that has already been used at 8P5A to win a couple of ARRL DX contests.The third is an example of how to split a keyboard shortcut processor across the control-site/remote-site split when doing WriteLog Remote Control.

A WriteLog Rig Repeater utility

The WriteLog Rig Repeater is an application that publishes WriteLog’s rig frequencies on the local network. Its documentation page is here. Its sources are available here: A read-to-run binary is available. Instructions:

  • Download the zip:
  • Choose a permanent location on your PC for it.
  • Unzip to that location.
  • Double click RigRepeaterNotes.htm to see how to use it.
  • Run RigRepeater.exe


Download and execute this file:

As of version 10.27, WriteLog supports add-in drivers for RTTY TNCs written in C++. This download is for programmers that would like to add support for a TNC to RttyRite. It shows up as a new entry in the “TU Type” menu in RttyRite.

Rig Drivers and Front Panels

Download and execute this file:

As of version 10.25, WriteLog supports add-in rig drivers and rig front panels. This zip file is documentation and sample code for how to write a rig driver and a front panel in either Visual Basic or C++. The samples are compatible with Microsoft VB version 5 or later, and C++ version 5 or later.

Read more about WriteLog Rig Drivers and Front Panels.

WriteLog Contest Wizard

C++ expertise and either Microsoft Visual Studio 2008 or Visual Studio 2013 is required. Modules developed with Visual Studio 2008 can be installed with WriteLog version 11 and version 12. Those developed with Visual Studio 2013 can only be installed on WriteLog 12. The wizard is published here:

Win7 installation for contest modules

The latest contest wizard, above, generates a WIX installer. Otherwise, developers of older modules need to know that Win7 strongly discourages self-registration of dlls. The installer for any WriteLog add-in (including multiplier modules) should instead explicitly make the necessary registry entries for its COM objects. Your installer should make three entries, which are shown here by example:

[HKEY_CLASSES_ROOT\CLSID\{YourGuid-7716-101A-AA54-00608C61D0B1}\Implemented Categories\{C7212159-7716-101A-AA54-00608C61D0B1}]

@=”d:\\Program Files (x86)\\WriteLog\\Programs\\10m32.dll”

@=”ARRL 10m Contest”

The bold-face GUID is the guid you generated for your module. The “Implemented Categories” GUID is to appear literally in your registry entry. The InprocServer32 value points to your .dll’s full path. And the WritelogMMD value is the string that appears in WriteLog’s user interface to identify your module.

Programmer’s Note:

Note about WriteLog version 10.77–change in install.

Any multiplier module that installs an INI file in WriteLog’s \Programs directory is likely broken by the installer change in 10.77. That version separated the INI files (and other data files, like the DXCC CTY files) into a separate installation directory. The simple fix for end users is to move such INI files into WriteLog’s new common data directory (which is differently located for different versions of Windows, e.g. on Vista/Win7 it is ProgramData).

The correct behavior for multiplier module installers is to locate their binary files by reading writelog.ini for [Install]Directory and append “Programs\” for the dll files. For data files, read writelog.ini for [Multipliers]Location and locate the ini files there. This strategy for install will work for existing installs of recent versions of WriteLog both before and after 10.77. Unfortunately, any modules installed prior to 10.77 will break when the end user upgrades to 10.77 (because that version changes the value of the [Multipliers]Location INI entry but does not move your INI files automatically.) The end user will have to patch that problem.

Modules who’s source code was generated by the wizard from should not need any code changes. The generated code looks for the INI files at the [Multipliers]Location writelog.ini entry. Its the installer for such modules that will have an issue.

Keyer Demo

Download and execute this file: (00/07/07)

The multi-function keyer enables paddle input, two-radio CW, PTT and antenna relay support and headphone audio switching all on a COMM port shared with radio control. You can control the keyer from your program as well. Here are some examples.