Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2015, 19:52   #1
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию Поиск окон своего процесса

Добрый вечер всем!
Подскажите пожалуйста, как перебрать окна СВОЕГО процесса?

Сейчас я делаю так:


Код:
function EnumProc(hWindow: HWnd; Param: LongInt): Boolean; stdcall;
var
  buff: Array[0..255] of Char;
  s: String;
begin
  result := true;

  If Boolean(GetClassName(hWindow, buff, 256)) then
    begin
      s := AnsiLowerCase(StrPas(buff));
      If pos(AnsiLowerCase('omboBoxEx32'), s) > 0 then // вот тут ищем кусок класса
        begin
          FOUND_WINDOW := hWindow;
          Result := False;
        end else begin
          EnumChildWindows(hWindow,@EnumProc,0);
          if FOUND_WINDOW<>0 then
          Result:=false;
        end;
    end;

end;

EnumWindows(@EnumProc, 0);
Но тут в куче, как я понял, окна всех процессов перебираются.
А меня интересуют окна только моего процесса.

Может как-то определить какому процессу окно принадлежит...

Какое решение максимально верное для моей ситуации?

Спасибо
lollollollol вне форума Ответить с цитированием
Старый 16.12.2015, 20:44   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Screen.Forms не устраивает?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2015, 21:44   #3
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

GetWindowThreadProcessId самое оно, только что решил
lollollollol вне форума Ответить с цитированием
Старый 17.12.2015, 06:56   #4
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 273
По умолчанию

EnumThreadWindows + GetCurrentThreadId
Функция EnumProc должна возвращать BOOL (4 байта), а не Boolean (1 байт).

Последний раз редактировалось Filka; 17.12.2015 в 09:26.
Filka вне форума Ответить с цитированием
Старый 17.12.2015, 07:19   #5
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию

Ответь лучше на один вопрос. Как ты умудрился их потерять?
taras-proger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с памятью своего процесса lollollollol Win Api 45 05.07.2013 17:55
Перехват создания окон одного процесса Человек_Борща Общие вопросы Delphi 4 09.12.2011 21:57
Смертоубийство своего процесса Johnson Win Api 7 23.08.2011 19:29
Список окон процесса Johnson Общие вопросы Delphi 2 15.08.2011 20:31
Поиск окон Лубышев Общие вопросы Delphi 10 04.08.2008 09:13