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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2013, 14:31   #1
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
Сообщение как узнать, что окно активное/не активное

привет, как узнать, что окно активное/не активное?

Последний раз редактировалось beegl; 01.01.2013 в 14:38. Причина: правил текст
beegl вне форума Ответить с цитированием
Старый 01.01.2013, 15:06   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

GetFocus()
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 01.01.2013, 15:41   #3
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
GetFocus()
спасибо за ответ, реализовал такой код по горячей клавише:
Код:
  private
    { Private declarations }
    id1: Integer;
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
/////////////////////////////////////////////////////////////////////////////////
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
 begin
   if Msg.HotKey = id1 then
   begin
   if GetFocus <=0 then
   begin
   if MessageBox(GetActiveWindow,'Вы действительно хотите закрыть программу?','Intertelecom',MB_YESNO or MB_ICONWARNING) = IDYES then
   Halt(1)
   end else
   if GetFocus >=0 then
   begin
   Halt(1);
   end;
   end;
end;
/////////////////////////////////////////////////////////////////////////////////

procedure TForm1.FormCreate(Sender: TObject);
const
     vk_EscapeEx    = $1B;
begin
  DoubleBuffered := true;
  Caption := 'Intertelecom balans';
  id1 := GlobalAddAtom('Hotkey1');
  RegisterHotKey(Handle, id1, 0, vk_EscapeEx);
end;
подскажите пожалуйста, как в 7-й делфи юникод внедрить, или что надо сделать, чтоб русский текст при копировании в другой документ из юнита не был не понятным текстом?
например:
Код:
if MessageBox(GetActiveWindow,'Âû äåéñòâèòåëüíî õîòèòå çàêðûòü ïðîãðàììó?','Intertelecom',MB_YESNO or MB_ICONWARNING) = IDYES then
где - Âû äåéñòâèòåëüíî õîòèòå çàêðûòü ïðîãðàììó? - не понятный текст
beegl вне форума Ответить с цитированием
Старый 01.01.2013, 15:56   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от beegl Посмотреть сообщение
как в 7-й делфи юникод внедрить, или что надо сделать, чтоб русский текст при копировании в другой документ из юнита не был не понятным текстом?
например:
Код:
if MessageBox(GetActiveWindow,'Âû äåéñòâèòåëüíî õîòèòå çàêðûòü ïðîãðàììó?','Intertelecom',MB_YESNO or MB_ICONWARNING) = IDYES then
где - Âû äåéñòâèòåëüíî õîòèòå çàêðûòü ïðîãðàììó? - не понятный текст
Это не юникод, чтобы нормально копировалось просто при копировании измени текущую раскладку толи на русский, толи на английский язык (уже не помню)
eoln вне форума Ответить с цитированием
Старый 01.01.2013, 16:22   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
толи на русский
На русский. Клипбоард подхватит правильную раскладку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.01.2013, 21:15   #6
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

спасибо за ответы, ещё такой вопрос, подскажите, как вывести MessageBox на передний план
этот вариант не работает:
Код:
SetForegroundWindow(FindWindows(nil,'caption'));
это сообщение:
Код:
if MessageBox(GetActiveWindow,'Вы действительно хотите закрыть программу?','caption',MB_YESNO or MB_ICONWARNING) = IDYES then
например, программа в трее, и когда нажимаешь на горячую клавишу, MessageBox выводится позади всех активных окон, а надо на передний план, как это реализовать?

Последний раз редактировалось beegl; 01.01.2013 в 21:20. Причина: правил текст
beegl вне форума Ответить с цитированием
Старый 01.01.2013, 22:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
MessageBox(GetForegroundWindow(),...
Я по крайней мере так делаю. В 99% случаев помогает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подождать пока активное окно TwiX Общие вопросы Delphi 3 20.03.2012 08:54
Как закрыть наглое активное окно? MotoArhangel Общие вопросы Delphi 8 09.03.2011 21:32
Активное окно Messir_Leonard Win Api 4 22.04.2008 19:25
Активное окно MadReason Win Api 12 10.01.2008 17:44
Предыдущее активное окно martinz Win Api 3 25.11.2007 15:02