Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.26;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2002.08.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
1-84996
ArhAngel2
2002-08-15 21:48
2002.08.26
Как скопировать массив в массив?


1-85109
AlexCement
2002-08-15 08:10
2002.08.26
Работа с верхним и нижним индексом текста


6-85161
heex
2002-06-14 17:38
2002.08.26
все ли в сети закрыли ДАННОЕ приложение.


1-85091
nester
2002-08-13 01:23
2002.08.26
Как сделать так, чтобы программа не отображалась в панели задач


1-85105
npAKtuk
2002-08-14 13:43
2002.08.26
Как передать число после Formatfloat в Excel