| 
| 
 | Вопрос # 5 056/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Будте добры подскажите пожалуйста, как сделать так, чтобы текст в чужом окне, если там есть курсор для печати, при нажатии кнопки в моей проге, весь текст, который в чужом окне, копировался в моё (например мемо) обрабатовался и уже в обработаном виде заменял текст в том окне из которого мы копировали?
 
|  |   Вопрос задал: Макаров Игорь Сергеевич (статус: Посетитель)Вопрос отправлен: 28 февраля 2011, 16:25
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 11; последнее сообщение — 1 марта 2011, 15:37; участников в обсуждении: 2. 
|   | Макаров Игорь Сергеевич (статус: Посетитель), 28 февраля 2011, 17:47 [#2]:Почему мне в примерах пишет Undeclader Identifiar ListBox1? Я его подключал( |  
|   | Вадим К (статус: Академик), 28 февраля 2011, 18:33 [#3]:Наверно нужно на форму положить ListBox Галочка "подтверждения прочтения" - вселенское зло. |  28 февраля 2011, 19:10: Вопрос перемещён из тематического раздела Delphi » Прочее в раздел Delphi » Программирование с помощью API модератором Ерёмин А.А. 
|   | Вадим К (статус: Академик), 28 февраля 2011, 21:04 [#5]:Напрягу телепатические способности. А если вместо ListBox1 написать form1.Listbox1, скомпилируется?
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Макаров Игорь Сергеевич (статус: Посетитель), 1 марта 2011, 14:31 [#6]:У меня есть такой код и его надо немножко поправить, помогите!!! При нажатии мыши в какомто поле текст копируется в мою прогу,
 но есть одно но, оно копирует и копирует, что надо исправить чтобы оно скопировало всего один раз? timer1.enableD:=false; не подходит!
 надо чтобы востанавливался таймер при появлении мишь в другом поле
 function GetSysFocus: Integer;
 var
 hFgWin, FgThreadID, hFocusWin: Integer;
 begin
 hFgWin     := GetForegroundWindow;
 FgThreadID := GetWindowThreadProcessID(hFgWin, nil);
 if AttachThreadInput(GetCurrentThreadID, FgThreadID, True) then
 begin
 Result    := GetFocus;
 AttachThreadInput(GetCurrentThreadID, FgThreadID, False);
 end
 else
 Result := GetFocus;
 end;
 
 
 procedure TForm1.Timer1Timer(Sender: TObject);
 var ACtrl:HWND;
 FgThread:Integer;
 FgHwnd:Integer;
 begin
 ACtrl:=GetSysFocus();
 PostMessage(actrl, WM_COPY,0, 0);
 Memo1.Perform(WM_PASTE, 0, 0);
 timer1.enableD:=false;
 end;
 
 Есть ещё такая процедура!
 Как сделать, чтобы текст из чужого окна при копировании в мемо1, выполнялась эта процедура и по её окончанию текст заменялся в том окне откуда было скопировано текст?
 Помогите пожалуйста!!! может вместо таймера как-то её переделать?
 
 procedure TForm1.Button1Click(Sender: TObject);
 var r:string;
 begin
 R:=memo1.SelText;
 R:=EngtoRus(r);
 memo1.SelText:=R;
 end;
 |  
|   | Вадим К (статус: Академик), 1 марта 2011, 14:45 [#7]:а может вместо таймеров и прочих премудростей просто зарегистрировать горячую клавишу? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Макаров Игорь Сергеевич (статус: Посетитель), 1 марта 2011, 14:55 [#8]:Как это сделать? у меня есть Action1Execute на форме вместо Button1 а дальше что? |  
|   | Макаров Игорь Сергеевич (статус: Посетитель), 1 марта 2011, 15:29 [#10]:Помоги мне собрать всё до кучи пожалуйста! Буду очень благодарен! |  
|   | Вадим К (статус: Академик), 1 марта 2011, 15:37 [#11]:ну не могу же я за Вас все сделать сам. Нужно хоть немного, а сделать самостоятельно. Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |