Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 25

Вставка текста в неактивный textbox

09.08.2012, 13:46. Показов 2504. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, проблема следующая: есть неактивный текстбокс (написан наверное на C#), можно как-то вставить туда значение? Если он был бы активный -то всё очень просто:
через SET_TEXT
C#
1
2
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, 0x0C, IntPtr wParam, string w);
Но так, как он неактивен - дескриптор найти нельзя...
Или можно?
подскажите, пожалуйста, как найти дескриптор или другим способом вставить текст. Заранее благодарен!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.08.2012, 13:46
Ответы с готовыми решениями:

Вставка данных на неактивный лист
With Worksheets("Лист5").QueryTables.Add(Connection:=..., Destination:=Range("A1")) .CommandText = "select...." .Name =...

Вставка в Word текста из TextBox с форматированием
Не подскажите, как сделать так, чтобы текст из textbox вставлялся в Word, сохраняя при этом форматирование (шрифт, начертание и т.п.),...

TextBox (поле) вставка текста в позицию курсора
Нужно по выбору из ПоляСоСписком вставить текст выбранного элемента из списка в TextBox (поле) в позицию в котором находится курсор ввода

4
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
10.08.2012, 04:35
Одна из моих программ используется заблокированные для ввода editbox'ы (я так понял, что вы их имеете в виду) и текст туда прекрасно отправляется. Проблема, на мой взгляд заключается только в нахождении его хэндла. Тут есть варианты: EnumChildWindows или, если элемент находится на диалоге, GetDialogItem.
А как вы находите хэндл?
1
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 25
10.08.2012, 11:19  [ТС]
Цитата Сообщение от GrayWolf Посмотреть сообщение
Одна из моих программ используется заблокированные для ввода editbox'ы (я так понял, что вы их имеете в виду) и текст туда прекрасно отправляется. Проблема, на мой взгляд заключается только в нахождении его хэндла. Тут есть варианты: EnumChildWindows или, если элемент находится на диалоге, GetDialogItem.
А как вы находите хэндл?
Я имел в виду немного другое=) У меня контрол (в нашем случае текстбокс) имеет свойство Enabled=false. Где-то я вычитал, что это не настоящий контрол, а только отрисованый. То есть манипуляции с им произвести нельзя... Но я подамал, была не была, перебрал все дочерние хендлы родительского хендла, и (если код класса есть EDIT), я включаю окно (EnableWindow).. далее перехожу к следующем хендлу... Как то я тяжело это написал=)

Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public void GetChildren(IntPtr hwnd, string className)
        {
            IntPtr h, h1;
            StringBuilder ClassName = new StringBuilder(50);
            if (hwndP != (IntPtr)0)
            {
                h = GetWindow(hwnd, GetWindow_Cmd.GW_CHILD);
                if (h == null) return;
                while (h != null)
                {
                    if (ClassName.ToString().Contains(className) == true)
                    {
                        EnableWindow(h, true);
                    }
                    h1 = GetWindow(h, GetWindow_Cmd.GW_CHILD);
                    if (h1 == null)
                    {
                        h = GetWindow(h, GetWindow_Cmd.GW_HWNDNEXT);
                        GetClassName(h, ClassName, 49);
                        if (ClassName.ToString().Contains(className) == true)
                        {
                            EnableWindow(h, true);
                        }
                        continue;
                    }
                    GetChildren(h,className);
                    h = GetWindow(h, GetWindow_Cmd.GW_HWNDNEXT);
                    if (h == IntPtr.Zero) return;
                    GetClassName(h, ClassName, 49);
                    if (ClassName.ToString().Contains(className) == true)
                    {
                        EnableWindow(h, true);
                    }
 
                }
            }
        }
собственно className - имя класса
Не знаю на сколько это еффективно и на сколько не правильно, но если передать в эту функцию код класса контрола и родительский хендл, стануть активными все контролы (то есть станут Enabled=true)

Конечно извините за тупость, я только начинаю программировать)
ПС: если передать пустую строку, то станут активными все контролы)
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
10.08.2012, 13:49
Значит я верно понял, суть та же. Главное понять и принять, что любой элемент в Windows - это окно. Будь то текст, поле ввода, рисунок или что-то другое. Любой визуальный элемент - это окно. Есть некоторые исключения, но на то они и исключения.
Главное, чтобы код работал, а оптимизацией можно заняться и позже

Не по теме:

Помнится я делал одну контрольную, к ней была предоставлена блок-схема. Начал делать по ней, получалось более 50 строк кода, в котором, к тому же, было легко запутаться. "Забросил" это все на пару дней, иногда только думал об этом месте в программе. Через пару дней сократил код до 5 строк :)


Если элементов достаточно много, то лучше будет использовать EnumChildWindows и в callback-функции EnumChildProc уже обрабатывать класс окна. Хотя можно и while использовать, все зависит от потребностей
0
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 25
10.08.2012, 18:28  [ТС]
Цитата Сообщение от GrayWolf Посмотреть сообщение
Значит я верно понял, суть та же. Главное понять и принять, что любой элемент в Windows - это окно. Будь то текст, поле ввода, рисунок или что-то другое. Любой визуальный элемент - это окно. Есть некоторые исключения, но на то они и исключения.
Главное, чтобы код работал, а оптимизацией можно заняться и позже

Не по теме:

Помнится я делал одну контрольную, к ней была предоставлена блок-схема. Начал делать по ней, получалось более 50 строк кода, в котором, к тому же, было легко запутаться. "Забросил" это все на пару дней, иногда только думал об этом месте в программе. Через пару дней сократил код до 5 строк :)


Если элементов достаточно много, то лучше будет использовать EnumChildWindows и в callback-функции EnumChildProc уже обрабатывать класс окна. Хотя можно и while использовать, все зависит от потребностей
Ясно, спасибо большое за ответ Я просто где то в просторах Паутины вычитал, что disabled контрол - не есть контрол. Ну а про WinApi я только вчера узнал до этого я не знал концепции работы ОС. Так что теперь знаю истину :dance3:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.08.2012, 18:28
Помогаю со студенческими работами здесь

Вставка текста из textBox windows form в нужное место шаблона word
Здравствуйте уважаемые программисты, прошу у вас помощи, ибо перерыл кучу информации и в интернете и у вас, но не смог понять куда и что...

Автоматическая вставка текста, в textbox, если этот текст уже вводился
Подскажите с кодом, как сделать так, например если ты первый раз авторизуешься, последующие разы пароль вводился либо сам, либо как только...

Вставка текста до выделенного текста и после текста
Ребят, помогите решить задачку. Есть RichBox и в нем некий текст. Я выделил часть текста и при нажатии кнопки необходимо до начала...

Вставка в тескт нужных символов с конца текста и сохранить в формате текста
Как вставить с другой ячейки и символы цифры считая с конца в такой формат есть ячейки С D ...

Вставка текста из одной ячейки в другую с добавлением текста макросом
Здравствуйте! Возникли сложности с созданием макроса. Нужно сделать макрос с вставкой текста из одной ячейки в другую с добавлением текста....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru