Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];

Вниз

hwnd   Найти похожие ветки 

 
Twin   (2002-06-20 15:55) [0]

Можно из hwnd узнать отображается ли окно в task bar (пуске)

У меня есть код на васике

Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

Sub GetTaskList()
Dim CurrWnd As Long, Length As Long, ListItem$
"Получаем hWnd, который будет первым в списке
"через него, мы сможем отыскать другие задачи
CurrWnd = GetWindow(Me.hwnd, GW_HWNDFIRST)
"Пока возвращаемый hWnd имеет смысл, выполняем цикл
Do While CurrWnd <> 0
"Получаем длину имени задания по CurrW nd
Length = GetWindowTextLength(CurrWnd)
"Получить имя задачи из списка
ListItem = Space(Length + 1)
Length = GetWindowText(CurrWnd, ListItem, Length + 1)

"Если получили имя задачи, значит добавляем ее в список найденных
If Length > 0 Then
List1.AddItem ListItem
End If
"Переходим к следующей задаче из списка
CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
DoEvents
Loop
End Sub


 
Игорь Шевченко   (2002-06-20 17:13) [1]

Зачем такой изврат ?

function OnTaskBar (WindowHandle : HWND) : Boolean;
var
WinStyle, ExStyle : LongInt;
WindowOwner : HWND;
begin
WinStyle := GetWindowLong(WindowHandle, GWL_STYLE);
ExStyle := GetWindowLong(WindowHandle, GWL_EXSTYLE);
WindowOwner := GetWindow(WindowHandle, GW_OWNER);
Result := (WindowOwner = 0) AND
((ExStyle AND WS_EX_TOOLWINDOW) = 0) AND
((WinStyle AND WS_VISIBLE) <> 0) then
end;


 
Юрий Зотов   (2002-06-21 03:06) [2]

Еще один вариант:

if IsWindowWisible(хэндл) and (GetParent(хэндл) = FindWindow(класс_таскбара, nil) then ...


 
Twin   (2002-06-21 11:05) [3]

Игорь Шевченко © (20.06.02 17:13)

Вот более простой код, подсмотрел константу из Win32 API и Visual Basic.

С дельфой у меня немного туговато , но код вроде переписал нормально

ЗЫ. А зачем в конце ты написал Then???


Private Function OnTaskBar(WindowHandle As Long) As Boolean
Dim WinStyle&, ExStyle&
Dim WindowOwner&
WinStyle = GetWindowLong(WindowHandle, GWL_STYLE)
ExStyle = GetWindowLong(WindowHandle, GWL_EXSTYLE)
WindowOwner = GetWindow(WindowHandle, GW_OWNER)
OnTaskBar = ((ExStyle And WS_EX_APPWINDOW) <> 0)
End Function
"Const WS_EX_APPWINDOW = &H40000
"function OnTaskBar (WindowHandle : HWND) : Boolean;
"Var
" ExStyle : LongInt;
"begin
" ExStyle := GetWindowLong(WindowHandle, GWL_EXSTYLE);
" Result := ((ExStyle and WS_EX_APPWINDOW) <> 0)
"end;


 
Игорь Шевченко   (2002-06-21 12:12) [4]

Then я забыл убить :-)
Выдирал кусок из функции, которая перечисляет все окна на таскбаре с иконками и заголовками



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
3-84929
Иван
2002-08-06 08:36
2002.08.26
Пароли пользователей


3-84935
Пушкин
2002-08-06 16:41
2002.08.26
UpdateSQL & StoredProc


1-84954
Лана Розанова
2002-08-13 08:23
2002.08.26
О важном


1-84953
Smithson
2002-08-15 12:22
2002.08.26
Как отобразить на taskbarе вторичные формы?


14-85246
BigBadMutuh
2002-08-01 13:24
2002.08.26
Книга по ADO.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский