2012-01-17 7 views
1

Я использую spy ++ и вижу, что элемент управления, который у меня есть, имеет десятичную дробь, которая соответствует шестнадцатеричному (после преобразования курса) в spy ++, и я вижу, что родительское окно соответствует также, поэтому я имеют IntPtr для метки и IntPtr для формы/окна, но мой SendMessage не работает для изменения текста в целевом приложении.Как установить текст в «другом» win32-приложении

Другой подход может быть может быть, чтобы сделать что-то вроде этого поста, но что идентификатор элемента управления, и как я понимаю, что 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 И это новое значение, но приложение по-прежнему показывает неправильное значение .... hmmm, мне нужно отправить сообщение с перерисованием, и если да, то для чего это код?

спасибо, Дин

+0

Попробуйте установить 'wParam' в ноль, а не' value.Length'. –

+0

Нет, это не сработало, плюс я узнал, что могу использовать winspector, и на самом деле вижу целевой компонент, получающий заданные текстовые сообщения (нужно попытаться сделать недействительным rect, как в приведенном ниже ответе, и посмотреть, поможет ли это) –

ответ

2

Вы не отправить сообщение окна, чтобы заставить перекрасить, а вы называете InvalidateRect(hWnd, NULL, TRUE).

+0

my спаситель ... он работает сейчас !!! Необходимо помнить эту перерисовку для более поздних, потраченных часов, пока я даже не понял, что может быть проблемой. –

Смежные вопросы