-
Нужно повесить своё окно как бы "модальным" поверх чужого...
Чтоб чужое "блокировалось" чтоль пока не закрыть моё (при нажатии на чужое окно оно не активируется а мигает заголовок моего - как если открыть "калькулятор - о программе" и пытаться нажать на сам калькулятор не закрыв about-окно)...
Известно HWND чужого окна (ну и моего разумеется тоже)...
Пробовал EnableWindow, SetParent, SetForegroundWindow...
Что-то это всё не то...
Прочёл где-то про некое SetSysModalWindow, но его почему-то не рекомендуют использовать, да и не объявлено у меня такой функции (не смог найти как её объявлять вообще)...
-
> Студент (08.01.11 02:10)
>
> Нужно повесить своё окно как бы "модальным" поверх чужого.
> ..
> Чтоб чужое "блокировалось" чтоль пока не закрыть моё
ИШ тебе в ответе расскажет об том как в древнем Китае обращались с желающими "странного". :)
Проще всего наняться на работу в Microsoft и ввести в Windows сие ноу-хау. :)
-
Но другие-то программы как-то делают так?
Через Spy++ удалось узнать что чужому окну при этом добавляется WS_DISABLED...
Попробовал сделать так же с помощью EnableWindow "выключать" чужое при создании моего окна и "включать" чужое при закрытии моего - результат не совсем похож на то что других программ получается...
Больше ничего примечательного Spy++ вроде не показывал... А может и я не заметил просто...
> ИШ тебе в ответе расскажет об том как в древнем Китае обращались с желающими "странного". :)
Хм... Можно поподробнее и про это? :)
-
> Студент (08.01.11 02:30) [2]
>
> Но другие-то программы как-то делают так?
Какие? Назови! Какие программы умеют блокировать доступ к окнам других программ"?
> Хм... Можно поподробнее и про это?
Это слишком "кровожадно" для меня.
-
Троян WinLock?
-
Да не блокировать... Я ж не зря в кавычках написал... Просто открываться модально к окну...
Почему сразу троян? Они мне не интересны, я люблю полезное делать...
Кажется понял... У тех других программ окна диалоговые... Диалоговые вроде через DialogBoxParam так можно...
А окно созданное CreateWindowEx никак не получится? Придётся диалоговое окно клеить?
Я не умею диалоговые делать, не работал с ими... В делфи есть редактор диалоговых окон как в MSVC++?
-
> Просто открываться модально к окну...
Такое пока не придумано. Модально к ОС можно.
-
Может я просто не так выражаюсь... Самоучка всё-таки, не знаю терминов нормальных... :)
> Модально к ОС
м... Это как вообще? Ни разу не видел...
-
> Германн © (08.01.11 03:55) [6]
>
>
> > Просто открываться модально к окну...
>
> Такое пока не придумано. Модально к ОС можно.
>
Вру. Можно.
Склероз, блин.
См. реализацию MessageBox.
-
MessageBox реализацию? Быть может вы имели ввиду DialogBox? Так там и есть этот DialogBoxParam...
Можно небольшой вопрос "оффтопом"?
Как профессионалы посоветуют поступать, если программа (точнее ОС при запуске программы) иногда выдаёт такое:
Ошибка приложения: "бла-бла неизвестное программное исключение бла-бла по адресу 0x........".
Было б название ошибки - я б его впечатал в поисковик... А вот что с "неизвестным"-то поделать? о___о
-
> если программа
чья?
-
> Как профессионалы посоветуют поступать, если программа (точнее
> ОС при запуске программы) иногда выдаёт такое:
>
> Ошибка приложения: "бла-бла неизвестное программное исключение
> бла-бла по адресу 0x........".
Я просто выкидываю такие дерьмопроги.
-
> Германн © (08.01.11 04:18) [8]
> См. реализацию MessageBox.
это когда он устроится в MS там он и посмотрит :)
> Проще всего наняться на работу в Microsoft
-
Так что? Кроме как диалоговое окно + DialogBoxParam нет вариантов?
> чья?
Та что я пишу...
Но с этим я уже разобрался... Не подумал что моей программе может передаваться вместо "рабочей папки" непонятно что...
Кстати нашёл объявление SetSysModalWindow в WinUser.h... Шикарное объявление:
#define SetSysModalWindow(hWnd) (NULL)
-
> Германн © (08.01.11 02:58) [3]
> > Студент (08.01.11 02:30) [2]> > Но другие-то программы
> как-то делают так?Какие? Назови! Какие программы умеют блокировать
> доступ к окнам других программ"?
Такие, типа: "Отправь СМС на номер 12345, а то до форматирования винта осталось 78 секунд"
-
Ребята из мелкософта не зря потрудились над тем, чтобы максимально затруднить задачу спереть чужой фокус и монополизировать фокус.
Если у тебя не троян-локер, то очень сильно пахнет "проблемой X, Y, Z".
Колись: с какой целью интересуешься?
-
> DiamondShark © (10.01.11 13:55) [15]
> Ребята из мелкософта не зря потрудились над тем, чтобы максимально
> затруднить задачу спереть чужой фокус и монополизировать
> фокус.
Сколько бы они не трудились, пока есть эксплорер и панель задач, будет и функция, переключающая задачи и делающая то что нужно, найти которую всегда можно. Раньше это была SwitchToThisWindow теперь другая, но кто хочет тот найдет.
-
> DVM © (10.01.11 14:44) [16]
А я и не говорю, что это невозможно.
Более того, я даже не уверен, что майкрософт собирался решить проблему радикально (например, введя привилегии на вызов User-функций), видимо, они сочли вполне достаточным защититься лишь от неугомонных кулхацкеров, причём, без существенных проблем совместимости.
Речь о другом, о том, что серьёзные люди понимают, что хулиганство и рукожопие в среде с разделяемыми ресурсами -- это ад и израиль.
А школоту -- хлебом не корми, только дай бы чего-нибудь скырть.
-
DiamondShark, DVM, вы говорите загадками... %)
Ну не хочу я говорить что есть X... Слишком глупо будет выглядеть...
Как я уже разобрался все делают через Z - создают диалоговое окно и открывают его через DialogBoxParam...
А я не умею делать диалоговым окном, ну не делал я такого никогда... Да и редактором ресурсов вроде любой дурак попортить его может...
Вот и думаю... Можно ли сделать окно как я умею (CreateWindowEx) и получить тот же эффект что при DialogBoxParam получается...
-
> Можно ли сделать окно как я умею (CreateWindowEx) и получить
> тот же эффект что при DialogBoxParam получается...
нет, CreateWindow(Ex) не задает поведения окна.
-
> Студент (12.01.11 11:53) [18]
Если ты боишься за ресурсы, но требуется поведение DialogBoxParam, то, возможно, тебя спасёт DialogBoxIndirectParam
-
> Студент (12.01.11 11:53) [18]
> Вот и думаю... Можно ли сделать окно как я умею (CreateWindowEx)
> и получить тот же эффект что при DialogBoxParam получается.
The DialogBoxParam function uses the CreateWindowEx function to create
the dialog box.
--
Regards, LVT.
-
> возможно, тебя спасёт DialogBoxIndirectParam
Спасибо, посмотрю...)
> The DialogBoxParam function uses the CreateWindowEx function
> to create the dialog box.
Это я видел... Понятно что оно использует CreateWindow, как по-другому-то...
Только как это пригодится в моём случае?