Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/67: Рейтинг темы: голосов - 67, средняя оценка - 4.76
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101

Получить список открытых окон программ

28.01.2011, 19:44. Показов 12457. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собсно сабж.

Задача: получить список всех окон, и через SprPos прогнать каждое на наличие слова (hack к примеру).
Далее по имени окна вычислить PID и выгрузить процесс <-- это не проблема

Сделать цикл для проверки в принципе тоже не составило труда, но работает только в случае, если я сам, вручную, забиваю список окон, что не есть приемлемо.

Поскольку я новичёк, работа с EnumChildWindows и прочими EnumDesktopWindows мне пока не даётся.

Основной задачей является поиск запущенных читов, ака хаков на компьютере пользователя. Искать соответственно необходимо несколько слов, которые я храню в Memo (юзер его не видит). Храню в Memo т.к. хотел обойтись без массивов, из-за того, что программа с сервера периодически обновляет список искомых слов => меняется кол-во элементов.

Прошу помочь мне со списком этих чёртовых окон, замучился уже ужОс как. Ни гугл ни яндекс толком ничего мне не помогли найти.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2011, 19:44
Ответы с готовыми решениями:

Список всех открытых окон в Windows
Как вывести в ListBox список всех открытых окон в Windows? Вот этот код выводит все процессы. Как переделать? bool CALLBACK...

Как получить список открытых окон?
А как получить список открытых окон????(В listBox)(заранее спасибо)

Как получить список открытых окон?
Всем привет!:senor: Мне нужно получить список открытых окон на данный момент в системе. Как это сделать? Например, у меня открыты...

12
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.01.2011, 23:04
не дается ему ...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BOOL EnumWindowsProc(HWND hWnd, long lParam)
{
  wchar_t Buff[255], NameOfClass[255]; // char - для ВСВ6
  GetWindowText(hWnd, Buff, 254);
  GetClassName(hWnd, NameOfClass, 254);  // clasa
  Form1->ListBox1->Items->Add(AnsiString(Buff) + " ("+AnsiString(NameOfClass) + ")" );
  return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Form1->ListBox1->Clear();
  EnumWindows((WNDENUMPROC)EnumWindowsProc, 0);
}
2
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
29.01.2011, 01:56  [ТС]
Спасибо большое!

Слегка подправил, убрал вывод имён классов, соответственно появившихся пустых строк и убрал вывод каких-то системных значений, типа Default IME и MSCTFIME UI.

Ещё такой вопрос: я использую цикл for, совершая его столько раз, сколько строк в листбоксе со списком окон, после чего очищаю всё, снова получаю список окон, проверяю и так далее.
Как вы думаете стоит оставить так, или такой метод может сильно загрузить компьютер?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.01.2011, 02:04
для чего терзать листбокс ? изначально заносите нужные строки в StringList
C++
1
2
TStringList *list = new StringList;
list->Add(AnsiString(Buff) + " ("+AnsiString(NameOfClass) + ")" );
, делайте, что нужно, оставшиеся после обработки строки из StringList заносите в листбокс, и не забудьте при разрушенни формы
C++
1
2
delete list;
list = NULL;
Добавлено через 2 минуты
я использую цикл for, совершая его столько раз,
- звучит странно, но подозреваю, что вы имеете ввиду итерации.
C++
1
for (int i=0; i <= list->Count-1; i++) {...}
0
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
29.01.2011, 04:29  [ТС]
Ну я просто не так выразился... маловато терминов знаю просто))

В плане терзания - почему терзаю?) Во-первых это её работа такая, а во-вторых я убираю лишние строки до ввода в листбокс. Та и помню преподаватель в пример написал программу, которая шифровала текст, так там каждая строка в мемо за цикл изменялась n раз, где n - 6-и значный ключ шифрования <- вот это терзание)

Ещё такой вопрос: в цикле for работает ещё один for внутри которого уже if. Как я писал, каждое значение из списка окон проверяется на наличие текста, из списка "запрещённых" слов, таким образом у меня получается:

C++
1
2
3
4
5
6
7
8
9
10
//получил список в listbox
//сработал таймер:
for
{
     for 
        {
         if (StrPos(...)) {...}
         }
}
//очистил всё
Возможна ли такая реализация? Вот, что я имел в виду, когда спрашивал про нагрузку))
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.01.2011, 05:06
сложно сказать - нет конкретного кода, если у вас что-то типа
C++
1
2
3
for (int i = 0; i <= 100; i++) {
  for (i = 10; i <= 90; i++) { ... }
}
- то смысла нет , если
C++
1
2
3
for (int i = 0; i <= 100; i++) {
  for (int j = 10; j <= 90; j++) { ... }
}
- то может и есть

Добавлено через 4 минуты
попалось на глаза
необходимо несколько слов, которые я храню в Memo (юзер его не видит)
- это криво - храните в массиве, или в StringList

