|
Как активировать окно приложения, если оно уже запущено.
|
|||
---|---|---|---|
#18+
Пример: Outlook Express. Если не запущен, то запускается. Если уже запущен, то его окно просто активируется, т.е. 1) Если свернуто, то показывается в том виде как было (normal либо max) 2) Фокус устанавливается на него. Чтоб исключить дубликаты: Код: vbnet 1. 2. 3. 4. 5. 6.
Хорошо, это работает. А вот с восстановлением окна, если запущено. Ну, в духе Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Но этот код не совсем для этого, т.е. 1) если окно прикрыто другими, то оно наверх вылазит НО 2) если на панели задач - там и остается 3) будучи запущенным щелчком по ярлыку, фокус в окно предыдущего экземпляра приложения не передается, а возвращается как это сказать, в папку откуда щелкнули. Как бы этот код подправить по простому? Есть конечно вариант послать WM_COPYDATA "предыдущему" окну, и выполнить ТАМ код Код: vbnet 1. 2. 3. 4.
Но без этого никак нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:15 |
|
Как активировать окно приложения, если оно уже запущено.
|
|||
---|---|---|---|
#18+
Не, ну чтоб восстановить с панели задач + поверх Код: vbnet 1. 2. 3.
Но установить фокус на hwndTarget при этом не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 15:10 |
|
Как активировать окно приложения, если оно уже запущено.
|
|||
---|---|---|---|
#18+
SetFocus ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 15:38 |
|
Как активировать окно приложения, если оно уже запущено.
|
|||
---|---|---|---|
#18+
ДмитSetFocus ? Не-а, пробовал. Помогло только вот это, причем SetWindowPos можно убрать: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
На XP и Vista проверил, вроде все тип-топ. SetForegroundWindow смущает, где-то я уже что-то подобное пробовал, какие-то глюки были, уж не на 7-ке ли. Не подвела бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 15:49 |
|
Как активировать окно приложения, если оно уже запущено.
|
|||
---|---|---|---|
#18+
Все же одна вещь мне не нравится. Если окно MAX и не свернуто на панель задач, то SW_RESTORE его делает Normal (не на полный экран) что не соответствует сравнению с Outlook Express. Т.е. по-хорошему как-то надо сделать проверку Is "свернуто на панели задач" or NOT Интересно как? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 15:59 |
|
Как активировать окно приложения, если оно уже запущено.
|
|||
---|---|---|---|
#18+
Как-то так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 16:09 |
|
|
start [/forum/topic.php?fid=60&fpage=61&tid=2157093]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 280ms |
total: | 410ms |
0 / 0 |