Свернуть все окна, горячие клавиши

Вадимиус
Дата: 30.10.2014 20:30:52
ПРивет всем !

1) Написал небольшую программу. На COM-порту ждет дискретный сигнал и по нему должна свернуть все окна (типа как нажатие Win+M или Win+D) и показать другое окно.
Писал на MVC++6. Как чисто программно свернуть все окна не разобрался и сделал упрощённый вариант:

// сворачивание окон
ShellExecute(NULL,"open",".\\1.scf",NULL,NULL,0);

// файл 1.scf
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop


Компилирую. Под XP SP3 работает, как часы. Сегодня поставили на комп Win-7 Proff - этот же екзешник уже нифига не работает !
Более того, запустить этот файл через проводник или тотал - то же самое. Ни какого результата.

Как быть ? Подскажите плизз, пример кода, чтобы сворачивал все окна !

SendMessage() коды клавиш (win+D) почему-то тоже не работает, хотя не уверен, что правильно посылал месаги...
Dimitry Sibiryakov
Дата: 30.10.2014 20:44:19

Вадимиус
Как чисто программно свернуть все окна не разобрался

Шарахнуть броадкастом WM_SYSCOMMAND c SC_MINIMIZE не пробовал?

Posted via ActualForum NNTP Server 1.5

Вадимиус
Дата: 30.10.2014 20:55:28
Dimitry Sibiryakov, чуть проясните:

SendMessage( HWND hWnd, WM_SYSCOMMAND,
_In_ WPARAM wParam,
_In_ LPARAM lParam );

а SC_MINIMIZE - это WParam или lParam ??

(Если вызываю внутри метода главной формы, то hWnd не пишу )

Или я не про ТО ?
Вадимиус
Дата: 30.10.2014 20:58:44
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE,0 );

благополучно свернуло СЕБЯ :) но остальные окна винды не тронуло )))
Basil A. Sidorov
Дата: 30.10.2014 21:02:25
SendMessage function:
hWnd [in]
Type: HWND
A handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST ((HWND)0xffff), the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.
Изопропил
Дата: 30.10.2014 21:05:07
Вадимиус,

ну дык хэндл для броадкаста - HWND_BROADCAST ((HWND)0xffff)

небось какой MFC есть или другая лабуда?

::SendMessage звать нужно с полным набором параметров в таком случае
Вадимиус
Дата: 30.10.2014 21:14:01
Изопропил
Вадимиус,

ну дык хэндл для броадкаста - HWND_BROADCAST ((HWND)0xffff)

небось какой MFC есть или другая лабуда?

::SendMessage звать нужно с полным набором параметров в таком случае


Оооо! Только что малость не опупел:

::SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MINIMIZE,0 );

Рабочий стол заполнило ну... штук так 50-60 непонятных заголовков окон, включая какие-то из систрея, какие-то вообще никогда не видимые. До сих пор некоторые не убираются !
Буду перегружаться :-)))

это или не ТО решение, или я не туда кнопаю......
Изопропил
Дата: 30.10.2014 21:16:58
Вадимиус,

если что - мопед не мой, я только объяву подал
Вадимиус
Дата: 30.10.2014 21:26:07
Изопропил
Вадимиус,

если что - мопед не мой, я только объяву подал


Ну эт понятно.....

броадкаст не подходит видимо... ибо: "including disabled or invisible unowned windows, overlapped windows, and pop-up windows" - т.е. всем всем всем - не нужно отправлять сий меседж....

Что , искать все видимые окна и только им посылать минимизацию ?? Через FindWindow ??
Изопропил
Дата: 30.10.2014 21:32:41
Вадимиус
Что , искать все видимые окна и только им посылать минимизацию ?? Через FindWindow ??

через EnumWindows

и внимательно смотреть - кому посылать, а кому нет. Гугл в помощь

внутренний голос говорит однако, что должен быть путь через шелл