NCH Software Home
Home | | Support | Products | SiteMap

Express Dictate Software Development Kit

Note: This Page is Intended for Programmers Only

This is the Software Development Kit (SDK) for programmers to integrate Express Dictate as part of other software or larger systems.

There are 2 components which can be used with Express Dictate:

  • The Express Dictate API. This lets other applications run Express Dictate, open files, add data, retrieve information and send files. The Express Dictate API is set out below.
  • ETOOLs. This lets other applications extract information packed in the dct files (for file management, delegation etc.). Etools can be downloaded from www.nch.com.au/etools.

  Back to top


Express Dictate API
The Express Dictate API is used to let other programs control Express Dictate.

You need Express Dictate v 3.06 or above to use this API. All examples and demonstrations below are shown in C++ but we hope you will have no difficulty in implementing the same functions using other languages (for example Visual Basic). The procedures below use a number of Windows 32 API functions (eg. FindWindowEx, SendMessage etc.). If you need to know more about these functions and how to use them, refer to the Microsoft Windows 32 API documentation.

  Back to top


Running Express Dictate
Before any of the function calls below can be called, Express Dictate must be running. To do this use WinExec, ShellExecute or CreateProcess to open:
  "C:\Program Files\NCH Swift Sound\Express\express.exe"
If your program does launch Express Dictate, you will need to wait for it to create its window before FindWindow will succeed (see below).

  Back to top


Sending Commands to Express Dictate
Commands are sent to the Express Main Window. You first need to find the window "Express Dictate" using FindWindowEx and then use SendMessage to send a Express Dictate Command Message to it (hex 7fff). Use code like this: #define EDAPI_WINDOWCAPTION "Express Dictate" #define WM_EDAPI_COMMAND 0x7fff int EDAPISendCommand(int iCommand, LPARAM ExtraData) { HWND hwnd = FindWindowEx(NULL, NULL, NULL, EDAPI_WINDOWCAPTION); if (hwnd == NULL) { // Express Dictate not running. // Either attempt to run Express Dictate // or spit out error message here... return 0; } return SendMessage(hwndIVM, WM_EDAPI_COMMAND, iCommand, ExtraData); } Most commands do not use the ExtraData parameter so we can also define: inline int EDAPISendCommandSimple(int iCommand) { return EDAPISendCommand(iCommand, 0); } If the command requires a string, you must use a Windows ATOM object to pass the string as shown in the following code. It is important to note your code must delete the ATOM using GlobalDeleteAtom after SendMessage returns. int EDAPISendCommandString(int iCommand, const char* szStringToSend) { ATOM atomExtraInfo = GlobalAddAtom(szStringToSend); int iReturnValue = EDAPISendCommand(iCommand, (LPARAM)atomExtraInfo); GlobalDeleteAtom(atomExtraInfo); return iReturnValue; }   Back to top
EDAPI Commands
Each command has a number which is sent to Express Dictate using one of the above EDAPISendCommand functions. inline int EDAPIGetVersion() { return EDAPISendCommandSimple(0); } // Returns the current API version which is currently 1. // If 0 is returned the API is not available. // If 2 or above is returned please contact us for updated documentation. inline void EDAPIOpen() { EDAPISendCommandSimple(1); } // Opens the Express Dictate window and brings it to the front. inline void EDAPIHide() { EDAPISendCommandSimple(2); } // Hides Express Dictate (minimizes it to the task bar). inline void EDAPIExit() { EDAPISendCommandSimple(3); } // Exits Express Dictate (quits - no further commands will be accepted). inline void EDAPINew() { EDAPISendCommandSimple(4); } // Creates a new dictation and selects that file inline void EDAPIRename(const char* szNewDictationName) { EDAPISendCommandString(5, szNewDictationName); } // Renames the current dictation inline void EDAPISetData(const char* szData) { EDAPISendCommandString(6, szData); } // Adds data to the dictation notes. // Usually this should be in tagged xml form. // eg. EDAPISetData("<caseno>123456</caseno>"); // As many data fields can be set as required. // This data can be extracted from the sent dct files // using etools www.nch.com.au/etools if required. inline int EDAPIGetUserID() { return EDAPISendCommandSimple(7); } // Returns the registration ID of the current user. // The registration ID of each user will always be unique. // Together with the file number, the user ID and // file number can be used to uniquely identify any file // in the system. // The UserID is also included in the dct header. See // www.nch.com.au/etools for more. inline int EDAPIGetFileNo() { return EDAPISendCommandSimple(8); } // Returns the unique file ID of the current file. // The FileNumber is also included in the dct header. See // www.nch.com.au/etools for more. inline void EDAPISend() { EDAPISendCommandSimple(9); } // Sends the current dictation to the default recipient inline void EDAPIDelete() { EDAPISendCommandSimple(10); } // Deletes the current dictation   Back to top

Changing Express Dictate Settings
Express Dictate settings are contained in the file "C:\Program Files\NCH Swift Sound\Express Dictate\settings.ini". Open the file with Notepad to view the 'raw' settings. To change these settings from within your program using the Windows 32 API command WritePrivateProfileString.

  Back to top


Adding other functions to the Express Dictate API
If you need to be able to control other functions of Express Dictate from within your program, you can retain us to add the feature for you. Costs start from around $US150 depending on complexity. To request a quote, please write to us via our Contact Us page with an email that begins "We would like to request a quote to expand Express Dictate API to do the following...".

  Back to top


Other Information
If you have problems writing your application, please visit our Express Dictate Technical Support page.

We also offer corporate software development services if you want us to do the development for you or if you need more substancial changes to Express Dictate. Costs start from around $US150 for a simple function but can increase to $10,000+ for development of a complete new release application. For more information please visit our Software Development page.

We can also rebrand Express Dictate with your logo and details for a small fee (see www.nch.com.au/reseller for more information).

You can distribute the Express Dictate install file with your software (but you may not under any circumstances distribute registration keys or seek to undermine the registration system). See the Express Dictate license terms (on the Help file). Normally your customers would purchase the Express Dictate licenses directly from us. We also provide easy license terms if you do need to distribute registered versions of Express Dictate. Please see www.nch.com.au/reseller under the Software Blanket license heading.

  Back to top

Useful links

Questions (FAQs)
Technical Support
Make a suggestion
Report a bug

Top | Privacy | Legal | Home
© NCH Software