另外我的子窗口要打开的程序实际上是一个java的程序窗口(就一个),平时启动都是用java命令行启动的,如果要在C++里面以子窗口打开的话我想知道怎么获取窗口句柄,或者说拿到了句柄能不能把这个窗口给弄到那个子窗口上?如果不行,一般的做法应该是怎么做的?
100分送上~
13 个解决方案
#1
你的问题描述的不够明确
是c++的窗口想拉起java的窗口把? java的程序是b/s还是c/s的?
bs的话,放个chtmlview即可
如果是c/s的话,java的句柄只能拿到虚拟机的外壳句柄,内部拿不到,也没有句柄,可以用spy++试下
1.jni接口映射
2.rpc调用
3.扫描文件,A在数据库,txt中标记,B定时扫描到就做出响应
4.脚本传递,python,js等
是c++的窗口想拉起java的窗口把? java的程序是b/s还是c/s的?
bs的话,放个chtmlview即可
如果是c/s的话,java的句柄只能拿到虚拟机的外壳句柄,内部拿不到,也没有句柄,可以用spy++试下
1.jni接口映射
2.rpc调用
3.扫描文件,A在数据库,txt中标记,B定时扫描到就做出响应
4.脚本传递,python,js等
#2
5.加com对象,java不知道行不行,反正js,vbs这种脚本都支持的
#3
将窗口子类化,干什么都行
#4
是cs的,外壳句柄怎么拿?难道要遍历所有窗口吗?不能直接获取我命令行调用的吗?
另外那个把这个窗口当作自己的内部窗口应该怎么做?其实我想的就是这个窗口能接受我调用程序的各种事件流。我想的话直接换掉HWND应该不行吧?
#5
求详解
#6
你这个是怎么打开的?
这个java代码能不能修改?
是谁到谁的上面?
找子窗口只要 FindWindow 或者 FindWindowEx 就可以了,窗口移动也只要获取获取大小后 MoveWindow 即可。
不能修改java用子类化,在java的窗口里面写入一个dll即可,直接接管整个消息循环。
用python黏连C跟java也可以
这个java代码能不能修改?
是谁到谁的上面?
找子窗口只要 FindWindow 或者 FindWindowEx 就可以了,窗口移动也只要获取获取大小后 MoveWindow 即可。
不能修改java用子类化,在java的窗口里面写入一个dll即可,直接接管整个消息循环。
用python黏连C跟java也可以
#7
也可以用进程间通信来交互。
#8
是java的窗口变成我的子窗口能接受我的事件流,但是java那边我丝毫不能动。
#9
也可以用进程间通信来交互。
java那边我不能做任何变更
#10
Windows的窗口句柄都是全局的。你的程序里可以拿另外一个程序的窗口当自己的用。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
#11
Windows的窗口句柄都是全局的。你的程序里可以拿另外一个程序的窗口当自己的用。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
“适合作为子窗口的新窗口”有误,不是新窗口,是新配置的旧窗口。
#12
Windows的窗口句柄都是全局的。你的程序里可以拿另外一个程序的窗口当自己的用。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
感觉很靠谱,我试试看,多谢!
#13
你的问题描述的不够明确
是c++的窗口想拉起java的窗口把? java的程序是b/s还是c/s的?
bs的话,放个chtmlview即可
如果是c/s的话,java的句柄只能拿到虚拟机的外壳句柄,内部拿不到,也没有句柄,可以用spy++试下
1.jni接口映射
2.rpc调用
3.扫描文件,A在数据库,txt中标记,B定时扫描到就做出响应
4.脚本传递,python,js等
是cs的,外壳句柄怎么拿?难道要遍历所有窗口吗?不能直接获取我命令行调用的吗?
另外那个把这个窗口当作自己的内部窗口应该怎么做?其实我想的就是这个窗口能接受我调用程序的各种事件流。我想的话直接换掉HWND应该不行吧?
用rpc远程过程调用吧,这样什么都解决了
#1
你的问题描述的不够明确
是c++的窗口想拉起java的窗口把? java的程序是b/s还是c/s的?
bs的话,放个chtmlview即可
如果是c/s的话,java的句柄只能拿到虚拟机的外壳句柄,内部拿不到,也没有句柄,可以用spy++试下
1.jni接口映射
2.rpc调用
3.扫描文件,A在数据库,txt中标记,B定时扫描到就做出响应
4.脚本传递,python,js等
是c++的窗口想拉起java的窗口把? java的程序是b/s还是c/s的?
bs的话,放个chtmlview即可
如果是c/s的话,java的句柄只能拿到虚拟机的外壳句柄,内部拿不到,也没有句柄,可以用spy++试下
1.jni接口映射
2.rpc调用
3.扫描文件,A在数据库,txt中标记,B定时扫描到就做出响应
4.脚本传递,python,js等
#2
5.加com对象,java不知道行不行,反正js,vbs这种脚本都支持的
#3
将窗口子类化,干什么都行
#4
你的问题描述的不够明确
是c++的窗口想拉起java的窗口把? java的程序是b/s还是c/s的?
bs的话,放个chtmlview即可
如果是c/s的话,java的句柄只能拿到虚拟机的外壳句柄,内部拿不到,也没有句柄,可以用spy++试下
1.jni接口映射
2.rpc调用
3.扫描文件,A在数据库,txt中标记,B定时扫描到就做出响应
4.脚本传递,python,js等
是cs的,外壳句柄怎么拿?难道要遍历所有窗口吗?不能直接获取我命令行调用的吗?
另外那个把这个窗口当作自己的内部窗口应该怎么做?其实我想的就是这个窗口能接受我调用程序的各种事件流。我想的话直接换掉HWND应该不行吧?
#5
将窗口子类化,干什么都行
求详解
#6
C++里面以子窗口打开java程序
这个java代码能不能修改?
拿到了句柄能不能把这个窗口给弄到那个子窗口上?
找子窗口只要 FindWindow 或者 FindWindowEx 就可以了,窗口移动也只要获取获取大小后 MoveWindow 即可。
不能修改java用子类化,在java的窗口里面写入一个dll即可,直接接管整个消息循环。
用python黏连C跟java也可以
#7
也可以用进程间通信来交互。
#8
你这个是怎么打开的?
C++里面以子窗口打开java程序
这个java代码能不能修改?是谁到谁的上面? 拿到了句柄能不能把这个窗口给弄到那个子窗口上?
找子窗口只要 FindWindow 或者 FindWindowEx 就可以了,窗口移动也只要获取获取大小后 MoveWindow 即可。
不能修改java用子类化,在java的窗口里面写入一个dll即可,直接接管整个消息循环。
用python黏连C跟java也可以
是java的窗口变成我的子窗口能接受我的事件流,但是java那边我丝毫不能动。
#9
也可以用进程间通信来交互。
java那边我不能做任何变更
#10
Windows的窗口句柄都是全局的。你的程序里可以拿另外一个程序的窗口当自己的用。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
#11
Windows的窗口句柄都是全局的。你的程序里可以拿另外一个程序的窗口当自己的用。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
“适合作为子窗口的新窗口”有误,不是新窗口,是新配置的旧窗口。
#12
Windows的窗口句柄都是全局的。你的程序里可以拿另外一个程序的窗口当自己的用。
你可以通过SetWindowLong系列API修改窗口样式,去掉它的WS_POPUP,为它加上WS_CHILD等等,将它修改成适合作为子窗口的新窗口。然后通过SetParent(可能不叫这名,但绝对有这样一个修改窗口父窗口的API)把目标窗口的父窗口改成你的窗口。
不过有很多消息是只有父窗口有的,由父窗口分发给子窗口,这些消息你也需要把它分发下去。至少包括WM_NOTIFY、WM_COMMAND系列消息,但不只这些,还有一些别的消息也需要处理。
感觉很靠谱,我试试看,多谢!
#13
你的问题描述的不够明确
是c++的窗口想拉起java的窗口把? java的程序是b/s还是c/s的?
bs的话,放个chtmlview即可
如果是c/s的话,java的句柄只能拿到虚拟机的外壳句柄,内部拿不到,也没有句柄,可以用spy++试下
1.jni接口映射
2.rpc调用
3.扫描文件,A在数据库,txt中标记,B定时扫描到就做出响应
4.脚本传递,python,js等
是cs的,外壳句柄怎么拿?难道要遍历所有窗口吗?不能直接获取我命令行调用的吗?
另外那个把这个窗口当作自己的内部窗口应该怎么做?其实我想的就是这个窗口能接受我调用程序的各种事件流。我想的话直接换掉HWND应该不行吧?
用rpc远程过程调用吧,这样什么都解决了