Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/64: Рейтинг темы: голосов - 64, средняя оценка - 4.73
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2

Открыть форму поверх всех окон

05.01.2011, 00:38. Показов 12577. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется открыть форму поверх всех приложений в системе так чтобы ее нельзя было не свернуть не вызвать меню кнопки пуск.
не путайте с TopMost = true

Добавлено через 10 минут
Для того чтобы открыть форму на полный экран на форуме уже был код:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Declare Function SetWindowPos Lib "user32.dll" Alias "SetWindowPos" (ByVal hWnd As IntPtr, ByVal hWndIntertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As Integer) As Boolean
    Private Declare Function GetSystemMetrics Lib "user32.dll" Alias "GetSystemMetrics" (ByVal Which As Integer) As Integer
    Private Const SM_CXSCREEN As Integer = 0
    Private Const SM_CYSCREEN As Integer = 1
    Private Shared HWND_TOP As IntPtr = IntPtr.Zero
    Private Const SWP_SHOWWINDOW As Integer = 64
 
    Public ReadOnly Property ScreenX() As Integer
        Get
            Return GetSystemMetrics(SM_CXSCREEN)
        End Get
    End Property
 
    Public ReadOnly Property ScreenY() As Integer
        Get
            Return GetSystemMetrics(SM_CYSCREEN)
        End Get
    End Property
   
        Me.WindowState = FormWindowState.Maximized
        Me.FormBorderStyle = FormBorderStyle.None
        Me.TopMost = True
        SetWindowPos(Me.Handle, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW)
    End Sub
Но кнопка пуск все равно работает и открывает меню поверх этой формы
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2011, 00:38
Ответы с готовыми решениями:

Открыть форму поверх всех окон на свою проект
Привет всем форумчане! У меня такая проблема, на проекте есть форма "найти" я хочу что форма найти остаться перед главную форму (как...

Сделать форму поверх всех окон в системе
Public Class Form2 Dim i As Integer = 0 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)...

Как программно сделать форму поверх всех окон
Народ пишу прогу на Visual Basic.NET, по задумке форма должна закрыть весь экран ,в настройках формы я сзделал соответствующие настройки но...

33
Почетный модератор
 Аватар для Памирыч
23251 / 9165 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
06.01.2011, 00:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от -=Nikto=- Посмотреть сообщение
ЭТО ИДЕАЛЬНО НЕЧЕГО И НЕ НАДО БОЛЬШЕ!!!
Это как раз одно из тех вещей, чего делать точно не нужно. Убиение процессов, запрещение диспетчера и прочее.

Pe4eNEG, поясни еще раз, чем так страшно открытие Пуска и сворачивание программы?
0
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
06.01.2011, 00:31  [ТС]
При проведении тестирования ученик сможет запустить что-нибудь из меню пуск, например какую-нибудь шпору с флешки
0
Почетный модератор
 Аватар для Памирыч
23251 / 9165 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
06.01.2011, 00:36
А из кармана он ничего достать не сможет? Ту же шпору? Если за ним смотрит кто-либо, то и флешку всунуть будет непросто.
0
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
06.01.2011, 00:39  [ТС]
Шпоры можно будет закинуть на компьютер и заранее (т.к. тестирование проводится в тех же классах информатики), а спрятать их там не составит ничего сложного для более-менее подготовленного человека
п.с. мы отошли от темы.
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
06.01.2011, 11:46
Цитата Сообщение от Pe4eNEG Посмотреть сообщение
В этом то и проблема, не получается перехватывать глобальные сочетания клавиш, даже если перехватить нажатие LWin
VB.NET
1
2
3
4
5
6
7
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.Control = False Then
            If e.KeyCode = Keys.LWin Or e.KeyCode = Keys.RWin Then
                Beep()
            End If
        End If
    End Sub
звук beep выполнится, но и меню пуск все равно вылезет, поэтому нужно как то решить это по другому
а что если вызывать не звук beep а посылать нажатие клавиши например той же lwin или esc или alt+f4

Добавлено через 10 минут
разместил на форме таймер с интервалом 1500 enabled =false ,почему 1500 да потому что кнопка пуск может вылезть с запозданием

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.Control = False Then
            If e.KeyCode = Keys.LWin Or e.KeyCode = Keys.RWin Then
                Timer1.Enabled = True
 
            End If
        End If
    End Sub
    Dim i As Integer = 3
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If i = 3 Then
            i = 0
            Timer1.Enabled = False
        End If
        SendKeys.Send("{Esc}")
        i = i + 1
    End Sub
