Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.19;
Скачать: CL | DM;

Вниз

Вставить текст в чужое окно, только что обсуждалось, но не совсем   Найти похожие ветки 

 
QUE ©   (2003-03-19 16:14) [0]

Хочеться взять из чужой программы данные обработать их и вставить !!! Забрать получается простой отсылкой через _KeyDown и _KeyUp
Комбинаций SHIFT+INSERT и потом CTRL+C, а вот вставить обратно ??? Очевидно реализация копирования, тоже кривая .... Помогите плз.

procedure _KeyDown(Key : byte);
begin
keybd_event(Key, 0, 0, 0);
end;

procedure _KeyUp(Key : byte);
begin
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
end;


var
HK,Up,Down,Value : string;
iPos : Integer;
// Wnd : Integer;
begin
// Wnd := GetForegroundWindow;
// Делал и так
// PostMessage(Wnd,WM_KEYDOWN,VK_CONTROL,0);
// PostMessage(Wnd,WM_KEYDOWN,VK_INSERT,0);
// PostMessage(Wnd,WM_KEYUP,VK_INSERT,0);
// PostMessage(Wnd,WM_KEYUP,VK_CONTROL,0);
_KeyDown(VK_CONTROL);
_KeyDown(VK_INSERT);
_KeyUp(VK_INSERT);
_KeyUp(VK_CONTROL);
Delay(500);
HK := ShortCutToText(HotKey);
Value := AHotKey.Values[HK];
iPos := Pos("^!",Value);
if Clipboard.HasFormat(CF_TEXT) then
begin
Text := Clipboard.AsText;
//===========
//Мой код отрабатывает нормально
//===========
Clipboard.AsText := Text;
Delay(100);
_KeyDown(VK_SHIFT);
_KeyDown(VK_INSERT);
_KeyUp(VK_INSERT);
_KeyUp(VK_SHIFT);
// Делал и так
// PostMessage(Wnd,WM_KEYDOWN,VK_SHIFT,0);
// PostMessage(Wnd,WM_KEYDOWN,VK_INSERT,0);
// PostMessage(Wnd,WM_KEYUP,VK_INSERT,0);
// PostMessage(Wnd,WM_KEYUP,VK_SHIFT,0);
ToLog(Up+Text+Down);
Clipboard.Clear;
end;
end;


 
Aleksey_sv ©   (2003-03-19 16:33) [1]

Используй лучше Sendmessage(WND,Wm_settext,0,text);
меньше секса :))


 
Aleksey_sv ©   (2003-03-19 16:36) [2]

А вытягивать
sendmessage(WND,Wm_gettext,text,0);
помоему так.
Этот вариант катит с заголовком, а для всего остального надо знать хендл компонента из которого и в который ты текст отправляеш


 
QUE ©   (2003-03-19 16:41) [3]

Да до этого я тоже дошел, но незнаю как достать этот хендл ...

А за sendmessage(WND,Wm_gettext,text,0); Большое спасибо !!!


 
QUE ©   (2003-03-19 16:42) [4]

Сейчас попробую ....


 
Aleksey_sv ©   (2003-03-19 17:01) [5]

небольшое исправление
sendmessage(hw,WM_GETTEXT,Длина строчки,integer(@Wtext));
Найти хендл елемента-- Findwindow(WND родителя,0,"Класс окна (например"edit")",Заголовок)


 
Aleksey_sv ©   (2003-03-19 17:04) [6]

Блин помарочка

> Найти хендл елемента-- Findwindow(WND родителя,0,"Класс
> окна (например"edit")",Заголовок)

правильно FindwindowEX


 
QUE ©   (2003-03-19 17:30) [7]

Угу, спасибо большое завтра уже проделывать все это буду ...
Сейчас убегать нужно .... ОГРОМНОЕ СПАСИБО.....


 
QUE ©   (2003-03-19 18:50) [8]

Wnd := GetFocus Вот что написано в MAN"e:
Считывает окно, котоpое в данный момент имеет фокус ввода.
Блин у блокнота не может считать !!???
Почему ?



Страницы: 1 вся ветка

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-59629
Kudatsky
2003-04-25 09:37
2003.05.19
Как создать DBF-файл для ADO-компонентов без BDE ?


8-59815
Demetrius
2003-02-04 19:28
2003.05.19
G32


4-60002
Nick Denry
2003-03-16 22:34
2003.05.19
Разница в шрифте!


14-59940
Grrey
2003-04-30 14:42
2003.05.19
Куда пропали уроки Юрия Зотова?


14-59918
Vlad Oshin
2003-04-29 11:02
2003.05.19
Интеллигенция. Кто они?