Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Свернуть все окна, горячие клавиши / 24 сообщений из 24, страница 1 из 1
30.10.2014, 20:30
    #38792251
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ПРивет всем !

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
// сворачивание окон
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) почему-то тоже не работает, хотя не уверен, что правильно посылал месаги...
...
Рейтинг: 0 / 0
30.10.2014, 20:44
    #38792258
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ВадимиусКак чисто программно свернуть все окна не разобрался
Шарахнуть броадкастом WM_SYSCOMMAND c SC_MINIMIZE не пробовал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.10.2014, 20:55
    #38792265
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Dimitry Sibiryakov, чуть проясните:

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

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

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

Или я не про ТО ?
...
Рейтинг: 0 / 0
30.10.2014, 20:58
    #38792268
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE,0 );

благополучно свернуло СЕБЯ :) но остальные окна винды не тронуло )))
...
Рейтинг: 0 / 0
30.10.2014, 21:02
    #38792273
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
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.
...
Рейтинг: 0 / 0
30.10.2014, 21:05
    #38792274
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Вадимиус,

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

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

::SendMessage звать нужно с полным набором параметров в таком случае
...
Рейтинг: 0 / 0
30.10.2014, 21:14
    #38792278
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ИзопропилВадимиус,

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

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

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

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

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

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

это или не ТО решение, или я не туда кнопаю......
...
Рейтинг: 0 / 0
30.10.2014, 21:16
    #38792280
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Вадимиус,

если что - мопед не мой, я только объяву подал
...
Рейтинг: 0 / 0
30.10.2014, 21:26
    #38792289
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ИзопропилВадимиус,

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

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

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

Что , искать все видимые окна и только им посылать минимизацию ?? Через FindWindow ??
...
Рейтинг: 0 / 0
30.10.2014, 21:32
    #38792292
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ВадимиусЧто , искать все видимые окна и только им посылать минимизацию ?? Через FindWindow ??
через EnumWindows

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

внутренний голос говорит однако, что должен быть путь через шелл
...
Рейтинг: 0 / 0
30.10.2014, 21:43
    #38792297
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ИзопропилВадимиусЧто , искать все видимые окна и только им посылать минимизацию ?? Через FindWindow ??
через EnumWindows

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

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

Да да, EnumWindows - читаю. Но что-то мне не понятно про параметры
WNDENUMPROC lpEnumFunc , // указатель на функцию обратного вызова
LPARAM lParam // определяемое программой значение
Никогда еще не сталкивался. Как заюзать ?

Кстати хороший голос про шелл.... тем более про совместимость с Win 7... У кого голос что-то говорит ? Мой пока молчит гад....
...
Рейтинг: 0 / 0
30.10.2014, 22:13
    #38792307
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ВадимиусУ кого голос что-то говорит ? Мой пока молчит гад....
Когда молчит голос - спрашивай гугль:
http://www.google.com/search?nord=1&sclient=psy-ab&q=MSDN MinimizeAll C &btnG=

Он тебя легко выведет на
http://stackoverflow.com/questions/6582000/executing-show-desktop-from-c

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.10.2014, 22:35
    #38792319
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Dimitry Sibiryakov,

О! Получилось: !

Код: plaintext
1.
2.
3.
4.
#define MIN_ALL        419

    HWND lHwnd = ::FindWindow("Shell_TrayWnd",NULL);
    ::SendMessage(lHwnd,WM_COMMAND,MIN_ALL,0); // Minimize all windows



Замечтательно свернуло все окна кроме моего. Ну с моим - не проблема. Как его сворачивать - знаю )))))))))
Спааасибочки за подсказку, готовую к употреблению :-)

Вот интересно, откуда человек догадался, что #define MIN_ALL 419, а не 580 или 23009 ???
...
Рейтинг: 0 / 0
30.10.2014, 22:41
    #38792321
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Кстати еще вопрос:
1) откомпилю на VC++6. На XP+SP3 - уже работает.
Если на WIn 7 не заработает, куда рыть ?

