Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Работа с буфером обмена


Автор: strikerok 9.1.2009, 21:58
Решил написать простеньку программу для работы с "несколькими" буферами обмена. Так вот, для горячих клавиш использую ActionList. Но когда программа свернута или висит в трее горячие клавиши не работают. Ну вот и вся проблема.. есть ли какой другой компонент для горячих клавиш, чтобы при свернутом приложении они работали. Или это можно реализовать как-то по другому?

Автор: SneG0K 9.1.2009, 22:11
Эммм.. Hooks?

Добавлено через 3 минуты и 51 секунду
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=548 почитай. Здесь описывается работа хуков. Сразу скажу, что это работа с Win API, а не компонент. Но этот способ не намного сложней компонент.

Автор: strikerok 9.1.2009, 22:22
Да, и еще вопрос. Читал у Флёнова, что во вкладке Additional есть компонент TSystemTray. Думал, всё будет легко и просто. Но его там не оказалось о_О. Поэтому напрашивается вопрос: есть ли компоненты по работе приложения в трее. Или только через WinAPI?

Автор: THandle 9.1.2009, 22:41
strikerok, начиная с Delphi 2006(насколько помню) такой компонент есть. Раньше - есть всякие сторонние, но ИМХО, лучше на Api. Фленова втопку, без промедлений.

Добавлено через 50 секунд
Вот:

http://forum.vingrad.ru/forum/topic-55210/unread-1.html

Автор: THandle 9.1.2009, 23:02
Цитата(SneG0K @  9.1.2009,  22:11 Найти цитируемый пост)
Эммм.. Hooks?


Стоп. А чем HotKey'и не подошли?

Что нить такое...:

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure WMHotKey(var Message: TWMHotKey); message WM_HOTKEY;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  MY_HOT_KEY = 18793;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle, MY_HOT_KEY, MOD_CONTROL + MOD_ALT, VK_F5);
end;

procedure TForm1.WMHotKey(var Message: TWMHotKey);
begin
  if Message.HotKey = MY_HOT_KEY then
  begin
    SetForegroundWindow(Handle);
    ShowMessage('CTRL+ALT+F5');
  end;
end;

end.

Автор: strikerok 9.1.2009, 23:23
Что-то не работает твой пример.

Автор: SneG0K 9.1.2009, 23:26
Цитата(THandle @  9.1.2009,  22:02 Найти цитируемый пост)
Стоп. А чем HotKey'и не подошли?

Ну можно и хот кей. 
Цитата(strikerok @  9.1.2009,  22:23 Найти цитируемый пост)
Что-то не работает твой пример. 

Странно. Ты CTRL+ALT+F5 нажимал?

Автор: THandle 9.1.2009, 23:27
Запускаем, жмем CTRL+ALT+F5...

Цитата(SneG0K @  9.1.2009,  23:26 Найти цитируемый пост)
Ну можно и хот кей. 


Намного легче чем хуки ставить.

Автор: strikerok 10.1.2009, 00:08
Теперь работает, спасибо! Качаю CodeGear 2009 ) Надеюсь, там есть компонент SystemTray?

Автор: THandle 10.1.2009, 00:28
strikerok, есть. Называется TTrayIcon. Вкладка Additional.

Автор: strikerok 10.1.2009, 16:52
С треем и горячими клавишами разобрался. Еще вопрос: как скопировать Выделенный фрагмент текста с помощью моих горячих клавиш из другой программы в Буфер обмена или сразу же себе в Memo?

Автор: THandle 10.1.2009, 18:24
strikerok, посмотри вот, например, тему:

http://forum.vingrad.ru/forum/topic-215113/anchor-entry1538283/0.html

А вообще одни топик - один вопрос.

Автор: strikerok 10.1.2009, 18:53
В той теме говориться о том, как скопировать в Буфер Обмена текст из компонента в своей программе. А я имел ввиду, как скопировать выделенный текст из любой другой программы.

Автор: THandle 10.1.2009, 22:58
strikerok, смотри статью из http://drkb.ru под названием

Цитата

Hook на буфер обмена
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)