Добавлено через 2 минуты
так там каждая строка в мемо за цикл изменялась n раз, где n - 6-и значный ключ шифрования <- вот это терзание)
- если для наглядности - то да - чтобы все видели, как меняется строка , а так - то это дело интимное
0
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
29.01.2011, 05:13  [ТС]
Нет ну я же не настолько новичок, что бы при помощи одной и той же переменной совершать разных 2 цикла)))
К слову в PHP я это всё написал за 10 минут (без окон правда, там получал списки файлов и файлов в подкатегориях), но хоть и php си-подобный язык - я на си пока что очень плохо пишу, и многие ответы, советы и решения приходится искать в интернете.

Что касается хранения - сейчас я покамес храню в ListBox-е, только для того, что бы видеть своими глазами что и с чем сравнивается, а если программа словила - пишет в мемо что словила и откуда.
Плюс ко всему - строки берутся из зашифрованного файла. Пока пишу - необходимо отладить всё, соответственно необходимо видеть расшифровала программа текст или нет.

Ещё такой вопрос: TcpServer может получить IP адрес от TcpClient? Без Indy (рановато мне), и прочих заморочек, типа сервиса WhoIs?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.01.2011, 05:31
попалось совершенно случайно http://abitur.bsuir.by/m/12_116608_1_52046.pdf что-то там есть и про WhoIs
1
2 / 2 / 0
Регистрация: 23.03.2011
Сообщений: 23
21.09.2012, 01:22
Цитата Сообщение от LK Посмотреть сообщение
BOOL EnumWindowsProc(HWND hWnd, long lParam)
{
* wchar_t Buff[255], NameOfClass[255]; // char - для ВСВ6
* GetWindowText(hWnd, Buff, 254);
* GetClassName(hWnd, NameOfClass, 254); *// clasa
* Form1->ListBox1->Items->Add(AnsiString(Buff) + " ("+AnsiString(NameOfClass) + ")" );
* return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
* Form1->ListBox1->Clear();
* EnumWindows((WNDENUMPROC)EnumWindowsProc , 0);
}
В Builder 2009 выдает ошибки:
[BCC32 Error] Unit1.cpp(21): E2034 Cannot convert 'wchar_t *' to 'char *'
[BCC32 Error] Unit1.cpp(21): E2342 Type mismatch in parameter 'lpString' (wanted 'char *', got 'wchar_t *')
[BCC32 Error] Unit1.cpp(22): E2034 Cannot convert 'wchar_t *' to 'char *'
[BCC32 Error] Unit1.cpp(22): E2342 Type mismatch in parameter 'lpClassName' (wanted 'char *', got 'wchar_t *')
Подскажите, пожалуйста, в чем дело и как с этим бороться?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33147 / 21440 / 8222
Регистрация: 22.10.2011
Сообщений: 36,769
Записей в блоге: 9
21.09.2012, 02:36
Цитата Сообщение от hwarang Посмотреть сообщение
в чем дело
В ANSI-приложении. Переключись на Юникод (Project -> Options -> _TCHAR maps to -> wchar_t) и все соберется.
0
2 / 2 / 0
Регистрация: 23.03.2011
Сообщений: 23
21.09.2012, 08:15
Цитата Сообщение от UI Посмотреть сообщение
В ANSI-приложении. Переключись на Юникод (Project -> Options -> _TCHAR maps to -> wchar_t) и все соберется.
Все равно не собралось:
[BCC32 Error] Unit1.cpp(19): E2188 Expression syntax
[BCC32 Error] Unit1.cpp(20): E2451 Undefined symbol 'Buff'
[BCC32 Error] Unit1.cpp(20): E2062 Invalid indirection
[BCC32 Error] Unit1.cpp(21): E2451 Undefined symbol 'NameOfClass'
[BCC32 Error] Unit1.cpp(21): E2062 Invalid indirection
[BCC32 Error] Unit1.cpp(23): E2188 Expression syntax
[BCC32 Warning] Unit1.cpp(24): W8070 Function should return a value
[BCC32 Error] Unit1.cpp(28): E2109 Not an allowed type
[BCC32 Error] Unit1.cpp(29): E2062 Invalid indirection

Если без *
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[CODE]BOOL EnumWindowsProc(HWND hWnd, long lParam)
{
 wchar_t Buff[255], NameOfClass[255]; // char - для ВСВ6
 GetWindowText(hWnd, Buff, 254);
 GetClassName(hWnd, NameOfClass, 254); *// clasa
 Form1->ListBox1->Items->Add(AnsiString(Buff) + " ("+AnsiString(NameOfClass) + ")" );
 return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Form1->ListBox1->Clear();
 EnumWindows((WNDENUMPROC)EnumWindowsProc, 0);
}
//---------------------------------------------------------------------------
[/CODE]
получаю ошибку
[BCC32 Error] Unit1.cpp(22): E2062 Invalid indirection
?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33147 / 21440 / 8222
Регистрация: 22.10.2011
Сообщений: 36,769
Записей в блоге: 9
21.09.2012, 10:16
А ты все лишние звездочки убрать не пробовал? В строке №5 приведенного фрагмента, перед комментариями, ничего не замечаешь?
1
2 / 2 / 0
Регистрация: 23.03.2011
Сообщений: 23
22.09.2012, 01:15
Цитата Сообщение от Oskaria Посмотреть сообщение
Слегка подправил, убрал вывод имён классов, соответственно появившихся пустых строк и убрал вывод каких-то системных значений, типа Default IME и MSCTFIME UI.
Не подскажите, каким образом реализовали? Т.к. для меня строки типа
C++
1
2
3
4
(TApplication)
 (tooltips_class32)
 (tooltips_class32)
 (tooltips_class32)
