为什么SetDlgItemTextW在钩子子程里用不了? 本帖最后由 shmilyptop 于 2010-02-08 10:45:43 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只是个静态文本框(static text). 顶一下呀,我现在不写在钩子函数里,就随便写在一个函数也是不行.void myp(){SetDlgItemTextW(s1,IDC_aa,b);//这个不能设置SendMessageW(s1,WM_SETTEXT,0,(LPARAM)(LPCTSTR)b);//可以设置}void CyyDlg::OnBnClickedmyp(){ myp();} 再顶一下.SetDlgItemTextW放在全局函数不知道怎么用,谁指教一下.总觉得是窗口句柄s1出了问题(SendMessageW也用这个句柄,但没问题,难道两者需要的不是同一个句柄?),但又不知怎么解决. SetDlgItemText是不能跨进程的。 原来是写在全局钩子上的,但用的是_LL的钩子,所以是在程序本身的,没用到DLL.但后来我为了测试,干脆就不写在钩子里了,直接在程序随便加了个全局函数(在六楼),结果也还是不行.(如果不写在全局函数是可以的), 怎么说呢和以前看到的那个GetWindowText的问题是一样的SetDlgItemTextW 并不一定是Send WM_SETTEXT 消息到目标窗口.对于自己进程的窗口来说 SetDlgItemText 可以说是和 Send WM_SETTEXT 等效的.但是对于其他进程的窗口 SetDlgItemText 并没有调用 SendMessage. 而是去更改窗口的标题,如果目标窗口没有标题的话,就不执行操作.LZ所说的是写在钩子过程里的,所以属于后者.所以SetDlgItemText就不起作用了,必须要SendMessage. 求高手解决一个关于按钮变色的问题! 怎么用ShellExecute实现文件的删除和定位? 多文档界面中的模态对话框问题 新手入门的小问题 招聘长沙vc网络程序员 串口问题。诚等高手指教。 怎么样才能让我写的程序不调用MFC42.dll 已知Xmm,Ymm的坐标,求一下经纬度,谢谢! InstallShield 打包数据库问题 大家都用什么工具作help啊? CString有没有返回一个区间中的字符串的方法? 制作toolband被防火墙拦截
只是个静态文本框(static text).
void myp()
{
SetDlgItemTextW(s1,IDC_aa,b);//这个不能设置
SendMessageW(s1,WM_SETTEXT,0,(LPARAM)(LPCTSTR)b);//可以设置
}
void CyyDlg::OnBnClickedmyp()
{
myp();
}
总觉得是窗口句柄s1出了问题(SendMessageW也用这个句柄,但没问题,难道两者需要的不是同一个句柄?),但又不知怎么解决.
原来是写在全局钩子上的,但用的是_LL的钩子,所以是在程序本身的,没用到DLL.但后来我为了测试,干脆就不写在钩子里了,直接在程序随便加了个全局函数(在六楼),结果也还是不行.(如果不写在全局函数是可以的),
但是对于其他进程的窗口 SetDlgItemText 并没有调用 SendMessage. 而是去更改窗口的标题,如果目标窗口没有标题的话,就不执行操作.LZ所说的是写在钩子过程里的,所以属于后者.所以SetDlgItemText就不起作用了,必须要SendMessage.