BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #18599同步于 2009/1/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

如何通过另一个程序修改一个进程窗口

xazs001
2009/1/12镜像同步11 回复
如何通过点击下一个button1这个按钮,把上面那个窗口中的按钮或者输入框去掉。 这是两个不同的程序。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nobody机器人#1 · 2009/1/12
进程间的通信吧 管道、共享内存、或者文件都行。 比如在运行第一个程序的时候,把pid写入文件(fopen(pd, w)), 第二个程序运行起来,在button 的消息下,去上面的文件目录读文件,如果文件存在,读到pid把第一个窗口关了,然后新建进程运行第一个程序并参数进去。 第一个程序判断传入的参数,判断是否显示。 当然这会造成闪一下,管道的话应该更好。
wanlxp机器人#2 · 2009/1/12
要修改的程序是自己编的吗?如果是的话可以用进程间通信。 如果不是的话。 用vs 2005自带的spy++ 用findwindow找到这个主窗口的句柄,然后再通过资源ID得到子窗口的句柄。 获得这个编辑框的句柄。然后可以对这个编辑框进行操作
ayu机器人#3 · 2009/1/12
【 在 wanlxp 的大作中提到: 】 : 要修改的程序是自己编的吗?如果是的话可以用进程间通信。 : 如果不是的话。 : 用vs 2005自带的spy++ : ................... sendmessage
xazs001机器人#4 · 2009/1/13
【 在 wanlxp 的大作中提到: 】 : 要修改的程序是自己编的吗?如果是的话可以用进程间通信。 : 如果不是的话。 : 用vs 2005自带的spy++ : ................... 就这两个窗口来说是自己编的,但最终是想修改别人的窗口。 spy++没用过,我在vc6下编的。
famousz机器人#5 · 2009/1/13
应该用系统的api函数来做,首先要获得句柄,然后发送消息来隐藏控件
xazs001机器人#6 · 2009/1/13
【 在 nobody 的大作中提到: 】 : 进程间的通信吧 : 管道、共享内存、或者文件都行。 : 比如在运行第一个程序的时候,把pid写入文件(fopen(pd, w)), : ................... 第二个程序把第一个窗口关了后,再创建一个进程,这时第一个程序需要判断哪些参数
wanlxp机器人#7 · 2009/1/13
【 在 xazs001 的大作中提到: 】 : 就这两个窗口来说是自己编的,但最终是想修改别人的窗口。 : spy++没用过,我在vc6下编的。 这个是我编的获得VS房间消息所用的richedit控件的内容的一段代码,vsMessage为编辑框内容,LZ可以参考,如果要进行其它的操作的话发送其它的消息就行了 HWND pwnd=::FindWindow(NULL,"VS竞技游戏平台 -- 正式版-2.5.3"); HWND HD_Child1=::GetDlgItem(pwnd,0x0000049A); HWND HD_Child2=::GetDlgItem(HD_Child1,0x0000049B); HWND HD_Child3=::GetDlgItem(HD_Child2,0x00000000); HWND hEdit=::GetDlgItem(HD_Child3,0x000004AD); if(hEdit) { //找到控件,处理进行相应处理 char str[655000]; ::SendMessage(hEdit,WM_GETTEXT,10000,(LPARAM)str); VsMessage=str; return 1; } else return 0;
wanlxp机器人#8 · 2009/1/13
【 在 wanlxp 的大作中提到: 】 : 这个是我编的获得VS房间消息所用的richedit控件的内容的一段代码,vsMessage为编辑框内容,LZ可以参考,如果要进行其它的操作的话发送其它的消息就行了 : HWND pwnd=::FindWindow(NULL,"VS竞技游戏平台 -- 正式版-2.5.3"); : HWND HD_Child1=::GetDlgItem(pwnd,0x0000049A); : ................... 其中0x0000049B等是用spy++获得的资源ID VS竞技游戏平台 -- 正式版-2.5.3 是窗口标题 只要修改SendMessage就可以进行其它的操作了。
wanlxp机器人#9 · 2009/1/13
【 在 xazs001 的大作中提到: 】 : 就这两个窗口来说是自己编的,但最终是想修改别人的窗口。 : spy++没用过,我在vc6下编的。 HWND pwnd=::FindWindow(NULL,"VS竞技游戏平台 -- 正式版-2.5.3"); HWND HD_Child1=::GetDlgItem(pwnd,0x0000049A); HWND HD_Child2=::GetDlgItem(HD_Child1,0x0000049B); HWND HD_Child3=::GetDlgItem(HD_Child2,0x00000000); HWND hEdit=::GetDlgItem(HD_Child3,0x000004AD); if(hEdit) { //找到控件,处理 ::ShowWindow(hEdit,SW_HIDE); return 1; } else return 0; 下面这一段代码可以把VS的房间消息的编辑框给隐藏,spy++ 可以从网上找找怎么用,