Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 09.01.08 01:48. Заголовок: Список окон
Всем привет ! Можно ли получить список хендлов окон открытых в системе, их заголовков и состояние(min/max) ?
|
|
|
Ответов - 16
[только новые]
|
|
|
| модератор
|
Пост N: 681
Зарегистрирован: 25.05.05
|
|
Отправлено: 09.01.08 11:59. Заголовок: fil пишет: Можно ли..
fil пишет: цитата: | Можно ли получить список хендлов окон открытых в системе |
| Да, это возможно, если хорошо владеешь WinAPI. Готовый пример лежит по следующему адресу: http://minigui.mylivepage.ru/file/?fileid=2085 Кстати, его исходники есть в поставке MiniGUI Extended Edition
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 11.01.08 19:02. Заголовок: Список окон получил,..
Список окон получил, однако если аппликация запускается через OLE, то заголовка ее окна в этом списке нет(хотя это окно спокойно находится через findwindow). Если аппликацию запустить самостоятельно ее заголовок попадает в список ...?
|
|
|
|
| постоянный участник
|
Пост N: 393
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.01.08 17:05. Заголовок: fil пишет: Список о..
fil пишет: А можно получить тоже самое на чистом хХарборе ? Приведите исходник плиз......
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 14.01.08 15:38. Заголовок: Можно ли ассоциирова..
Можно ли ассоциировать окно с процессом его породившим ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 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 */
|
|
|
|
| постоянный участник
|
Пост N: 399
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.01.08 23:07. Заголовок: ММК пишет: А что , ..
ММК пишет: цитата: | А что , если попробовать так ... #include "FiveWin.ch" |
| А на чистом хХарборе можно сделать ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 15.01.08 01:32. Заголовок: Список задач через G..
Список задач через GetTasks ? А ежели у окна нет заголовка или заголовок не включает название exe-шника или есть несколько процессов с одинаковым именем ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 15.01.08 01:43. Заголовок: А окна аппликации за..
А окна аппликации запущенной через OleAutomation так и не нашел, хотя сделал список окон со всеми дочерними окнами. Т.к. аппликация запущенная таким образом имеет статус hide, создается впечатле, что GetWindowText( hWnd ) не дает заголовков окон которые iswindowvisible(hWnd)=.F.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 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"
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 15.01.08 15:31. Заголовок: не помогло Есть така..
не помогло Есть такая функция GetWndTask(hWnd) через которую можно получить хендл аппликации по ее главному окну, а наоборот можно ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 15.01.08 17:37. Заголовок: fil пишет: а наобор..
fil пишет: :)) Ну тогда , наверное , надо начинать от печки: что и где надо сделать. Напиши мне на почту, поищем...
|
|
|
|
|
| постоянный участник
|
Пост N: 598
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.05.08 11:07. Заголовок: gfilatov пишет: Гот..
gfilatov пишет: Нет такого файла ..... Где искать ?
|
|
|
|
| модератор
|
Пост N: 785
Зарегистрирован: 25.05.05
|
|
Отправлено: 31.05.08 12:12. Заголовок: Andrey пишет: Где и..
|
|
|
|
| постоянный участник
|
Пост N: 599
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.05.08 12:23. Заголовок: А исходник к нему по..
А исходник к нему посмотреть где ?
|
|
|
|
| модератор
|
Пост N: 787
Зарегистрирован: 25.05.05
|
|
Отправлено: 31.05.08 12:28. Заголовок: Andrey пишет: исход..
Andrey пишет: цитата: | исходник к нему посмотреть где ? |
| gfilatov пишет: цитата: | его исходники есть в поставке MiniGUI Extended Edition |
| Но там ты увидишь только интерфейс Все обращения к процессам сидят в бесплатной библиотеке procinfo, которая тоже есть в поставке...
|
|
|
|
| постоянный участник
|
Пост N: 600
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.05.08 12:50. Заголовок: Спасибо Григорий !!!..
Спасибо Григорий !!!
|
|
|
|