Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список приложений 
:(
    Опции темы
mr.DUDA
Дата 31.7.2003, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Plamenk, лови ссылку
http://www.codeguru.com/system/ListProcesses.shtml

Вроде чел очень постарался


--------------------
user posted image
PM MAIL WWW   Вверх
alexht
Дата 1.8.2003, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.8.2003

Репутация: нет
Всего: нет



Не знаю про NULL, но чето похожее на макрос HWND_DESKTOPWINDOW стопудово и есть ханд окна стола.

PM MAIL   Вверх
mr.DUDA
Дата 1.8.2003, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Это что ли
Код
HWND GetDesktopWindow(VOID);


Цитата
The GetDesktopWindow function returns a handle to the desktop window. The desktop window covers the entire screen. The desktop window is the area on top of which all icons and other windows are painted.


макроса я не нашел

Это сообщение отредактировал(а) mr.DUDA - 1.8.2003, 14:10


--------------------
user posted image
PM MAIL WWW   Вверх
Step
Дата 1.8.2003, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата
Дело в том, что перечислая окна с помощью EnumWindow() или FindWindow() я нахожу все окна, большинство из которых мне ненужны, а вопрос именно в том, как отфильтровать именно те приложения которые можно переключать с помощью Alt+Tab.
может я и ошибаюсь, но у окна есть стиль, не помню какой именно, но если его обнулить, то программа проподает из панели АЛТ-ТАБ.
Утверждать, конечно, не берусь, но если это подтвердиться, то вы можете у каждого окна проверять это свойство. Таким образом, можно отфильтровать окна


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Гость_brb
Дата 1.8.2003, 15:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
может я и ошибаюсь, но у окна есть стиль, не помню какой именно, HO если его обнулить , то программа пропAдает из панели АЛТ-ТАБ.
Утверждать,   конечно , не берусь, но если это подтвердиться,   то вы можете у каждого окна проверять это свойство. Tаким образом,   можно отфильтровать окна



Step, o5 2!
  Вверх
Step
Дата 1.8.2003, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата
o5 2!
что это


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Unregistered
Дата 1.8.2003, 15:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











опять двойка!
  Вверх
Plamenk
Дата 4.8.2003, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



mr.DUDA воспользовался твоим советом и написал маленькую программку:

Код
#include "stdafx.h"
#include "windows.h"

BOOL CALLBACK EnumWindowsProc(
 HWND hwnd,      // handle to parent window
 LPARAM lParam   // application-defined value
)
{
char* sName = new char[MAX_PATH];
GetWindowText(hwnd,sName,MAX_PATH);
delete[] sName;
return TRUE;
}

BOOL CALLBACK EnumDesktopProc(
 LPTSTR lpszDesktop,  // desktop name
 LPARAM lParam        // user-defined value
)
{
HDESK hDesk =  OpenDesktop(lpszDesktop,DF_ALLOWOTHERACCOUNTHOOK,FALSE,DESKTOP_READOBJECTS);
EnumDesktopWindows(hDesk,&EnumWindowsProc,NULL);
CloseDesktop(hDesk);
return TRUE;
}


int main(int argc, char* argv[])
{
EnumDesktops(GetProcessWindowStation(),&EnumDesktopProc,NULL);
return 0;
}


Но я снова получаю помимо нужных окон, кучу ненужных (Пробовал под XP). Может я сделал что-то не так?
PM MAIL   Вверх
Plamenk
Дата 4.8.2003, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



Со стилями тоже пробовал, ничего не получилось. Мне кажется здесь этим не поможешь.
PM MAIL   Вверх
mr.DUDA
Дата 4.8.2003, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Затрудняюсь что-либо сказать. Еще раз рекомендую взглянуть на
http://www.codeguru.com/system/ListProcesses.shtml


--------------------
user posted image
PM MAIL WWW   Вверх
Unregistered
Дата 4.8.2003, 18:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Смотрел я эту программу, обычное перечисление всех процессов с помощью EnumProcess().

  Вверх
mr.DUDA
Дата 4.8.2003, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Тогда остается либо пробовать-таки со стилями (посмотри WS_OVERLAPPED, WS_VISIBLE, что-то вроде WS_SYSTEMMENU), или искать, искать, искать... (мот даже, есть стандартный COM-компонент с подходящими ф-циями)...
confused.gif


--------------------
user posted image
PM MAIL WWW   Вверх
Plamenk
Дата 5.8.2003, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



Ладно всем спасибо за участие!
PM MAIL   Вверх
RAN
Дата 5.8.2003, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Ну, ты что, так и не придумал ничего. Я вот подумал может так:
Код

HWND Wnd = GetWindow(GetDesktopWindow(), GW_CHILD);
while (Wnd) {
   if( IsWindowVisible(Wnd) && GetWindow(Wnd, GW_OWNER) == NULL) {
         GetWindowText( Wnd, szWindowName, 70 );
         GetClassName( Wnd, szClassName, 30 );
         wsprintf( szAddString, "%s - %s", szWindowName, szClassName );
         SendMessage( hListBox, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)(LPTSTR)szAddString );
         }
   Wnd = GetWindow( Wnd, GW_HWNDNEXT );
   }


sz... - это указатели на отведённые в памяти места для имени окна, класса и того, что в список добавим
hListBox - это окно класса LISTBOX.

Короче, фишка в том, чтоб отсеить невидимые окна и окна имеющие родителей (владельцев - OWNER). Есть правда проблема. Попадают окно класса Shell_TrayWnd без заголовка и окно класса Progman с заголовком Program Manager. Их можно было бы отсеивать по имени класса, но где гарантии, что так будет во всех ОС (у меня XP).
PM MAIL ICQ   Вверх
Plamenk
Дата 5.8.2003, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



RAN, Спасибо тебе, всё получилось. Только надо добавить проверку на то, чтобы заголовок окна не равнялся "".
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.