netdde
v1.0.2
Published
A JavaScript implementation of the NetDDE protocol
Downloads
21
Readme
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 [email protected]
GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)