View previous topic :: View next topic |
Author |
Message |
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Nov 27, 2005 02:07 Post subject: LinuxMove |
|
|
Маленькая программка, которая позволит вам перемещать любое окно за любой его участок (так, как это делано под XWindows в Linux).
Собсно, никаких пожеланий и вопросов оосбо не жду Просто давно хотел такое написать, ну вот и написал.
Хочется, чтобы прога при запуске скрывалась в трей, но что-то не допру как такую элементарную вещь сделать. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sun Nov 27, 2005 17:30 Post subject: |
|
|
Quote: | Хочется, чтобы прога при запуске скрывалась в трей |
SetWindowPos(hMainWnd, HWND_BOTTOM, 0,0, 0,0, SWP_HIDEWINDOW); |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Nov 27, 2005 19:28 Post subject: |
|
|
посмотрим, но вроде пробовал - не работает.
-
Добавлено:
Точнее - работает, но не так, как хотелось бы. Если вставлять этот код в OnCreate форма не исчезает, а только меняет размер и становится неактивной, есил вставить куда-то ещё, например в OnActivate - скрывается, то в таскбаре остаётся кнопка приложения (пока не свернуть его).
Буду копать дальше, думаю решение должно быть тривиальным, это я пока его не вижу. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sun Nov 27, 2005 20:28 Post subject: |
|
|
Вот решение:
1) добавляешь в форму в раздел private:
Code: | type
TForm1 = class(TForm)
...
private
{ Private declarations }
// Обработчик сообщения минимизации
procedure MinimizeInTray(var Msg: TMessage); message WM_SYSCOMMAND;
end; |
2) добавляешь функцию:
Code: | procedure TForm1.MinimizeInTray(var Msg: TMessage);
begin
inherited;
if Msg.WParam = SC_MINIMIZE then // если нажат кнопарь "Свернуть"
begin
TrayIcon(1, Application.Icon.Handle); // твоя функция добавления иконки в трэй
ShowWindow(Application.Handle, SW_HIDE) // прячем форму
end
end; |
3) в onCreate формы вписываем:
Code: | procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Minimize
end;
|
4) изменяем исходник проекта так (показываю свой пример):
Code: | program MinTray;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1},
About in 'About\About.pas' {AboutBox};
{$R *.res}
const
WM_SYSCOMMAND = $0112;
begin
Application.Initialize;
Application.Title := 'Minimize in Tray';
Application.CreateForm(TForm1, Form1);
Unit1.Form1.Perform(WM_SYSCOMMAND, SC_MINIMIZE, 0); // программное нажатие на кнопку "Свернуть"
Application.Run;
end. |
|
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Nov 27, 2005 21:24 Post subject: |
|
|
Мдя... всё не так тривиально. Спасибо, попробую.
Добавлено:
Нет, не работает. Всячески извращался - нет и всё. Сообщения приходят, но НЕТ. Скорее всего - где-то внутри компонента иконки идёт перехват сообщения.
В общем стал пробовать по другому, вроде получилось, правда не совсем так, как хотелось, ну да ладно. Позже выложу что вышло. |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Nov 27, 2005 23:04 Post subject: |
|
|
Переделал всё нафиг, теперь работает.
Плюс возможность ставить прогу в автозагрузку и ещё поправлено несколько мелких недочётов. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sun Nov 27, 2005 23:09 Post subject: |
|
|
Quote: | Нет, не работает. Всячески извращался - нет и всё. Сообщения приходят, но НЕТ. Скорее всего - где-то внутри компонента иконки идёт перехват сообщения. |
А зачем компонент иконки? ведь можно без всяких компонентов обойтись.
В моём примере просто иконка вручную помещается в трэй. |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Nov 28, 2005 02:43 Post subject: |
|
|
да там не компонент даже, а так - самодельная наляпывалка с некоторыми расширенными возможностями. Забей, короче, всё равно прогу я уже эту трогать не буду, что хотел - реализовал, работает и не глючит вроде.
Кстати, как у тебя иконка просто так откуда-то берётся? Насколько я знаю - в дельфе нет такого компонента, либо ставь сторонние, либо пиши сам, как я и сделал. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Mon Nov 28, 2005 03:05 Post subject: |
|
|
Application.Icon.Handle — это хэндл текущей иконки программы (если она есть).
Кстати, а как тебе удалось запустить приложение в свёрнутом в трэй виде?
У меня по другому не получилось, кроме как я показал. |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Nov 28, 2005 23:58 Post subject: |
|
|
Методом научного тыка . Абсолютно сурьёзно.
Щас некогда код доставать, может потом. |
|
Back to top |
|
|
WarGoth
Joined: 03 Sep 2006 Posts: 1
|
(Separately) Posted: Sun Sep 03, 2006 22:38 Post subject: |
|
|
А меня очень прикольнула программулина!! Я привык в линухе двигать так окна и винда уже сильно вымогает вообще... Эта програмка помогает выносить винду еще как-то... Предложение: немного доработать прогу: в КДЕ если тащить мышку с alt+правой_клавишей, то изменяются размеры окна. Тоже удобная штука. И еще нашел глюк: иногда прога взглюкивает и без alt'a окна передвигаются... Так что не забрасывай это дело! Поддерживаю! _________________ Linux foreva! |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Sep 04, 2006 19:18 Post subject: |
|
|
Исходники пару месяцев назад отданы на доработку челу с уином 178318478 (постучал, поздоровался, попросил, я поделился), с тех пор ни слуху ни духу
Quote: | Предложение: немного доработать прогу: в КДЕ если тащить мышку с alt+правой_клавишей, то изменяются размеры окна. |
Я в одной из следующих версий это делал, но недоделал и забил.
Желающие поковыряться с исходниками последней написанной мной версии, могут взять их тут: http://super.wincmd.ru/_tmp/UTIL_LinuxMove_2.0b_ful_src.rar (228 кб, Дельфи). Там уже присутствуют функции изменения размера окон и ещё кое какие, но всё очень глючно. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Noob
Joined: 04 Dec 2014 Posts: 1
|
(Separately) Posted: Thu Dec 04, 2014 16:45 Post subject: |
|
|
D1P
Отличная прога, только одну штучку хотелось бы допилить. Вы уже забросили кодить эту софтину? |
|
Back to top |
|
|
|