Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставить текст из буфера в чужую прогу??? 
V
    Опции темы
WaReZMEN
Дата 19.10.2007, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Вообщем имеется текст в буфере нужно его вставить в то место где сейчас курсор (курсор в текстовом редакторе неважно в каком вообщем любом месте где можно вводить текст естественно в ту прогу что активна), все это происходит когда я нажимаю кнопки не ctrl+v а к примеру shift+backspace. Подскажите как сделать? smile 

Это сообщение отредактировал(а) WaReZMEN - 19.10.2007, 07:26
PM MAIL ICQ   Вверх
Alix
Дата 19.10.2007, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 8
Всего: 23



may be you need WM_PASTE message?


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
skyboy
Дата 21.10.2007, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



WaReZMEN, как подсказывает Alix, надо отправить сообщение.
по справке посмотри postMessage(только не в "Delphi help", а в "Windows SDK").
отправлять надо сообщение WM_PASTE.
Естественно, отправлять сообщение не всем подряд, а только активному окну. как искать активное окно не помню, так что поройся самостоятельно в Windows SDK на предемет "getActiveWindow" или  что-то в этом роде. 
Однако, даже если ты найдешь нуное окно и пошлешь ему сообщение, только отэтого окна и будет зависеть, обработает оно сообщение и вставит ли данные из буфера или нет.
PM MAIL   Вверх
VICTAR
Дата 21.10.2007, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Цитата(skyboy @  21.10.2007,  04:30 Найти цитируемый пост)
 как искать активное окно не помню

GetForegroundWindow

Добавлено через 3 минуты и 44 секунды
Вот тут кое-что есть
PM MAIL   Вверх
WaReZMEN
Дата 22.10.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Написал

Код

var
  h:HWND;
begin
H:=GetForegroundWindow;
//    H:=GetActiveWindow;
PostMessage(H,    WM_PASTE,0,0);

Никакой реакций 

Это сообщение отредактировал(а) WaReZMEN - 22.10.2007, 08:42
PM MAIL ICQ   Вверх
Alix
Дата 22.10.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 8
Всего: 23



Цитата(VICTAR @  21.10.2007,  06:32 Найти цитируемый пост)
Вот тут кое-что есть 

там как раз ничерта нет
Цитата(WaReZMEN @  22.10.2007,  09:40 Найти цитируемый пост)
Никакой реакций 

потому что посылать нужно не окну верхнего уровня, а непосредственно окну контрола. Пример:
Код
var
  h : hwnd;

begin
  h := GetForegroundWindow;
  h := FindWindowEx(h, 0, PChar('TEdit'), nil);
  SendMessage(h, WM_PASTE, 0, 0);
  ...

Для твоих целей надо только не брать первый попавшийся на форме TEdit (как я это делаю в примере), а брать активный. Как его найти мне неизвестно, я поднимал этот вопрос в теме указанной VICTAR'ом, мне не ответили.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
WaReZMEN
Дата 22.10.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Alix, Спасибо!!! как узнаеш даи знать smile
PM MAIL ICQ   Вверх
Alix
Дата 22.10.2007, 16:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 8
Всего: 23



докладаюсь о результатах. Желаемого удалось достичь таким образом:
Код
var
  victim : HWND;
  victimControl : HWND;
  myId,
  threadId : DWORD;

  ...
      victim   := GetForegroundWindow;     // получаем текущее окно
      threadId := GetWindowThreadProcessId(victim, nil);  // его ...
      myId := GetWindowThreadProcessId(wnd, nil);          // ... и наш хэндл
      if AttachThreadInput(myId, threadId, true) then begin   // соединяемся )
        victimControl := GetFocus;         // ну а тут - просто получаем активный контрол и все просто
        SendMessage(victimControl, WM_PASTE, 0, 0);
        AttachThreadInput(myId, threadId, false);  // отсоединяемся
      end; 


Полный код программы в аттаче (висит в бэке, по ctrl+alt+f10 выходит, по ctrl+alt+f9 вставляет буфер в текущий контрол).

Присоединённый файл ( Кол-во скачиваний: 30 )
Присоединённый файл  Project2.dpr 2,16 Kb


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
WaReZMEN
Дата 23.10.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Alix,  Спасибо!!!!
PM MAIL ICQ   Вверх
WaReZMEN
Дата 23.10.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Созрел другой вопрос а как скапировать выделеный текст по нажатию на кнопки к премеру теже ctrl+alt+f9 ?
PM MAIL ICQ   Вверх
Alix
Дата 23.10.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 8
Всего: 23



WM_COPY
а так же есть WM_CUT и WM_CLEAR и, быть может пригодится, EM_UNDO


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
WaReZMEN
Дата 24.10.2007, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Alix, Спасибо! Чето сам и не подумал smile Ведь это просто smile
PM MAIL ICQ   Вверх
WaReZMEN
Дата 24.10.2007, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Все можно закрыть тему

Это сообщение отредактировал(а) WaReZMEN - 24.10.2007, 06:27
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0845 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.