Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-21151
Ramzes
2002-09-26 07:52
2002.10.07
Открытие новой формы


1-21123
Gerr
2002-09-21 19:53
2002.10.07
Открытие окна Delphi


7-21294
sergn
2002-07-27 11:54
2002.10.07
Как перехватить событие открытия лотка CD-привода?


1-21025
Lefan
2002-09-27 07:32
2002.10.07
Запуск по времени...


3-20934
Gaber
2002-09-11 10:35
2002.10.07
DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский