(二)尝试使用shellExcute开启electron进程得到实例句柄

--------------------------------------------day 2---------------------------------------
继续学习菜鸟教程中的node.js教程: 

npm start运行的是什么?----在工程项目下看到package.json的内容, scripts项有一个键值对:

(二)尝试使用shellExcute开启electron进程得到实例句柄_第1张图片

, 也就是说, start后会运行 

electron .

中午临时偷鸡-----------继续看nodejs, 匿名函数-------------6666666
看了不少的node.js用来搭建web服务器的一些知识,要记得自己对这些是有一些概念和记忆的!!!————好的,假装自己学完了node.js!!!!!!!!!!
曲线迁回electron:
那么,假如我现在要自己构建那么一个工程项目:
process是node.js的一个全局变量,它用于描述当前Node.js 进程状态的对象--------------参考  http://www.runoob.com/nodejs/nodejs-global-object.html


遇到一个ipc使用on来绑定监听就会报错的问题--------------ipc的获取方式不对,在使用electron的ipc应该是  var ipc = electron.ipcMain; 而不是 var ipc = electron.ipc;


require('app')为什么我会报错,一定要使用electron.app;(electron是一个require引入的electron模块 的实例)————???


接下来,先转手到重心是如何把MFC和electron耦合在一起开发一个混合的桌面应用,那么MFC下面如何加入electron

根据导师的提醒,大概思路是:

在 https://wizardforcel.gitbooks.io/electron-doc/content/api/browser-window.html  下查找对应的API函数,返回窗口句柄,然后生成一个MFC项目,强制设置electron窗口为其子窗口

使用   

console.log(window.getNativeWindowHandle()); 

可以打印出来,不过是一个buffer,如图所示: 

(二)尝试使用shellExcute开启electron进程得到实例句柄_第2张图片

从vs里面看到win32项目的HWND实际上是某个包含一个int类型的结构体的宏取的别名,那么应该是一个有符号整数。

如图测试:

(二)尝试使用shellExcute开启electron进程得到实例句柄_第3张图片

说明 win10是小端,所以buffer转int 我们该使用转成64位(或者转成64位再截取成32位的句柄),使用函数buf.readInt32LE-------------------http://www.runoob.com/nodejs/nodejs-buffer.html

通过测试可以成功的得到句柄值,那么接下里的问题,是如何通过ipc把这个值传给我们的MFC程序呢。

(还有一个问题,就是如何标识我们的MFC程序呢------------用bat启动2个程序,然后在这个bat里面传参吗???)

先解决第一个问题: electron如何通过ipc传递参数给另外一个进程
不对,好像思路错了,我可以直接在MFC里面开这个electron这个进程的吧,然后就可以得到这个进程的实例句柄,直接在MFC里面设置!!!!!
使用shellExecute方法 --------------  http://blog.csdn.net/tcjiaan/article/details/8620731

注意windowsk开发中的字符串的转移字符,比如说  

_T("D:\\software\\notepad\\Notepad++")
那么,通过类似的:  HINSTANCE hins = ShellExecute(NULL, NULL, _T("D:\\software\\notepad\\Notepad++\\notepad++.exe"), NULL, NULL, SW_SHOWNORMAL); 方法就可以运行该程序并且得到该实例句柄

如何看electron安装路径

------------看npm的环境变量,因为在任意环境的命令行下直接输入electron可以运行示例程序,那么说明electron是可以通过环境变量找到的。

找到它的对应路径: C:\Users\admin\AppData\Roaming\npm\electron, 这里要意识到一点就是: 在命令下,其实我们输入一个命令,其实是对应的执行了一个可执行程序那么这个可执行程序我们是可以使用ShellExcute执行的(linux好像是excute)
那么我们平时输入的命令  "electron ." 其实是打开electron这个应用程序,传入参数是当前目录,大胆的猜想,我们把文件放入命令行参数就可以运行了。

是的,没错————

HINSTANCE hins = ShellExecute(NULL, NULL, _T("C:\\Users\\admin\\AppData\\Roaming\\npm\\electron"),_T("C:\\Users\\admin\\Desktop\\electron_example"), NULL, SW_SHOWNORMAL); 

就可以运行了。



你可能感兴趣的:(PC研发实习)