2016-02-07 12 views
0

好的,所以我在node.js中使用socket.io創建了一個網頁。 這個工程很好,數據將按照它應該發送到每個設備。 現在我想展開,並使用node.js來控制我的電腦。從node.js啓動一個exe,並在它們之間發送數據

我讀過這個:Child Process 並得到這個代碼運行一個可執行文件,並在控制檯打印它的輸出。

var spawn = require('child_process').spawn; 

var ahk = spawn('outsideNode.exe'); 
ahk.stdout.on('data', function(data){ 
    console.log(data.toString()); 
}); 

這裏是啓動的outsideNode.exe的代碼或腳本。 我爲此使用了AutoHotKey。

Loop,10 
{ 
    FileAppend,External program spawned by Node.js says hi!,* 
    Sleep,1000 
} 
ExitApp 

這有效。 Node.js捕獲AHK的輸出。現在,我遇到的問題是,我如何從node.js發送數據?我如何在AHK中收到它? 我確實需要閱讀關於stdio的信息。但我是新來的標準的。

我目前的解決方案是使用Node.js將一個.txt文件寫入磁盤,使用我想要給出的命令,以及一個單獨的.exe文件,該文件讀取.txt並執行該命令並退出。這有效,但它是慢的,只是覺得這樣做是錯誤的。
另外,我希望它是異步的,或同步?在可執行程序執行其任務時,我可以使用node.js執行其他任何事情。現在我必須等待確保文件可以被覆蓋。

任何關於如何這一點的輸入是非常感謝。

+0

如果您之前沒有申報過ahk,請在它前面加var。 – manonthemat

+0

也許這可以幫助你:[NodeJS子進程](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback)。將參數傳遞給.exe:'const bat = spawn('cmd.exe',['/ c','my.bat']);' – ronIDX

回答

0

有一個選項可以將參數傳遞給生成的應用程序。也許這就是你正在尋找的。如何處理你exe中的參數是與其他一些編程語言有關的另一個問題。在節點中,子進程運行異步和非阻塞,這就是你正在尋找的。 但是,如果你想在程序之間進行溝通,你可以寫信給子進程的標準輸入,像這樣:

child.stdin.write("here you go"); 

你的EXE必須能夠等待標準輸入,以便處理輸入數據。

相關問題