0
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
06.01.2011, 14:53  [ТС]
не работает
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
06.01.2011, 17:37
Цитата Сообщение от Pe4eNEG Посмотреть сообщение
не работает
у меня windows XP все работает Пуск вылезает и он тут же закрывается!
0
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
06.01.2011, 17:39  [ТС]
У меня Windows 7 поэтому на ней все по другому
Скинь экзешку сюда
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
06.01.2011, 18:06
В общем код немного доработал (чтобы срабатывал всегда, а то там можно было избежать закрытие Пуска),
признаюсь код не очень удачен
Вложения
Тип файла: rar hjhhjhn.rar (6.3 Кб, 34 просмотров)
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
06.01.2011, 18:09
Pe4eNEG, создай ещё один рабочий стол в системе и запускай свою программу в нём. И решаться все твои проблемы, ни explorer'а ни task manger'а.

Только тогда принцип запуска должен быть такой:
1) Пользователь запускает твой EXE.
2) Во время первого запуска твой EXE создает новый рабочий стол и запускает на нём себя же (чтобы можно было отобразить окно приложения), после этого первый EXE завершается.
3) В это время 2й EXE нормально работает, и по завершению работы переключается обратно на старый рабочий стол, при этом завершаясь.

По моему вполне подойдет для решения твоей проблемы. Тебе нужны API: CreateProcess, CreateDesktop, SwitchDesktop, CloseDesktop и GetUserObjectInformation. Внимательно прочитай про структуру STARTUPINFO и её параметр lpDesktop, это, скажем так - ключевой момент.

Там ничего сложного удачи
1
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
06.01.2011, 20:29  [ТС]
Тоже интересный вариант, спасибо, но нет ли чего нибудь типа глобального перехвата клавиатуры?
0
 Аватар для sergeybr
13 / 13 / 0
Регистрация: 19.01.2010
Сообщений: 189
13.01.2011, 15:14
Я под Win7 пробовал все работает

Добавлено через 2 минуты
Цитата Сообщение от Pe4eNEG Посмотреть сообщение
Возможно Этот код не работает из за Win7
Я пробовал просто в параметрами Me.WindowState = FormWindowState.Maximized
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None

все нормально работает
0
10 / 10 / 2
Регистрация: 07.07.2013
Сообщений: 24
07.07.2013, 18:08
Может это и глупо, ведь я только учусь, но у меня была аналогичная проблема. Я использовал туже форму без бордюра, которую развернул на весь экран и в таймере постоянно переводил на неё фокус
VB.NET
1
2
3
4
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
     Cursor.Position = New Point(Screen.PrimaryScreen.Bounds.Width \ 2, Screen.PrimaryScreen.Bounds.Height \ 2) 'блокировать курсор по центру
     Me.Activate() 'Переводить фокус
End Sub
И как только что-нибудь открывалось, будь то пуск или ещё что-то, то сразу же фокус на мою форму переводился.
0
1 / 1 / 0
Регистрация: 18.06.2013
Сообщений: 8
18.07.2013, 12:10
Пацаны, поставьте Timer1 с Interval'ом "1", после этого поставьте значение "Timer1.Enabled = True" и впишите код в Timer1:
VB.NET
1
2
3
Me.TopMost=True ' быть поверх всех окон
' по желанию можно сделать фокусировку
Me.Activate ' фокусировка
Теперь, после этого у Вас будет фокусировка + окно поверх всех окон (ВСЕГДА, ДАЖЕ, БУДЕТ ПЕРЕКРЫВАТЬ КНОПКУ ПУСК, ЕСЛИ ВЫ СДЕЛАЛИ КАК И Я)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2013, 12:10
Помогаю со студенческими работами здесь

Установить форму поверх окна, которое ее вызвало, но не поверх других окон в системе
Есть приложение типа "блокнот" - это форма1. Форма2 - форма поиска и замены текста вызывается, как обычно, клавишами Ctrl+F. При...

Поверх всех окон
Всем привет. Как сделать приложение поверх всех окон?

Форма поверх всех окон
Я хочу сделать "блокировщик", что бы можно было оставлять комп без присмотра и идти по делам, а когда придёшь то разблокировать по паролю. ...

Надпись и чертеж поверх всех окон
Возникла необходимость создать текст и чертеж в произвольных координатах экрана, но что бы все элементы окон попадающие в данные...

Бегущая строка поверх всех окон
Всем здравствуйте. Из стартовой формы создаётся и запускается вторая форма в виде региона - строки текста: Public Class Form1 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru