powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как отключить состояние "поверх всех окон"
9 сообщений из 9, страница 1 из 1
Как отключить состояние "поверх всех окон"
    #37580426
donpauls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для включения этого состояния использую следующий код:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Option Explicit
Private 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
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOZORDER = &H4
Const SWP_NOREDRAW = &H8
Const SWP_NOACTIVATE = &H10
Const SWP_FRAMECHANGED = &H20        '  The frame changed: send WM_NCCALCSIZE
Const SWP_SHOWWINDOW = &H40
Const SWP_HIDEWINDOW = &H80
Const SWP_NOCOPYBITS = &H100
Const SWP_NOOWNERZORDER = &H200      '  Don't do owner Z ordering
Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Const HWND_TOP = 0
Const HWND_BOTTOM = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2

'Кнопка "Поверх всех окон"
Private Sub Command1_Click()
Dim i
    i = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub



Вопрос: какой код должна содержать кнопка "Отменить состояние "Поверх всех окон""?
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37580457
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donpauls,

я думаю, вполне логично, что если константа HWND_TOPMOST ставит твоё окно поверх остальных, то константа HWND_NOTOPMOST должна это становление отменять)))

Код: vbnet
1.
2.
3.
4.
Private Sub Command2_Click()
Dim i
    i = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37580748
donpauls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZero,

Спасибо, работает!
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37697249
donpauls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZerodonpauls,

я думаю, вполне логично, что если константа HWND_TOPMOST ставит твоё окно поверх остальных, то константа HWND_NOTOPMOST должна это становление отменять)))

Код: vbnet
1.
2.
3.
4.
Private Sub Command2_Click()
Dim i
    i = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub



Данная константа действительно это становление отменяет, однако пока мышкой не кликнешь по форме, ничего не происходит, т.е. форма так и остаётся висеть поверх всех окон..
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37697273
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donpauls,

Код: vbnet
1.
2.
3.
Private Sub Command3_Click()
Form1.WindowState = 1
End Sub
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37697275
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donpauls однако пока мышкой не кликнешь по форме мб ты имел в виду по рабочему столу? или что угодно, но не форма своей проги donpaulsничего не происходит, т.е. форма так и остаётся висеть поверх всех окон.. а чего ты ожидал? ты жмёшь на кнопку своей проги. логично, что фокус остаётся у этой проги
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37697470
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donpaulsДанная константа действительно это становление отменяет, однако пока мышкой не кликнешь по форме, ничего не происходит, т.е. форма так и остаётся висеть поверх всех окон..
Код: vbnet
1.
SetForegroundWindow
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37697534
donpauls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZerodonpauls однако пока мышкой не кликнешь по форме мб ты имел в виду по рабочему столу? или что угодно, но не форма своей проги donpaulsничего не происходит, т.е. форма так и остаётся висеть поверх всех окон.. а чего ты ожидал? ты жмёшь на кнопку своей проги. логично, что фокус остаётся у этой проги

Дело в том, что не я жму на кнопку, а другие процессы заставляют форму появляться сверху.

Но всё равно спасибо!
Form1.WindowState = 1 - помогло
...
Рейтинг: 0 / 0
Как отключить состояние "поверх всех окон"
    #37697565
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
donpauls,

этот код сворачивает форму. если нужно просто сделать окно неактивным, то нужно сделать активным любое другое окно
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как отключить состояние "поверх всех окон"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]