netdde

1.0.2 • Public • Published

NetDDE

A JavaScript implementation of the NetDDE protocol.

The goal with this package is to be able to exchange data with a Windows computer running the server side of Chris Oldwood's DDE Network Bridge from a Node.JS program. NetDDE's terminology and limitations apply here.

Usage

For a detailed API specification please check the generated JSDoc

const { NetDDEClient, Constants } = require('netdde');
 
let excel = new NetDDEClient('EXCEL', { host: '127.0.0.1' /*, port: 8888 */ });
excel.connect().then(async () => {
 
    //gets the content of cell A2 on Sheet1
    console.log(await excel.request('Sheet1', 'r2c1'));
    //gets the content of the range A1:C4 on Sheet1
    console.log(await excel.request('Sheet1', 'r1c1:r4c3'));
 
    //writes 'Hello World!' on cell B42
    console.log(await excel.poke('Sheet2', 'r42c2', Constants.dataType.CF_TEXT, 'Hello World!'));
 
    //execute a command (simulate it's being typed on the keyboard)
    console.log(await excel.execute('System', "I'm a cell content\r\n"));
 
    //listen for changes on an item (cell A1)
    await excel.advise('Sheet 1', 'r1c1', Constants.dataType.CF_TEXT);
    excel.on('advise', d => {
        console.log(`Cell on ${d.item} of ${d.topic} changed to ${d.data}`);
    });
    //stop listening to changes on it
    await excel.stopAdvise('Sheet 1', 'r1c1', Constants.dataType.CF_TEXT);
 
    //this gets emitted when a topic disconnects (sheet is closed, for example)
    excel.on('topic_disconnect', topic => {
        /* Note this will be fired only for existing
           conversations, that is, something has been
           already send over this topic*/
        console.log(`${topic} is not there anymore :(`);
    });
 
    //get emitted when the connection closes, regardless the reason
    excel.on('close', () => console.log('Bye!'));
 
    //closes all running conversations and disconnect
    await excel.disconnect();
});

References

This node was created by Smart-Tech as part of the ST-One project.

Special thanks to Chris Oldwood's work shared to the community!

License

Copyright: (c) 2019, Smart-Tech, Guilherme Francescon Cittolin guilherme.francescon@netsmarttech.com

GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)

Readme

Keywords

Package Sidebar

Install

npm i netdde

Weekly Downloads

9

Version

1.0.2

License

GPL-3.0-or-later

Unpacked Size

99.7 kB

Total Files

16

Last publish

Collaborators

  • fernandoamorim
  • daniel.michalichyn
  • gfcittolin
  • machadotiago