Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];
ВнизКто знает как приложение сделать активным? Найти похожие ветки
← →
Zemal (2002-09-25 17:53) [0]ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
Эти две строки прячут форму и приложение из таскбара...
ShowWindow(Application.Handle, SW_SHOW);
ShowWindow(Handle, SW_SHOW);
А эти две строки востанавливают.
В общем создаю в "трее" иконку и при клике по ней форма приложения показывается... только вот показывается НЕАКТИВНЫМ и позади других окон... некрасиво :(. Может кто знает как сделать мерцание заголовка окна как во многих приложениях? или просто сделать активным?
← →
Sedunov Vitaly (2002-09-25 17:55) [1]Есть что-то типа BringToFront(Application.Handle)
← →
Sedunov Vitaly (2002-09-25 17:58) [2]А можно SendMessage(Handle,WM_ACTIVATE,WA_CLICKACTIVE,0)
← →
Song (2002-09-25 18:18) [3]Напишите как отлавливаете клик по значку.
← →
Zemal (2002-09-25 19:00) [4]Да я вообще-то TRxTrayIcon попользовался... что-то он не так как надо работает... а окно так и не становится активным. Запутался я чего-то во флагах ShowWindows(). Наверное надо вручную самому в трей иконку пихать :).
SendMessage(Application.Handle, WM_ACTIVATE, WA_CLICKACTIVE, 0);
Вот почему это не пашет? Нифига не пойму... должно пахать... :(
← →
Zemal (2002-09-25 19:06) [5]procedure TfmMain.FormCreate(Sender: TObject);
begin
Application.OnMinimize := AppMinimize;
Application.OnRestore := AppRestore;
end;
procedure TfmMain.AppMinimize(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TfmMain.AppRestore(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_SHOW);
end;
procedure TfmMain.RxTrayIcon1Click(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Application.Restore;
end;
Вот что и как у меня... незнаю уж чего и думать... должно приложение активизироваться... но... но... но... фиг знает что такое... может это... да хрен его знает почему, пошол я домой - утро вечера... :)
← →
Song (2002-09-25 22:02) [6]А если не использовать Application.Restore а сразу делать ShowWindow() ?
А вообще нужно WM_NULL передавать, если компонент сам этого не делает. Сегодня ссылку кидал, где написано как сделать значок в трею самому, посмотрите, станет понятно.
← →
Не спится... (2002-09-25 23:01) [7]Попробуйте что-нибудь из этого:
SetForegroundWindow(hWnd); - мигать будет
procedure ForceForeground1(hWnd: Integer);
// Win98
var
OldTimeOut: DWORD;
begin
if hWnd = GetForegroundWindow then Exit;
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @OldTimeOut, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer({1}000), 0);
SetForegroundWindow(hWnd);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(OldTimeOut), 0);
end;
procedure ForceForeground2(hWnd: THandle);
var hFgWnd: THandle;
ThID, FgThID: Integer;
begin
hFgWnd := GetForegroundWindow;
ThID := GetCurrentThreadID;
FgThID := GetWindowThreadProcessId(hFgWnd, nil);
AttachThreadInput(FgThID, ThID, True);
SetForegroundWindow(hWnd);
AttachThreadInput(FgThID, ThID, False);
end;
← →
Zemal (2002-09-26 10:20) [8]SetForegroundWindow(hWnd);
Уря! Спасибо большое! Ряботает! Класс! Я про эту функцию только что узнал. Оказывается есть такие класные функции на свете! :) По "хандлу" окна любое окно становится активным! Рулез!!! Ещё раз спасибо тому, кому "не спится"! Но, кстати, под вин2000 не мигает окно (цитата: "SetForegroundWindow(hWnd); - мигать будет")... не мигает, но становится активным... тоже неплохо :).
← →
Zemal (2002-09-26 10:27) [9]Наткнулся по анологии на функцию GetForegroundWindows, которая возвращает дескриптор (HWND) или "хандле" по нашенски :) гы-гы :) достаточно легко оказывается получить дескриптор активного, в данный момент, окна.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c