2012-01-17 78 views
1

我正在使用spy ++,并看到我有控制我有十进制匹配十六进制(课程转换后)在间谍++和我看到父窗口匹配以及所以我将IntPtr作为Label和IntPtr作为窗体/窗口,但我的SendMessage无法更改目标应用程序中的文本。如何在另一个win32应用程序上设置文本

另一种方法可能会是做这样的事情后,但什么是控件的ID,我如何获取 SetText of textbox in external app. Win32 API

我认为这里的hWnd必须控件的hWnd,是否正确?

SendMessageCall(hWnd, WM_SETTEXT, (IntPtr)value.Length, value); 

我注意到,获取文本可以正常工作

SendMessageCall(hWnd, WM_GETTEXT, (IntPtr)sb.Capacity, sb); 

,我注意到,我得到了测试,查看正确的值,设置文本但它不会改变,然后获取文本再次使用SendMessage这是新的价值,但应用程序仍然显示错误的价值....嗯,我需要发送一个重新绘制消息也许,如果是这样,那是什么代码?

感谢, 院长

+0

尝试将'wParam'设置为零,而不是'value.Length'。 – 2012-01-17 01:45:00

+0

nope,没有工作,再加上我发现我可以使用winspector,我实际上看到目标组件接收设置文本消息(需要尝试使rect无效,如下面的答案,看看是否有帮助) – 2012-01-17 14:19:35

回答

2

你不发送窗口消息强制重画,而不是你打电话InvalidateRect(hWnd, NULL, TRUE)

+0

我的救世主......现在起作用了!稍后需要记住这个重画,花费几个小时,直到我甚至意识到这可能是问题。 – 2012-01-17 14:24:45

相关问题