我尝试使用相同的代码(程序C)对其他程序(A和B)中的TreeView调用TreeView_GetRoot(TVM_GETNEXTITEM消息)来操作它们。
程序A可以接收消息(我可以看到来自spy ++的消息)。
但是对于程序B,似乎它无法接收消息,返回值是“未定义”'从VC调试窗口,同时没有消息显示在spy ++中。 (Spy ++正确显示消息,手动点击TreeView)
两个程序和间谍++都是32位。
此外,Winspector(如spy ++)可以在程序A中显示TreeView的项目计数,但不能在程序B中显示。我怀疑它是由同样的原因引起的。
你知道它可能是什么样的吗?
答案 0 :(得分:2)
SendMessage备注的文档,发送的邮件受UIPI约束(参见Windows Integrity Mechanism Design):
邮件发送受UIPI约束。进程的线程只能将消息发送到完整性级别较低或相等的进程中的线程的消息队列。
文档还说明了如何报告因UIPI违规而导致的错误:
当UIPI阻止邮件时,使用GetLastError检索的最后一个错误设置为5(访问被拒绝)。
以下列出了可能的解决方案: