Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.17;
Скачать: CL | DM;

Вниз

Как открыть своё окно как бы "модальным" поверх чужого?   Найти похожие ветки 

 
Студент   (2011-01-08 02:10) [0]

Нужно повесить своё окно как бы "модальным" поверх чужого...
Чтоб чужое "блокировалось" чтоль пока не закрыть моё (при нажатии на чужое окно оно не активируется а мигает заголовок моего - как если открыть "калькулятор - о программе" и пытаться нажать на сам калькулятор не закрыв about-окно)...
Известно HWND чужого окна (ну и моего разумеется тоже)...

Пробовал EnableWindow, SetParent, SetForegroundWindow...
Что-то это всё не то...

Прочёл где-то про некое SetSysModalWindow, но его почему-то не рекомендуют использовать, да и не объявлено у меня такой функции (не смог найти как её объявлять вообще)...


 
Германн ©   (2011-01-08 02:23) [1]


> Студент   (08.01.11 02:10)
>
> Нужно повесить своё окно как бы "модальным" поверх чужого.
> ..
> Чтоб чужое "блокировалось" чтоль пока не закрыть моё

ИШ тебе в ответе расскажет об том как в древнем Китае обращались с желающими "странного". :)

Проще всего наняться на работу в Microsoft и ввести в Windows сие ноу-хау. :)


 
Студент   (2011-01-08 02:30) [2]

Но другие-то программы как-то делают так?
Через Spy++ удалось узнать что чужому окну при этом добавляется WS_DISABLED...

Попробовал сделать так же с помощью EnableWindow "выключать" чужое при создании моего окна и "включать" чужое при закрытии моего - результат не совсем похож на то что других программ получается...

Больше ничего примечательного Spy++ вроде не показывал... А может и я не заметил просто...


> ИШ тебе в ответе расскажет об том как в древнем Китае обращались с желающими "странного". :)


Хм... Можно поподробнее и про это? :)


 
Германн ©   (2011-01-08 02:58) [3]


> Студент   (08.01.11 02:30) [2]
>
> Но другие-то программы как-то делают так?

Какие? Назови! Какие программы умеют блокировать доступ к окнам других программ"?


> Хм... Можно поподробнее и про это?

Это слишком "кровожадно" для меня.


 
Германн ©   (2011-01-08 03:15) [4]

Троян WinLock?


 
Студент   (2011-01-08 03:45) [5]

Да не блокировать... Я ж не зря в кавычках написал... Просто открываться модально к окну...
Почему сразу троян? Они мне не интересны, я люблю полезное делать...

Кажется понял... У тех других программ окна диалоговые... Диалоговые вроде через DialogBoxParam так можно...

А окно созданное CreateWindowEx никак не получится? Придётся диалоговое окно клеить?
Я не умею диалоговые делать, не работал с ими... В делфи есть редактор диалоговых окон как в MSVC++?


 
Германн ©   (2011-01-08 03:55) [6]


> Просто открываться модально к окну...

Такое пока не придумано. Модально к ОС можно.


 
Студент   (2011-01-08 03:59) [7]

Может я просто не так выражаюсь... Самоучка всё-таки, не знаю терминов нормальных... :)


> Модально к ОС


м... Это как вообще? Ни разу не видел...


 
Германн ©   (2011-01-08 04:18) [8]


> Германн ©   (08.01.11 03:55) [6]
>
>
> > Просто открываться модально к окну...
>
> Такое пока не придумано. Модально к ОС можно.
>

Вру. Можно.
Склероз, блин.
См. реализацию MessageBox.


 
Студент   (2011-01-08 05:51) [9]

MessageBox реализацию? Быть может вы имели ввиду DialogBox? Так там и есть этот DialogBoxParam...

Можно небольшой вопрос "оффтопом"?
Как профессионалы посоветуют поступать, если программа (точнее ОС при запуске программы) иногда выдаёт такое:

Ошибка приложения: "бла-бла неизвестное программное исключение бла-бла по адресу 0x........".

Было б название ошибки - я б его впечатал в поисковик... А вот что с "неизвестным"-то поделать? о___о


 
brother ©   (2011-01-08 06:25) [10]

> если программа

чья?


 
Плохиш ©   (2011-01-08 19:18) [11]


> Как профессионалы посоветуют поступать, если программа (точнее
> ОС при запуске программы) иногда выдаёт такое:
>
> Ошибка приложения: "бла-бла неизвестное программное исключение
> бла-бла по адресу 0x........".

Я просто выкидываю такие дерьмопроги.


 
DVM ©   (2011-01-08 19:47) [12]


> Германн ©   (08.01.11 04:18) [8]


> См. реализацию MessageBox.

это когда он устроится в MS там он и посмотрит :)

> Проще всего наняться на работу в Microsoft


 
Студент   (2011-01-09 06:00) [13]

Так что? Кроме как диалоговое окно + DialogBoxParam нет вариантов?


> чья?


Та что я пишу...
Но с этим я уже разобрался... Не подумал что моей программе может передаваться вместо "рабочей папки" непонятно что...

Кстати нашёл объявление SetSysModalWindow в WinUser.h... Шикарное объявление:

#define SetSysModalWindow(hWnd) (NULL)


 
DiamondShark ©   (2011-01-10 13:49) [14]


> Германн ©   (08.01.11 02:58) [3]
> > Студент   (08.01.11 02:30) [2]> > Но другие-то программы
> как-то делают так?Какие? Назови! Какие программы умеют блокировать
> доступ к окнам других программ"?

Такие, типа: "Отправь СМС на номер 12345, а то до форматирования винта осталось 78 секунд"


 
DiamondShark ©   (2011-01-10 13:55) [15]

Ребята из мелкософта не зря потрудились над тем, чтобы максимально затруднить задачу спереть чужой фокус и монополизировать фокус.

Если у тебя не троян-локер, то очень сильно пахнет "проблемой X, Y, Z".
Колись: с какой целью интересуешься?


 
DVM ©   (2011-01-10 14:44) [16]


> DiamondShark ©   (10.01.11 13:55) [15]


> Ребята из мелкософта не зря потрудились над тем, чтобы максимально
> затруднить задачу спереть чужой фокус и монополизировать
> фокус.

Сколько бы они не трудились, пока есть эксплорер и панель задач, будет и функция, переключающая задачи и делающая то что нужно, найти которую всегда можно. Раньше это была SwitchToThisWindow теперь другая, но кто хочет тот найдет.


 
DiamondShark ©   (2011-01-10 15:35) [17]


> DVM ©   (10.01.11 14:44) [16]

А я и не говорю, что это невозможно.
Более того, я даже не уверен, что майкрософт собирался решить проблему радикально (например, введя привилегии на вызов User-функций), видимо, они сочли вполне достаточным защититься лишь от неугомонных кулхацкеров, причём, без существенных проблем совместимости.

Речь о другом, о том, что серьёзные люди понимают, что хулиганство и рукожопие в среде с разделяемыми ресурсами -- это ад и израиль.
А школоту -- хлебом не корми, только дай бы чего-нибудь скырть.


 
Студент   (2011-01-12 11:53) [18]

DiamondShark, DVM, вы говорите загадками... %)

Ну не хочу я говорить что есть X... Слишком глупо будет выглядеть...

Как я уже разобрался все делают через Z - создают диалоговое окно и открывают его через DialogBoxParam...
А я не умею делать диалоговым окном, ну не делал я такого никогда... Да и редактором ресурсов вроде любой дурак попортить его может...

Вот и думаю... Можно ли сделать окно как я умею (CreateWindowEx) и получить тот же эффект что при DialogBoxParam получается...


 
Игорь Шевченко ©   (2011-01-12 12:06) [19]


> Можно ли сделать окно как я умею (CreateWindowEx) и получить
> тот же эффект что при DialogBoxParam получается...


нет, CreateWindow(Ex) не задает поведения окна.


 
DiamondShark ©   (2011-01-12 14:22) [20]


> Студент   (12.01.11 11:53) [18]

Если ты боишься за ресурсы, но требуется поведение DialogBoxParam, то, возможно, тебя спасёт DialogBoxIndirectParam


 
Leonid Troyanovsky ©   (2011-01-12 22:02) [21]


> Студент   (12.01.11 11:53) [18]

> Вот и думаю... Можно ли сделать окно как я умею (CreateWindowEx)
> и получить тот же эффект что при DialogBoxParam получается.

The DialogBoxParam function uses the CreateWindowEx function to create
the dialog box.

--
Regards, LVT.


 
Студент   (2011-01-17 17:23) [22]


> возможно, тебя спасёт DialogBoxIndirectParam


Спасибо, посмотрю...)


> The DialogBoxParam function uses the CreateWindowEx function
> to create the dialog box.


Это я видел... Понятно что оно использует CreateWindow, как по-другому-то...
Только как это пригодится в моём случае?



Страницы: 1 вся ветка

Текущий архив: 2011.04.17;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.009 c
3-1256535483
JohnLemon
2009-10-26 08:38
2011.04.17
Помогите с SQL запросом....


2-1294988529
alexlotov
2011-01-14 10:02
2011.04.17
Delphi 7 ставит точки трассировки куда попало


1-1252408144
bratel
2009-09-08 15:09
2011.04.17
на компе не работают программы на дельфи


15-1293716306
makarik01
2010-12-30 16:38
2011.04.17
виртульный диск


15-1294148572
alexdn_
2011-01-04 16:42
2011.04.17
c++