Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2009, 02:07   #1
FloopyMan
 
Регистрация: 17.03.2009
Сообщений: 5
Восклицание послать текст приложению

Здравствуйте. У меня возникла такая проблема: У меня есть Tedit с текстом и этот текст мне надо послать другому приложению, например, блокноту. Так вот собственно сама проблема: Как послать этот текст? Через findwindiw я нахожу блокнот, а что делать дальше никак не соображу. помогите.
FloopyMan вне форума Ответить с цитированием
Старый 17.03.2009, 02:12   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Как я понял, надо чтоб блокнот открывался с текстом, который в TEdit.
uberchel вне форума Ответить с цитированием
Старый 17.03.2009, 02:20   #3
FloopyMan
 
Регистрация: 17.03.2009
Сообщений: 5
По умолчанию

у меня открыт блокнот уже. Надо чтобы при нажатии на кнопку посылался текст в блокнот из TEdit.
FloopyMan вне форума Ответить с цитированием
Старый 17.03.2009, 02:28   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Поработай с функцией CopyToClipboard; -Буффер обмена.
uberchel вне форума Ответить с цитированием
Старый 17.03.2009, 02:32   #5
FloopyMan
 
Регистрация: 17.03.2009
Сообщений: 5
По умолчанию

как-то давно я видел такое, но сейчас нигде не могу найти. там как-то искали окно программы и с помощью какой-то функции посылали текст.
FloopyMan вне форума Ответить с цитированием
Старый 17.03.2009, 02:41   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Попробуйте вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var cd : TCopyDataStruct;
begin
cd.cbData := Length(Edit1.Text)+1;
cd.lpData := PChar(Edit1.Text);
SendMessage ( FindWindow('Notepad', nil), WM_COPYDATA, 0, LParam(@cd));
end;
mihali4 вне форума Ответить с цитированием
Старый 17.03.2009, 02:43   #7
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Щас покопаюсь может, что и выйдет.

Уточняю
Т.е надо уже в открытом блокноте писать то, что
в TEdit, или при каждом вводе нового текста открывать блокнот?
uberchel вне форума Ответить с цитированием
Старый 17.03.2009, 02:45   #8
FloopyMan
 
Регистрация: 17.03.2009
Сообщений: 5
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   wnd: HWND;
   i: Integer;
   s: string;
 begin
   wnd := FindWindow('notepad', nil);
   if wnd <> 0 then
   begin
     wnd := FindWindowEx(wnd, 0, 'Edit', nil);

     // Write Text in Notepad.
    // Text ins Notepad schreiben.
    s := 'Hello';
     for i := 1 to Length(s) do
       SendMessage(wnd, WM_CHAR, Word(s[i]), 0);
     // Simulate Return Key.
    PostMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);
     // Simulate Space.
    PostMessage(wnd, WM_KEYDOWN, VK_SPACE, 0);
   end;
end;
Вот он тот код который я искал!!!
FloopyMan вне форума Ответить с цитированием
Старый 17.03.2009, 02:47   #9
FloopyMan
 
Регистрация: 17.03.2009
Сообщений: 5
По умолчанию

Вот ещё вопрос: Как получить handle компонента в чужом приложении?
Есть программа, в ней поле ввода. Но я не знаю что это за поле, может TEdit, может TMemo.
FloopyMan вне форума Ответить с цитированием
Старый 17.03.2009, 09:08   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

создаешь новый проект
на форму кладешь Таймер(TTimer(вкладка System))
и два Лейбла(TLabel(вкладка Standart))
а вот тебе обработчик таймера:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
 s: string;
 h: HWND;
begin
 h := WindowFromPoint(Mouse.CursorPos);
 SetLength(s, SendMessage(h, WM_GETTEXTLENGTH, 0, 0)+1);
 SendMessage(h, WM_GETTEXT, length(s), Integer(PChar(s)));
 SetLength(s, lStrLen(PChar(s)));
 Label1.Caption := s;
 SetLength(s,255);
 GetClassName(h,PChar(s),255);
 SetLength(s, lstrLen(PChar(s)));
 label2.Caption:=s;
end;
в первом Лейбле будет Текст окна(компонента) на которое наведешь Мышь
во втором его класс

а в своем приложении придется использовать FindWindowEx
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат управления телнет-приложению imdb Работа с сетью в Delphi 2 26.05.2008 11:16
И опять вопрос по MDI-приложению Технолог Общие вопросы Delphi 24 08.05.2008 18:07
Как послать команду AngelOfDeath Работа с сетью в Delphi 2 10.04.2008 08:23
послать сообщение кнопке Fireleo Win Api 7 06.08.2007 11:14
передать данные другому приложению vasya_pupkin Win Api 1 16.02.2007 20:17