2) АНахронизЬм конечно, мой древний VC++6, но все же. Проекты старые нормально будут компилиться на , допустим VC2005 или VC2008 ???
...
Рейтинг: 0 / 0
30.10.2014, 23:05
    #38792340
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ВадимиусЕсли на WIn 7 не заработает, куда рыть ?
проблемы следует решать по мере возникновения.

ВадимиусПроекты старые нормально будут компилиться на , допустим VC2005 или VC2008 ???
конвертнутся и скомпилятся(если фокусов никаких нет) а если фокусы есть - напильник текстовый редактор (к файлам проекта) решит любую проблему
...
Рейтинг: 0 / 0
30.10.2014, 23:16
    #38792346
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Вадимиускуда рыть ?
По второй приведённой ссылке было три способа. Почему ты ухватился за самый хакерский?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.10.2014, 23:20
    #38792350
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
...
Рейтинг: 0 / 0
30.10.2014, 23:27
    #38792354
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Dimitry SibiryakovВадимиускуда рыть ?
По второй приведённой ссылке было три способа. Почему ты ухватился за самый хакерский?


2 способ: "C++ version:" - не понятен.
Первый - на С# (не работал на нем)

3-й хакерский ? По-моему, самый простой. И сработал сразу )))
Стало сразу понятна суть, за исключением класса окна "Shell_TrayWnd"
Хотя гугл мне поведал, что "Shell_TrayWnd" - класс окна панели задач ! Сразу вопрос:
Как бы мне понять, что за сворачивание всех окон отвечает ПАНЕЛЬ ЗАДАЧ ??? Как бы для меня - это узкая полоска УЖЕ свернутых окон ???
Ну и вообще, откуда программеры знают, что в сообщении SYS_COMMAND нужно передать
именно MIN_ALL ?? И откуда взялась такая точная цифра в строчке #define... ??

ОДни вопросы блин...
...
Рейтинг: 0 / 0
30.10.2014, 23:30
    #38792357
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Dimitry Sibiryakov http://msdn.microsoft.com/en-us/library/windows/desktop/bb774094(v=vs.85).aspx


Спасибо ! Наслаждаюсь неведомым ранее :)

Не в тему: смайлики в сообщениях не вставляются ?
...
Рейтинг: 0 / 0
30.10.2014, 23:37
    #38792367
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ВадимиусНу и вообще, откуда программеры знают, что в сообщении SYS_COMMAND нужно передать
внутренний голос подсказывает

для начала внимательное чтение документации,
затем изучение заголовочных и интерфейсных (idl) файлов,
файлов с отладочной информацией (pdb)
далее запуск всевозможных шпиёнов,
DDK даёт информацию
в блогах майкрософтных проскакивает информация
отладчик и дизассемблер в конце концов
и дальше по кругу
...
Рейтинг: 0 / 0
30.10.2014, 23:39
    #38792368
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
ВадимиусНе в тему: смайлики в сообщениях не вставляются ?неа, не вставляются
...
Рейтинг: 0 / 0
30.10.2014, 23:42
    #38792371
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
egorychВадимиусНе в тему: смайлики в сообщениях не вставляются ?неа, не вставляются
шаман !
...
Рейтинг: 0 / 0
30.10.2014, 23:52
    #38792379
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Мдя, есть над чем мозговать....

Спасибо за помощь, коллеги, вправили немного мозги

Завтра этот код попробую на семёрке ;-)
...
Рейтинг: 0 / 0
31.10.2014, 22:47
    #38793448
Вадимиус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свернуть все окна, горячие клавиши
Привет, коллеги, если ещё не надоел )))

Код, приведенный вами и вставленный в прогу - работает. Откомпилировано на VC++6 (опробовано на XP, 7)

На работе поставил VC++2008. В принципе всё собралось и там, но некоторые строчки кода просто не работают.

Например:
Код: plaintext
1.
2.
3.
4.
5.
BOOL CAntiKuzyaApp::InitInstance()
{
	AfxEnableControlContainer();
         ............................
	SetDialogBkColor(RGB(210,190,10),RGB(0,0,100));


не работает. Справка неприятно удивила "функция устарела, пользуйся WM_CTLCOLOR " ну да хрен с ним.

Не совсем понял, почему не открывается дизайнер фомы... "opened in another editor" ...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Свернуть все окна, горячие клавиши / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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