Допустим, я пишу функцию, которая по значению дескриптора должна вернуть логическое значение, существует ли окно с таким дескриптором. Я представляю огромное количество реализаций - от перебора всех окон через GetProcesses или EnumWindow и до вызова какой-нибудь функции, принимающей hwnd, и возвращающую результат. А может я все усложняю, а такая функция входит в user32. В общем, как будет лучше и быстрее?
Есть WinApi функция IsWindow, но как пишут в этом ответе хендл может переназначаться => если вы пасете определенное окно и хотите проверить его существование, то окно может быть уже закрыто, но хендл с таким же номером был создан для другого окна.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindow(IntPtr hWnd);
Получается, что имеет смысл воспользоваться вот этой функцией, если у окна есть специфическое название GetWindowText , она вернет Caption
окна и можно удостоверится, что именно желаемое окно живо.
Через WinApi я думаю, что быстрее.
Что лучше?
Все зависит от того, как часто вы это собираетесь делать. Если не часто, то я бы не заморачивался и выполнял итерацию по процессам.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Стоит задача, программно получить напряжение, и желательно нагрузку и частоты как в NVIDIA Inspector с видеокарт NVIDIAБыл реализован вариант с использованием...
Задача: На нашей форме есть DataGridView и несколько, к примеру пять textBoxНужно выбирая мышкой ячейки DataGridView получать номер колонки в каждом textBox-е
Есть ASPNET MVC сайт, есть на входе файл Excel, содержимое файла нужно загрузить через сайт в БД