Форум: "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.006 c