A过程可以获得B进程(mfc对话框程序),可以获得对话框中控件的ID和文字,修改控件文字,隐藏控件却无效

A进程可以获得B进程(mfc对话框程序),可以获得对话框中控件的ID和文字,修改控件文字,隐藏控件却无效
A进程可以获得B进程(mfc对话框程序),
通过A进程可以获得B进程(对话框)中控件的ID和文字,
通过A进程修改 B进程(对话框)控件文字无效;
通过A进程隐藏 B进程(对话框)控件却无效;
为什么无效呢?
通过A进程,打开B这个进程后,在A进程中调用提高进程的用户权限函数;
bool enableDebugPriv()//提升进程访问权限
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS_P|TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
{
return false;
}
if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) 
{
CloseHandle(hToken);
return false;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) 
{
CloseHandle(hToken);
return false;
}
return true;
}
然后A进程根据B进程名字获取到B进程的ID;
再接着在A进程中遍历出B进程的所有控件ID,
在A进程中可以获得B进程的所有控件上的文字内容;
TCHAR buf[WINDOW_TEXT_LENGTH];  
SendMessage(hWnd, WM_GETTEXT, WINDOW_TEXT_LENGTH, (LPARAM)buf);  
获取文字内容是正确的;比如一个按钮控件的内容是“确定”
我的问题是,为什么我能获得控件ID对应的文字“确定”;
但是我却不能把确定文字修改为“哈哈”;
就是说,setwindowtext( hWnd, "哈哈");却无效????这是什么原因呢?
另外一个,我试了一下 调用 showwindow( hWnd, SW_HIDE)也是无效??????

请各位高手给点建议,怎么做,才可以修改控件上的内容呢,另外怎么才能让
showwindow( hWnd, SW_HIDE);有效呢?

上面说的,代码全是在A进程中修改B进程的内容,B进程中没有做什么内容;

很奇怪,我自己写了一个对话框进程C(debug),来试验我的方法,同样的代码对C进程确实有效的,请问怎么样才能实现我的需求呢?
    谢谢各位。
远程注入

------解决方案--------------------
目标进程不允许你这么操作,或不接受你的这个处理请求
------解决方案--------------------
获取一下SendMessage函数失败时的错误码,看一下到底是什么问题。

------解决方案--------------------
跨进程 SendMessage 不会总是成功的。
试试 WM_COPYDATA
------解决方案--------------------
你可以写个dll,注入到目标进程b进行修改,