никакой пользы не имеют, а только отвлекают и ничего не означают. Хотелось бы в ListBox получить только перечень открытых окон (в моем случае в формате Word).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2012, 01:15
Помогаю со студенческими работами здесь

Как получить список открытых окон?
На windows я нашел это: Как на linux? Добавлено через 29 минут я получил список открытых окон и подокон: root@xubuntu:~#...

Список открытых окон
Добрый вечер! Собираюсь писать менеджер окон, Qt предоставляет возможность увидеть все открытые окна? или через винапи дескрипторы как то...

Список открытых в XWindow окон
Всем привет:) Требуется написать программу, примитивную панель задач -- должна выводить список открытых в данный момент окон. Знаю про...

Как получить названия всех открытых окон?
Здравствуйте! У меня такая проблема нужно взять список названий и handle всех открытых окон (т.е. и свернутых ) желательно в C#

Можно ли в цикле получить все titles открытых окон?
Мне нужно среди открытых в броузере окон провести поиск окна с определенным title. Возможно ли это? Если возможно, то как? Спасибо!


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как создать первый микросервис на C# с ASP.NET Core, step by step
stackOverflow 06.06.2025
Если говорить простыми словами, микросервисная архитектура — это подход к разработке, при котором приложение строится как набор небольших, слабо связанных сервисов, каждый из которых отвечает за. . .
Рисование коллайдеров Box2D v2 на Three.js с помощью порта @box2d/core
8Observer8 06.06.2025
Используется порт Box2D v2 под названием @box2d/ core - пакет NPM. Загрузил документацию Box2D v2 на Netlify: https:/ / box2d-v2-docs. netlify. app/ Документацию Box2D v2 можно скачать с официального. . .
Как создать стек в Python
AI_Generated 05.06.2025
Как архитектор с более чем десятилетним опытом работы с Python, я неоднократно убеждался, что знание низкоуровневых механизмов работы стеков дает конкурентное преимущество при решении сложных задач. . . .
Server-Sent Events (SSE) в Node.js
run.dev 05.06.2025
Потоковая передача данных с сервера прямо в браузер стала повседневной потребностью - от биржевых графиков и спортивных трансляций до чатов и умных дашбордов. Много лет разработчики полагались на. . .
Создаем RESTful API на Golang с Fiber
golander 04.06.2025
Я перепробовал десятки фреймворков для создания RESTful API за последние годы, и когда впервые столкнулся с Fiber, понял, что это совсем другой уровень. Нет, я не собираюсь рассказывать сказки о. . .
Как работать с куки в ASP.NET Core
UnmanagedCoder 04.06.2025
Когда я впервые начал работать с куки в ASP. NET Core, меня поразило, насколько отличается работа с ними от классического ASP. NET. В Core все стало более декомпозированным - больше нет удобного. . .
Рисование коллайдеров физического движка Box2D-WASM v3 на Three.js
8Observer8 04.06.2025
Erin Catto (автор Box2D) переписал с нуля Box2D v2 с С++ на Си и появилась версия Box2D v3. Birch-san собрал Box2D v3 в WebAssembly (WASM), чтобы можно было использовать Box2D v3 на JavaScript. В. . .
Worker Threads и многопоточность в Node.js
Reangularity 03.06.2025
Если вы когда-нибудь посещали собеседования на позицию Node. js разработчика, почти наверняка слышали заезженную фразу: "Node. js - однопоточная платформа". Звучит как неоспоримый факт, который. . .
Event-Driven CQRS на C# с паттерном Outbox
stackOverflow 03.06.2025
В традиционной модели происходит примерно следующее: вы получаете команду, обрабатываете ее, сохраняете результат в базу данных и затем пытаетесь опубликовать событие в брокер сообщений. Но что если. . .
OwenLogic: перенос сетевых переменных в панель Weintek (EasyBuilder Pro)
ФедосеевПавел 03.06.2025
ВВЕДЕНИЕ ПЕРЕД ЭКСПЕРИМЕНТАМИ - СОЗДАЙТЕ РЕЗЕРВНЫЕ КОПИИ ПРОЕКТОВ На момент написания статьи (02 июня 2025 г. ) самыми актуальными версиями ПО являются: OwenLogic v. 2. 10. 366 EasyBuilder Pro. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »