Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2014, 16:39   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию Сделать активным окно.

Такая ситуация, у формы свойство:
Form1.formstyle:=fsStayOnTop
Если к примеру открыть taskmgr.exe, то он будет поверх всех форм(открытых окон) в том числе и нашей, если кликнуть по нашей форме то она опять будет поверх всех окон, собственно пробовал сделать её активной так:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin

  form1.SetFocus;
end;
Нечего не вышло, есть идеи?
Winexcel вне форума Ответить с цитированием
Старый 26.01.2014, 16:50   #2
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Идеи то есть, но ты представь что у тебя будет еще одна такая программа постоянно вылезающая поверх всех окон))

а вот что тебе нужно, вроде на делфи так делается
Код:
SetForegroundWindow(Application.Handle);
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 26.01.2014, 16:54   #3
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от DpolenST Посмотреть сообщение
Идеи то есть, но ты представь что у тебя будет еще одна такая программа постоянно вылезающая поверх всех окон))

а вот что тебе нужно, вроде на делфи так делается
Код:
SetForegroundWindow(Application.Handle);
Не помогло, теперь примерно каждую миллисекунду то наша форма то taskmgr.exe стаёт активным
Сделать это возможно, так как если самому в панели задач клинкнуть по окну, или же на рабочем столе за то место что выходит за taskmgr.exe то работает.
Winexcel вне форума Ответить с цитированием
Старый 26.01.2014, 17:01   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
procedure TForm1.Timer1Timer(Sender: TObject);
begin

form1.SetFocus;
end;
это, извините, говнокод

надо перекрывать CreateParams и выставлять необходимые параметры окну
но так ли оно надо ?
eval вне форума Ответить с цитированием
Старый 26.01.2014, 17:22   #5
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
это, извините, говнокод

надо перекрывать CreateParams и выставлять необходимые параметры окну
но так ли оно надо ?
Если можно то немного кода .
Winexcel вне форума Ответить с цитированием
Старый 26.01.2014, 17:31   #6
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Начал делать так:
Получил текущий заголовок окна:
Код:
function GetWindowTitle:string;
var
  buf : array[0..255] of char;
begin
  GetWindowText(GetActiveWindow(), buf, 256);
  result:=buf;
end;
Далее в таймере юзаю это так:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Hand:string;
begin
//
Hand:=GetWindowTitle;
if (hand<>'Form1') then begin
 SetForegroundWindow(Application.Handle);
 Form1.SetFocus;
end;

end;
Это чтобы постоянно не было вызова чтобы сделать активным окно, но не работает.
Winexcel вне форума Ответить с цитированием
Старый 26.01.2014, 17:41   #7
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Если taskmgr.exe это диспетчер задач, то можешь в меню "Параметры"->"Поверх всех окон" снять галочку.
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 26.01.2014, 17:42   #8
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от DpolenST Посмотреть сообщение
Если taskmgr.exe это диспетчер задач, то можешь в меню "Параметры"->"Поверх всех окон" снять галочку.
Задача стоит именно программно реализовать
Winexcel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MainMenu сделать элемент активным lu_una Общие вопросы Delphi 3 19.11.2012 06:01
Как пункт в списке UL сделать активным anton99 HTML и CSS 1 20.11.2011 21:44
После запуска окно неактивно и активным никак не делается D][mon Общие вопросы Delphi 2 02.11.2010 12:50
Как сделать mail активным? Rebel123 Общие вопросы Delphi 3 02.09.2009 19:29
Сделать список активным ALev Microsoft Office Excel 3 02.07.2009 16:53