fork(7) download
  1. #include <node.h>
  2. #include <v8.h>
  3.  
  4. #include <windows.h>
  5. #include <stdio.h>
  6. #include <conio.h>
  7. #include <tchar.h>
  8. //#include <iostream>
  9.  
  10.  
  11. v8::Handle<v8::Value> MultiConcat(const v8::Arguments& args){
  12. v8::HandleScope scope;
  13. v8::Handle<v8::String> string = v8::String::New("");
  14.  
  15. if(! args[0]->IsArray())
  16. {
  17. return scope.Close(args[0]);
  18. }
  19.  
  20. v8::Handle<v8::Array> array = v8::Handle<v8::Array>::Cast(args[0]);
  21.  
  22. for(unsigned int i = 0; i < array->Length(); i++)
  23. {
  24. string = v8::String::Concat(string, array->Get(i)->ToString());
  25. }
  26.  
  27. return scope.Close(string);
  28. }
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. v8::Handle<v8::Value> Method(const v8::Arguments& args){
  36. // v8::Isolate* isolate = v8::Isolate::GetCurrent();
  37. v8::HandleScope scope;
  38.  
  39. DWORD dwSizeNeeded;
  40. DWORD dwNumItems;
  41. LPPRINTER_INFO_2 lpInfo = NULL;
  42.  
  43. EnumPrintersW(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &dwSizeNeeded, &dwNumItems);
  44.  
  45. lpInfo = (LPPRINTER_INFO_2) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSizeNeeded);
  46. if(lpInfo == NULL)
  47. {
  48. return scope.Close(v8::String::New("{\"error\": \"Not enough memory to enumerate printers.\"}"));
  49. }
  50.  
  51. if(EnumPrintersW(PRINTER_ENUM_LOCAL, // what to enumerate
  52. NULL, // printer name (NULL for all)
  53. 2, // level
  54. (LPBYTE)lpInfo, // buffer
  55. dwSizeNeeded, // size of buffer
  56. &dwSizeNeeded, // returns size
  57. &dwNumItems // return num. items
  58. ) == 0)
  59. {
  60. return scope.Close(v8::String::New("{\"error\": \"EnumPrinters() failed.\"}"));
  61. }
  62.  
  63. v8::Handle<v8::Array> printerList = v8::Array::New(dwNumItems);
  64.  
  65. for(unsigned int i = 0; i < dwNumItems; i++)
  66. {
  67. v8::Handle<v8::Array> printer = v8::Array::New(10);
  68.  
  69. printer->Set(v8::Integer::New(0), v8::String::New("\"printer\":"));
  70. printer->Set(v8::Integer::New(1), reinterpret_cast<char*>(lpInfo[i].pPrinterName));
  71. printer->Set(v8::Integer::New(2), v8::String::New("\"port\":"));
  72. printer->Set(v8::Integer::New(3), reinterpret_cast<char*>(lpInfo[i].pPortName));
  73. printer->Set(v8::Integer::New(4), v8::String::New("\"driver\":"));
  74. printer->Set(v8::Integer::New(5), reinterpret_cast<char*>(lpInfo[i].pDriverName));
  75. printer->Set(v8::Integer::New(6), v8::String::New("\"comments\":"));
  76. printer->Set(v8::Integer::New(7), reinterpret_cast<char*>(lpInfo[i].pComment));
  77. printer->Set(v8::Integer::New(8), v8::String::New("\"location\":"));
  78. printer->Set(v8::Integer::New(9), reinterpret_cast<char*>(lpInfo[i].pLocation));
  79.  
  80. printerList->Set(i, printer);
  81. }
  82.  
  83. // free memory
  84. HeapFree(GetProcessHeap(), 0, lpInfo);
  85.  
  86. return scope.Close(printerList);
  87. }
  88.  
  89. void init(v8::Handle<v8::Object> target){
  90. target->Set(v8::String::NewSymbol("getPrinters"),
  91. v8::FunctionTemplate::New(Method)->GetFunction()
  92. );
  93. }
  94. NODE_MODULE(printers, init)
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:18: error: node.h: No such file or directory
prog.cpp:2:16: error: v8.h: No such file or directory
prog.cpp:4:21: error: windows.h: No such file or directory
prog.cpp:6:19: error: conio.h: No such file or directory
prog.cpp:7:19: error: tchar.h: No such file or directory
prog.cpp:11: error: 'v8' has not been declared
prog.cpp:11: error: expected constructor, destructor, or type conversion before '<' token
stdout
Standard output is empty