Сохранять постояныый фокус на форме
|
|
HTTqp | Дата: Пятница, 17.10.2014, 18:12 | Сообщение # 1 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| Подскажите как постоянно удерживать фокус на форме (api), нужно чтобы при изменении фокуса он возвращался обратно на форму. Форма написана на чистом api.
|
|
| |
Волк-1024 | Дата: Пятница, 17.10.2014, 18:48 | Сообщение # 2 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Не совсем понял, но что-то из этого должно помочь: SetActiveWindow, SetFocus, SetWindowPos, SetForegroundWindow
Pascal, C\C++, Assembler, Python
|
|
| |
HTTqp | Дата: Пятница, 17.10.2014, 19:07 | Сообщение # 3 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| Цитата Волк-1024 ( ) Не совсем понял, но что-то из этого должно помочь: SetActiveWindow, SetFocus, SetWindowPos, SetForegroundWindow ну вобщем есть окно, если пользователь пытается с помощью горячих клавиш например при помощи ALT+TAB или другими способами перевести фокус с моей программы на другу или просто свернуть ее, мой программа должна возвращать фокус себе чтобы она оставалась активной. Так понятней? только надо это для формы на api как то реализовать.
|
|
| |
Волк-1024 | Дата: Пятница, 17.10.2014, 20:12 | Сообщение # 4 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Как-то так:
Код while true do begin SetWindowPos(hWinHandle, HWND_TOPMOST, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); ShowWindow(hWinHandle, SW_SHOW); Sleep(100); end; Только это нужно делать в отдельном потоке.
Pascal, C\C++, Assembler, Python
|
|
| |
HTTqp | Дата: Пятница, 17.10.2014, 20:56 | Сообщение # 5 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| а как выполнить поток в api так же как и в обычной форме или нет? просто я код выше загнал в таймер или куда его лучше пригвоздить?
|
|
| |
Волк-1024 | Дата: Пятница, 17.10.2014, 21:08 | Сообщение # 6 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| CreateThread\BeginThread
Pascal, C\C++, Assembler, Python
|
|
| |
HTTqp | Дата: Вторник, 04.11.2014, 02:29 | Сообщение # 7 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| Цитата Волк-1024 ( ) view plaincopy to clipboardprint? while true do begin SetWindowPos(hWinHandle, HWND_TOPMOST, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); ShowWindow(hWinHandle, SW_SHOW); Sleep(100); end; while true do begin SetWindowPos(hWinHandle, HWND_TOPMOST, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); ShowWindow(hWinHandle, SW_SHOW); Sleep(100); end; Только это нужно делать в отдельном потоке. загнал в таймер, но увы не удается держать форму постоянно активной в фокусе. Может через dll как то реализовать?
|
|
| |
xXxSh@dowxXx | Дата: Вторник, 04.11.2014, 16:36 | Сообщение # 8 |
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
| Цитата HTTqp ( ) загнал в таймер, но увы не удается держать форму постоянно активной в фокусе. Может через dll как то реализовать? таймер (как компонент), не совсем правильное решение, так как он не является полноценным отдельным потоком, попробуй создать отдельный поток!
PS: твой код не смотрел, на работоспособность не проверял.
|
|
| |
HTTqp | Дата: Вторник, 04.11.2014, 16:45 | Сообщение # 9 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| вот как я делаю таймер в отдельном потоке Доступно только для пользователей просто например некоторые программы например если, например запустить игры они автоматически переводят игру на передний план, как исправить?
Сообщение отредактировал HTTqp - Среда, 05.11.2014, 23:44 |
|
| |