LinuxMove

Обсуждение любых программ, не имеющих отношения к Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

LinuxMove

Сообщение D1P »

Маленькая программка, которая позволит вам перемещать любое окно за любой его участок (так, как это делано под XWindows в Linux).
Собсно, никаких пожеланий и вопросов оосбо не жду :) Просто давно хотел такое написать, ну вот и написал.

Хочется, чтобы прога при запуске скрывалась в трей, но что-то не допру как такую элементарную вещь сделать.
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Сообщение Ciber SLasH »

Хочется, чтобы прога при запуске скрывалась в трей
SetWindowPos(hMainWnd, HWND_BOTTOM, 0,0, 0,0, SWP_HIDEWINDOW);
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

посмотрим, но вроде пробовал - не работает.
-
Добавлено:
Точнее - работает, но не так, как хотелось бы. Если вставлять этот код в OnCreate форма не исчезает, а только меняет размер и становится неактивной, есил вставить куда-то ещё, например в OnActivate - скрывается, то в таскбаре остаётся кнопка приложения (пока не свернуть его).
Буду копать дальше, думаю решение должно быть тривиальным, это я пока его не вижу.
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Сообщение Ciber SLasH »

Вот решение:
1) добавляешь в форму в раздел private:

Код: Выделить всё

type
  TForm1 = class(TForm)
  ...
  private
    { Private declarations }
    // Обработчик сообщения минимизации
    procedure MinimizeInTray(var Msg: TMessage); message WM_SYSCOMMAND;
  end;
2) добавляешь функцию:

Код: Выделить всё

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 формы вписываем:

Код: Выделить всё

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.Minimize
end;
4) изменяем исходник проекта так (показываю свой пример):

Код: Выделить всё

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.
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Мдя... всё не так тривиально. Спасибо, попробую.

Добавлено:
Нет, не работает. Всячески извращался - нет и всё. Сообщения приходят, но НЕТ. Скорее всего - где-то внутри компонента иконки идёт перехват сообщения.
В общем стал пробовать по другому, вроде получилось, правда не совсем так, как хотелось, ну да ладно. Позже выложу что вышло.
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Переделал всё нафиг, теперь работает.
Плюс возможность ставить прогу в автозагрузку и ещё поправлено несколько мелких недочётов.
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Сообщение Ciber SLasH »

Нет, не работает. Всячески извращался - нет и всё. Сообщения приходят, но НЕТ. Скорее всего - где-то внутри компонента иконки идёт перехват сообщения.
А зачем компонент иконки? ведь можно без всяких компонентов обойтись.
В моём примере просто иконка вручную помещается в трэй.
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

да там не компонент даже, а так - самодельная наляпывалка с некоторыми расширенными возможностями. Забей, короче, всё равно прогу я уже эту трогать не буду, что хотел - реализовал, работает и не глючит вроде.
Кстати, как у тебя иконка просто так откуда-то берётся? Насколько я знаю - в дельфе нет такого компонента, либо ставь сторонние, либо пиши сам, как я и сделал.
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Сообщение Ciber SLasH »

Application.Icon.Handle — это хэндл текущей иконки программы (если она есть).

Кстати, а как тебе удалось запустить приложение в свёрнутом в трэй виде?
У меня по другому не получилось, кроме как я показал.
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Методом научного тыка :). Абсолютно сурьёзно.
Щас некогда код доставать, может потом.
WarGoth
Сообщения: 1
Зарегистрирован: Вс сен 03, 2006 22:29
Контактная информация:

Сообщение WarGoth »

А меня очень прикольнула программулина!! Я привык в линухе двигать так окна и винда уже сильно вымогает вообще... Эта програмка помогает выносить винду еще как-то... Предложение: немного доработать прогу: в КДЕ если тащить мышку с alt+правой_клавишей, то изменяются размеры окна. Тоже удобная штука. И еще нашел глюк: иногда прога взглюкивает и без alt'a окна передвигаются... Так что не забрасывай это дело! Поддерживаю!
Linux foreva!
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Исходники пару месяцев назад отданы на доработку челу с уином 178318478 (постучал, поздоровался, попросил, я поделился), с тех пор ни слуху ни духу :)
Предложение: немного доработать прогу: в КДЕ если тащить мышку с alt+правой_клавишей, то изменяются размеры окна.
Я в одной из следующих версий это делал, но недоделал и забил.
Желающие поковыряться с исходниками последней написанной мной версии, могут взять их тут: http://super.wincmd.ru/_tmp/UTIL_LinuxM ... ul_src.rar (228 кб, Дельфи). Там уже присутствуют функции изменения размера окон и ещё кое какие, но всё очень глючно.
Аватара пользователя
Noob
Сообщения: 1
Зарегистрирован: Чт дек 04, 2014 15:43

Сообщение Noob »

D1P
Отличная прога, только одну штучку хотелось бы допилить. Вы уже забросили кодить эту софтину?
Ответить