Страница: 1 |
Страница: 1 |
Вопрос: Как вывести окно на первый план
Добавлено: 21.05.05 07:24
Автор вопроса: Diz | Web-сайт:
Не сделать Always on top, а просто вывести на первый план
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #1
Добавлено: 21.05.05 09:18
SetActiveWindow
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 21.05.05 18:04
см мой модуль, он умеет
http://www.vbnet.ru/forum/show.aspx?id=74927
ответ 2
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 22.05.05 10:48
Уж тогда:
' Процедура : SetForegroundWindowEx
' Описание : Вывод окна на передний план
' Кем создан : SNE
' Дата-Время : 07.11.2004-19:05:49
'
' Параметры : hWnd - хэндл окошка
'--------------------------------------------------------------------------------
Public Function SetForegroundWindowEx(ByVal hwnd As Long) As Boolean
Dim MyThreadID As Long, ActiveThreadID As Long
MyThreadID = GetCurrentThreadId() ' Получениие ID нашего потока
ActiveThreadID = GetWindowThreadProcessId(GetForegroundWindow, cNull) ' Получение ID потока активного, в данный момент, окна
Call AttachThreadInput(MyThreadID, ActiveThreadID, vbNull) ' Присоединяемся к потоку окно которого, в данный момент, активно
Call SetForegroundWindow(hwnd) ' Теперь мы имеем полное право выйти из сумрака
Call AttachThreadInput(MyThreadID, ActiveThreadID, cNull) ' Более не имеет смысла держаться за поток чье окно БЫЛО активным
SetForegroundWindowEx = (GetForegroundWindow = hwnd)
End Function
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 22.05.05 14:39
ну может, но вроде можно и проще, есть самая обычная айпи функция, нафиг тут к потоку присоединятся?
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 23.05.05 00:10
чтобы переключить пользовательский ввод, мол это переключает пользователь... в этом случае систеама нам позолит получить фокус однозначно... а если этого не сделать, может и заговняться... Неужель никогда не замечал что окошко требует фокуса и на панели задач мигает???
Номер ответа: 6
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #6
Добавлено: 23.05.05 11:13
Самый надёжный способ - это сделать Always on top, и сразу же снять Always on top.
Работает безотказно.
Номер ответа: 7
Автор ответа:
Dron
ICQ: 331667224
Вопросов: 7
Ответов: 10
Профиль | | #7
Добавлено: 17.08.05 17:41
'модуль
Public Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const HWND_NOTOPMOST = -2
Public Const HWND_TOPMOST = -1
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Sub SetFormPosition(frmHandl As Long, TopPosition As Boolean)
If TopPosition Then
SetWindowPos frmHandl, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE
Else
SetWindowPos frmHandl, HWND_NOTOPMOST, 0, 0, 0, 0, _
SWP_NOSIZE Or SWP_NOMOVE
End If
End Sub
'форма
Private Sub Form_Load()
call SetFormPosition(Me.hwnd, True)
End Sub
Private Sub Form_Unload(Cancel As Integer)
call SetFormPosition(Me.hwnd, False)
End Sub