Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как вывести окно на первый план Добавлено: 21.05.05 07:24  

Автор вопроса:  Diz | Web-сайт: www.TS-Group.fatal.ru
Не сделать Always on top, а просто вывести на первый план

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 22.05.05 10:48
Уж тогда:

' Проект     :  OfflineClient
' Процедура  :  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-сайт: hw.t-k.ru
 Профиль | | #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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам