Skip to content

Commit 870e495

Browse files
authored
Merge pull request #6 from elderapo/master
Windows support
2 parents 31e90c4 + 8ed9be7 commit 870e495

File tree

5 files changed

+258
-2
lines changed

5 files changed

+258
-2
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ results
1313
node_modules
1414

1515
npm-debug.log
16+
!adjust_get_current_system_volume_vista_plus.exe
11 KB
Binary file not shown.

impl/windows/index.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
var spawn = require('child_process').spawn;
2+
var path = require('path');
3+
4+
var executable = path.join(__dirname, 'adjust_get_current_system_volume_vista_plus.exe');
5+
6+
var runProgram = function(args, done) {
7+
args = args === '' ? [] : args.toString().split(' ');
8+
done = done || function () {};
9+
10+
var ret = '';
11+
var err = null;
12+
var p = spawn(executable, args);
13+
14+
p.stdout.on('data', function (data) {
15+
ret += data;
16+
});
17+
18+
p.stderr.on('data', function (data) {
19+
err = new Error('Windows Script Error: ' + data);
20+
});
21+
22+
p.on('close', function () {
23+
if (err) return done(err);
24+
25+
return done(null, ret.trim());
26+
});
27+
};
28+
29+
var getVolumeInfo = function(done) {
30+
done = done || function () {};
31+
32+
runProgram('', function(err, strArgs) {
33+
if (err) return done(err);
34+
35+
const args = strArgs.split(' ');
36+
const info = {
37+
volume: parseInt(args[0]),
38+
isMuted: parseInt(args[1]) ? true : false
39+
};
40+
41+
return done(null, info);
42+
});
43+
};
44+
45+
var getVolume = function(done) {
46+
done = done || function () {};
47+
48+
getVolumeInfo(function(err, info) {
49+
if (err) return done(err);
50+
51+
return done(null, info.volume);
52+
});
53+
};
54+
55+
var setVolume = function(val, done) {
56+
val = val || 0;
57+
done = done || function () {};
58+
59+
runProgram(val, function(err) {
60+
if (err) return done(err);
61+
62+
return done(null);
63+
});
64+
};
65+
66+
var getMuted = function(done) {
67+
done = done || function () {};
68+
69+
getVolumeInfo(function(err, info) {
70+
if (err) return done(err);
71+
72+
return done(null, info.isMuted);
73+
});
74+
};
75+
76+
var setMuted = function(val, done) {
77+
val = val ? 'mute' : 'unmute';
78+
done = done || function () {};
79+
80+
runProgram(val, function(err) {
81+
if (err) return done(err);
82+
83+
return done(null);
84+
});
85+
};
86+
87+
module.exports = {
88+
getVolume: getVolume,
89+
setVolume: setVolume,
90+
getMuted: getMuted,
91+
setMuted: setMuted
92+
};

index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ var impl = null;
44

55
switch(os.type()) {
66
case 'Darwin':
7-
impl = require('./impl/darwin.js');
7+
impl = require('./impl/darwin');
88
break;
99
case 'Linux':
10-
impl = require('./impl/linux.js');
10+
impl = require('./impl/linux');
11+
break;
12+
case 'Windows_NT':
13+
impl = require('./impl/windows')
1114
break;
1215
default:
1316
throw new Error('Your OS is currently not supported by node-loudness.');

package-lock.json

Lines changed: 160 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)