Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

323

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Советник

278

Россия, Санкт-Петербург


ID: 400669

epimkin

Профессионал

254


ID: 137394

Megaloman

Мастер-Эксперт

122

Беларусь, Гомель


ID: 405239

al4293189

1-й класс

92


ID: 325460

CradleA

Мастер-Эксперт

76

Беларусь, Минск


ID: 226425

Konstantin Shvetski

Модератор

49

Россия, Северодвинск


8.9.8

01.08.2021

JS: 2.9.16
CSS: 4.5.14
jQuery: 3.6.0
DataForLocalStorage: 2021-08-02 12:16:01-standard


Создание программ на программной платформе .NET Framework и языках С# и Java.

Администратор раздела: Коцюрбенко Алексей Владимирович (Старший модератор)

Консультация онлайн # 146296

Раздел: .NET Framework / C# / Java
Автор вопроса: Guv2002
Дата: 07.10.2008, 09:00 Консультация закрыта
Поступило ответов: 1

Здравствуйте!
Как вызывать Callback-функции в .Net? Желательно на языке Delphi.
Например, хочется вызвать апишную функцию EnumChildWindows, у которой второй параметр - это функция. Как оформить данный вызов?
Заранее спасибо.

Ответ # 231397 от Sergey A. Wedensky
Здравствуйте, Guv2002!

В .Net вызвать апишную функцию можно только при помощи PInvoke. Но зачем это надо, если есть managed-аналог? Для EnumChildWindows - это свойство System.Windows.Forms.Form.Controls.

Sergey A. Wedensky

Посетитель
07.10.2008, 10:01
Мини-форум консультации # 146296
неизвестный

1

= общий =    07.10.2008, 13:25

Можно поподробнее...
Если есть пример, то вообще хорошо будет :)

Sergey A. Wedensky

2

= общий =    07.10.2008, 19:21

Вот вкратце о PInvoke:
PInvoke

Если Вам нужно получить список дочерних окон WinForms-окна (System.Windows.Forms.Control или наследника), то у него есть свойство Controls Типа ControlCollection - это и есть искомый список.

неизвестный

3

= общий =    08.10.2008, 07:21

А как тогда получить по названию окна или по его классу объект класса System.Windows.Forms ?
Т.е. из своей программы мне надо перебрать все открытые окна в ОС Windows и найти нужное, а затем у найденного окна найти определенный видимый компонент и передать ему некоторые команды.
Мне копать в PInvoke или в System.Windows.Forms?

Sergey A. Wedensky

4

= общий =    08.10.2008, 13:24

Прямого аналога FindWindow (Вы ведь его имеете ввиду?) в .NET нет. Так что вариант только юзать интероп из нативных апишных DLL.
Типа того:

using System.Runtime.InteropServices;
public class Win32
{
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
}

На gotdotnet.ru поищи Win32Window. Готовый класс для разных манипуляций с HWindow на низком уровне.

неизвестный

5

= общий =    13.10.2008, 06:06

Спасибо

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 119

CradleA

Мастер-Эксперт

Рейтинг: 76

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 8

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0

Орловский Дмитрий

Мастер-Эксперт

Рейтинг: 0