On-line: Dr. Oldwarez, гостей 1. Всего: 2 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 09.01.08 01:48. Заголовок: Список окон


Всем привет ! Можно ли получить список хендлов окон открытых в системе, их заголовков и состояние(min/max) ?

Спасибо: 0 
Ответов - 16 [только новые]


модератор




Пост N: 681
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 09.01.08 11:59. Заголовок: fil пишет: Можно ли..


fil пишет:

 цитата:
Можно ли получить список хендлов окон открытых в системе


Да, это возможно, если хорошо владеешь WinAPI.

Готовый пример лежит по следующему адресу:
http://minigui.mylivepage.ru/file/?fileid=2085

Кстати, его исходники есть в поставке MiniGUI Extended Edition

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 11.01.08 19:02. Заголовок: Список окон получил,..


Список окон получил, однако если аппликация запускается через OLE, то заголовка ее окна в этом списке нет(хотя это окно спокойно находится через findwindow). Если аппликацию запустить самостоятельно ее заголовок попадает в список ...?

Спасибо: 0 
постоянный участник




Пост N: 393
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.01.08 17:05. Заголовок: fil пишет: Список о..


fil пишет:

 цитата:
Список окон получил



А можно получить тоже самое на чистом хХарборе ?
Приведите исходник плиз......

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.01.08 15:38. Заголовок: Можно ли ассоциирова..


Можно ли ассоциировать окно с процессом его породившим ?

Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.01.08 17:51. Заголовок: fil пишет: Можно ли..


fil пишет:

 цитата:
Можно ли ассоциировать окно с процессом его породившим ?



А что , если попробовать так ...

#include "FiveWin.ch"

#define GW_CHILD 5
#define GW_HWNDNEXT 2
#define SW_RESTORE 9
....
Вызвать ф-ю Guno("процес.exe") , которая по процессу найдет окно

function Guno( cTitle )

local hWnd := GetWindow( GetDesktopWindow(), GW_CHILD )

while hWnd != 0
if Upper( cTitle ) $ Upper( GetWindowText( hWnd ) )
return hWnd
endif

hWnd = GetWindow( hWnd, GW_HWNDNEXT )
end
return nil

Теперь посмотрим не "свернуто" ли оно :

if hWnd != nil
if IsIconic( hWnd )
GavGav(hWnd)
endif
SetForeGroundWindow( hWnd )
endif

Function GavGav(hWnd)
А здесь можем его развернуть

ShowWindow( hWnd, SW_RESTORE )
или что другое сделать..
/*
#define SIZE_RESTORED 0
#define SIZE_MINIMIZED 1
#define SIZE_MAXIMIZED 2
#define SIZE_MAXSHOW 3
#define SIZE_MAXHIDE 4
*/





Спасибо: 0 
постоянный участник




Пост N: 399
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.01.08 23:07. Заголовок: ММК пишет: А что , ..


ММК пишет:

 цитата:
А что , если попробовать так ...

#include "FiveWin.ch"



А на чистом хХарборе можно сделать ?

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.01.08 01:32. Заголовок: Список задач через G..


Список задач через GetTasks ?
А ежели у окна нет заголовка или заголовок не включает название exe-шника или есть несколько процессов с одинаковым именем ?

Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.01.08 01:43. Заголовок: А окна аппликации за..


А окна аппликации запущенной через OleAutomation так и не нашел, хотя сделал список окон со всеми дочерними окнами.
Т.к. аппликация запущенная таким образом имеет статус hide, создается впечатле, что GetWindowText( hWnd ) не дает заголовков окон которые iswindowvisible(hWnd)=.F.

Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.01.08 11:17. Заголовок: fil пишет: не дает ..


fil пишет:

 цитата:
не дает заголовков окон которые iswindowvisible(hWnd)=.F.


Так говоришь не дает :) А попробуй вот так -
#include "Fivewin.ch"


#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_HWNDNEXT 2
#define GW_HWNDPREV 3
#define GW_OWNER 4
#define GW_CHILD 5


FUNCTION MAIN()

LOCAL hWnd := GETFOREGROUNDWINDOW()

WHILE hWnd != 0
IF GETWINDOW( hWnd, GW_OWNER ) = 0 .AND. ISWINDOWVISIBLE( hWnd ) .AND. !EMPTY( GETWINDOWTEXT( hWnd ) )
? GETWINDOWTEXT( hWnd )
ENDIF

hWnd = GETWINDOW( hWnd, GW_HWNDNEXT )
ENDDO

RETURN NIL


DLL32 STATIC FUNCTION GETFOREGROUNDWINDOW() AS LONG;
PASCAL FROM "GetForegroundWindow" LIB "user32.dll"

Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.01.08 15:31. Заголовок: не помогло Есть така..


не помогло
Есть такая функция GetWndTask(hWnd) через которую можно получить хендл аппликации по ее главному окну, а наоборот можно ?

Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.01.08 17:37. Заголовок: fil пишет: а наобор..


fil пишет:

 цитата:
а наоборот можно ?


:))
Ну тогда , наверное , надо начинать от печки: что и где надо сделать.
Напиши мне на почту, поищем...

Спасибо: 0 
постоянный участник




Пост N: 598
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.05.08 11:07. Заголовок: gfilatov пишет: Гот..


gfilatov пишет:

 цитата:
Готовый пример лежит по следующему адресу:
http://minigui.mylivepage.ru/file/?fileid=2085



Нет такого файла .....
Где искать ?

Спасибо: 0 
Профиль
модератор




Пост N: 785
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 31.05.08 12:12. Заголовок: Andrey пишет: Где и..


Andrey пишет:

 цитата:
Где искать ?



Обновленный пример лежит по этому адресу:

http://minigui.mylivepage.ru/file/?fileid=5134



Спасибо: 0 
Профиль
постоянный участник




Пост N: 599
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.05.08 12:23. Заголовок: А исходник к нему по..


А исходник к нему посмотреть где ?

Спасибо: 0 
Профиль
модератор




Пост N: 787
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 31.05.08 12:28. Заголовок: Andrey пишет: исход..


Andrey пишет:

 цитата:
исходник к нему посмотреть где ?



gfilatov пишет:

 цитата:
его исходники есть в поставке MiniGUI Extended Edition



Но там ты увидишь только интерфейс
Все обращения к процессам сидят в бесплатной библиотеке procinfo, которая тоже есть в поставке...



Спасибо: 0 
Профиль
постоянный участник




Пост N: 600
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.05.08 12:50. Заголовок: Спасибо Григорий !!!..


Спасибо Григорий !!!

Спасибо: 0 
Профиль
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 76
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет