Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
SystemParametersInfo 97&, True, CStr(1), 0
SystemParametersInfo 97&, False, CStr(1), 0
А параметры я найду - есть у знакомого толстая книжка по API. Только справлюсь ли я таким способом с WinKey?
Declare Function GetShellWindow Lib "user32.dll" () As Long
Declare Function SetWindowLongPtr Lib "user32.dll" Alias "SetWindowLongPtrW" (ByVal handle As Long, ByVal i As Integer, ByVal style As Long) As Long
Const GWLP_HWNDPARENT = -8 ' значение этой константы нашёл в Инете, может неверное...
Dim X As Long
X = GetShellWindow()
'X перевожу в 16-ричное своей функцией и получается такое значение: &H1010A
SetWindowLongPtr form1.hWnd, GWLP_HWNDPARENT, &H1010A
Teranas писал(а):запрещать сворачивать форму не хорошо, 1) это не уважение к пользователю, хотя этот пункт можно игнорировать 2) это вмешательство в работу системы, что пользователю может, не понравится, да и антивирусам, по-секрету
Teranas писал(а):Вообще ошибка при сворачивании типичная для 3D программ, и производители, что бы упростить задачу отключают сочетания клавиш приводящие к переключению или сворачиванию своей программы
вот, нашел для вас информацию
https://exelab.ru/pro/cpp.php?r=system&d=zdrt928
и вот ещё на тему ошибки
http://www.cyberforum.ru/visual-basic/thread498556.html
SetWindowLongPtr frmLSpeedPanel.hWnd, GWLP_HWNDPARENT, &H1010A
TrueTrue писал(а):но таким образом я не отловлю справа в углу экрана сворачивание всех окон или значок свернуть все окна.
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
Call SetWindowPos(form1.hwnd, -1, 0, 0, 0, 0, 3)
alibek писал(а):TrueTrue писал(а):но таким образом я не отловлю справа в углу экрана сворачивание всех окон или значок свернуть все окна.
Дело в том, что этот значок (или команда Win+D) не сворачивает окна, а скрывает их, выводя рабочий стол. Это запретить нельзя.
А сворачивание окна (или Win+M) предотвращается типом окна/границы.
SetParent form1.hWnd, &H1010A
TrueTrue писал(а):Я делаю всплывающие панели по бокам экрана. Как были в WinXP примерно. Им по статусу необходимо быть не сворачиваемыми.
Хакер писал(а):TrueTrue писал(а):Я делаю всплывающие панели по бокам экрана. Как были в WinXP примерно. Им по статусу необходимо быть не сворачиваемыми.
Значит ты делаешь их категорически неправильно.
Покажи скриншотом или на примере, что ты пытаешься сделать?
TrueTrue писал(а): Я такими панелями пользовался всегда в WinXP, потом перешёл на Семёрку, а там таких панелей не было.
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
bon818 писал(а):TrueTrue писал(а): Я такими панелями пользовался всегда в WinXP, потом перешёл на Семёрку, а там таких панелей не было.
Да уж, сам на семерке то и дело тыкаю мышкой в верхнею часть стола чтоб вылезло окно, а его там нет, очень не удобно когда привыкнешь.
Да вообще неудобно без них. Пытался найти, что то подобное, но так и не нашел.
Вы свою прогу публикуете ? Можно попробовать?
По поводу сворачивания в ХР.
Использовал это:
Файл: Свернуть все окна.scf
Содержимое:
- Код: Выделить всё
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
И эти окна-панели тоже сворачиваются, как и все остальные.
Но после все встают на свои места.
Кроме того, не какие уведомления, система в сворачиваемые окна не отсылает(неспроста наверно:)),
так что игнорировать их или как то среагировать не получится (легально).
Присутствует на экране
Команда сверну все окна
TrueTrue писал(а):Да я уже давно всё сделал и пользуюсь ими лет 5, просто они всегда сворачивались, мне надоело и я решил заняться этим вопросом.
TrueTrue писал(а):Как я и сказал, именно запрет сворачивания у меня получилось достичь посредством того, что я сделал эти окна ДОЧЕРНИМИ рабочему столу. НО! Теперь проблема, что они всегда находятся только под Окнами. Тоесть их невозможно вывести на передний план, совсем. Хочу всётаки разобраться с этим вопросом.
Хакер писал(а):TrueTrue писал(а):...А про системное workarea ты слышишь впервые, скажи?
А как добился то? Я честно сказать из последнего поста мало чего понял.TrueTrue писал(а):Спасибо всем за помощь и участие, я таки добился необходимого результата.
TrueTrue писал(а):Я очень рад, что хоть что-то остаётся в этой жизни неизменным.
ger_kar писал(а):А как добился то? Я честно сказать из последнего поста мало чего понял.TrueTrue писал(а):Спасибо всем за помощь и участие, я таки добился необходимого результата.
SetParent form1.hWnd, &H1010A
Хакер писал(а):TrueTrue писал(а):Я очень рад, что хоть что-то остаётся в этой жизни неизменным.
Да, я тоже, сколько здесь сижу, вечно встречаю чудаков, которые, когда им пытаешься искренне помочь — без зла, без издёвки — взрываются своим негодованием по поводу того, что над ними издеваются или оказывают им помощь неправильным образом (как тут в соседнем топике жалуется Вова номерной).
Код не выкладывался, какими механизмами пользуется человек — не ясно. Вопрос о том, пользуется ли он системными механизмами и знает ли про workarea, воспринимает за издевательство. Что тут можно ещё сказать...
Сейчас этот форум просматривают: Google-бот и гости: 32