| 
| 
 | Вопрос # 5 504/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!
 Не могли бы Вы мне помоч. Мне очень необходима функция, которая способна считывать любое текстовое, числовое значение из Edit'a, например даже эту строку "слово123" и отправлять его в адрес какого либо процесса. То есть по принципу программы CheatEgine или ArtMoney. Есть чатная строка, которая отображает любой текст. Я хочу чтобы при нажатии на Button, происходила точная копия символов из Edit'a в адрес процесса, в чатную строку. Имя процесса и адрес строки известен.
 
 Если Вы мне поможите я буду Вам очень благодарен! Заранее, спасибо. Евгений.
 
|  |   Вопрос задал: RamzeS (статус: Посетитель)Вопрос отправлен: 15 июля 2011, 07:02
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Короче, вот тебе простейший пример для Блокнота. Только для него! Изучай, задавай вопросы, если чо. И помни, это только пример.
 
 
 function TMainForm.FindNotepadEdit: HWND;
var
  hNotepad: HWND;
begin
  // поиск хэндла окна ввода Блокнота
  Result:= 0;
 
  hNotepad:= FindWindow('Notepad', nil);
 
  if hNotepad <> 0
    then Result:= FindWindowEx(hNotepad, 0, 'Edit', nil);
end;
 
procedure TMainForm.AppEventsIdle(Sender: TObject; var Done: Boolean);
begin
  PostButton.Enabled:= Memo.Text <> '';
end;
 
procedure TMainForm.PostButtonClick(Sender: TObject);
var
  hEdit: HWND;
  LineIndex, SymbolIndex: Integer;
begin
  // Постим мессадж
  hEdit:= FindNotepadEdit();
 
  if hEdit = 0
    then begin
           Application.MessageBox(PChar('Блокнот не запущен.'#13#10'Запусти его.'),
                                  PChar('Ошибка'),
                                  MB_OK + MB_ICONERROR);
           Exit;
         end;
 
  if MsgRadioGroup.ItemIndex = 0
    // постим с помощью WM_CHAR
    then for LineIndex:= 0 to Memo.Lines.Count - 1 do
           begin
             for SymbolIndex:= 1 to Length(Memo.Lines[LineIndex]) do // построчно
               SendMessage(hEdit, WM_CHAR, Integer(Memo.Lines[LineIndex][SymbolIndex]), 0); // посимвольно
             SendMessage(hEdit, WM_CHAR, 13, 0); // добавляем символ переноса после каждой строки
           end
 
    // постим с помощью WM_SETTEXT
    else SendMessage(hEdit, WM_SETTEXT, 0, Integer(PChar(Memo.Text)));
end;Готовый ехе-шник прицепляю к ответу.
 К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 15 июля 2011, 13:14
 
 |  
 Мини-форум вопросаВсего сообщений: 48; последнее сообщение — 16 июля 2011, 21:20; участников в обсуждении: 4. Страницы: [1] [2] [3] [Следующая »]  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 08:15 [#1]:Короче, включу телепатор. Ты хочешь написать программу-флудер, которая будет отправлять в чат текст? Так что ли? Текст из твоей проги должен перебрасываться в окно отправки сообщений чужой чат-программы и отправляться в сеть?
 Я такое когда-то в детстве делал. Даже исходники сохранились.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 09:10 [#2]:Да именно "перебрасывать" текст. Это не для флуда. Если у Вас остались исходные коды, не могли бы Вы ими поделиться?
 |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 09:31 [#3]: Цитата (RamzeS): Это не для флуда. А для чего?
 
 Цитата (RamzeS): не могли бы Вы ими поделиться?  Вот передача строки посимвольно (имитация набора текста пользователем):
 
 // s - передаваемая строка
// h - хэндл окна ввода текста
for i := 1 to Length(s) do
  SendMessage(h, WM_CHAR, Integer(s[i]), 0);Естественно, есть способ лучше, но, может быть, тебе и этого хватит? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 09:43 [#4]:Можно поподробнее. Как это связать с адресом и процессом? Куда необходимо направлять текст. |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 09:49 [#5]: Цитата (RamzeS): Как это связать с адресом и процессом? Куда необходимо направлять текст.  Это не надо связывать с адресным пространством чужого процесса. Нужно просто найти хэндл окна ввода чужой программы и посылать ему сообщения.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 10:14 [#6]:У меня есть вот такие функции: . Что необходимо прописать в коде кнопки, чтобы получить ожидаемый результат?
 |  
|   | Gooddy (статус: 3-ий класс), 15 июля 2011, 10:26 [#7]: Цитата: Мне очень необходима функция, которая способна считывать любое текстовое, числовое значение из Edit'a, например даже эту строку "слово123" и отправлять его в адрес какого либо процесса. 1. Edit свой?
 2. слово123 -> 123?
 3. Отправлять в адрес процесса значит эмулировать клавиатуру?
 Чисти код! Чисти код! Чисти код! |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 10:33 [#8]: Цитата (Gooddy): Что необходимо прописать в коде кнопки, чтобы получить ожидаемый результат?  Для начала выкинь этот код, он не имеет отношения к твоей задаче.
 На OnClick твоей кнопки надо повесить примерно это:
 
 // h - хэндл окна ввода текста
for i := 1 to Length(Edit.Text) do
  SendMessage(h, WM_CHAR, Integer(Edit.Text[i]), 0);Перед первым нажатием на кнопку нужно найти хэндл окна ввода чужой программы, в которую надо отправлять текст. Это делается с помощью функций FindWindow(), FindWindowEx(), EnumWindows(), EnumChildWindows(). Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 10:35 [#9]:Gooddy, Вы пользовались ArtMoney? Ищеш в процесе например текстовое значение "Пример", и потом меняешь его на "Помощь" В процессе происходит смена слова "Пример" на слово "Помощь". Именно это мне нужно делать только по нажатию кнопки. То есть как в ArtMoney, только не нужно искать адреса, и отсеивать, а просто вводишь, и заменяешь строку. |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 10:41 [#10]: Цитата (RamzeS): а просто вводишь, и заменяешь строку.  А причём здесь программа-чат?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 15 июля 2011, 10:45 [#11]: Цитата: Ищеш в процесе например текстовое значение "Пример", и потом меняешь его на "Помощь" В процессе происходит смена слова "Пример" на слово "Помощь". Именно это мне нужно делать только по нажатию кнопки. То есть как в ArtMoney, только не нужно искать адреса, и отсеивать, а просто вводишь, и заменяешь строку. 
   Чисти код! Чисти код! Чисти код! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 10:45 [#12]:Принцип тот. |  
|   | Gooddy (статус: 3-ий класс), 15 июля 2011, 10:47 [#13]: Цитата: То есть как в ArtMoney, только не нужно искать адреса, и отсеивать, а просто вводишь, и заменяешь строку. 
 Т.е. нужно найти строку в процессе и заменить её?
 Чисти код! Чисти код! Чисти код! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 10:51 [#14]:Да, по нажатию на кнопку. Только её не нужно искать, адрес строки мне известен. |  
|   | Gooddy (статус: 3-ий класс), 15 июля 2011, 10:52 [#15]:А если строка длиннее, чем та, что нужно заменить? Чисти код! Чисти код! Чисти код! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 10:54 [#16]:Объём строки не важен. |  
|   | Gooddy (статус: 3-ий класс), 15 июля 2011, 10:58 [#17]:Важен. Была строка на 3 символа, записал 100 символов -> треш, угар и содомиябаги, вылеты и бсод.Чисти код! Чисти код! Чисти код! |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 10:58 [#18]: Цитата (RamzeS): Объём строки не важен.  Ты чо, прикалываешься?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 15 июля 2011, 11:00 [#19]:Кстати, строка "привет" может быть какой-нить ассемблерной командой, её частью или частью нескольких команд. Что тогда? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | RamzeS (статус: Посетитель), 15 июля 2011, 11:00 [#20]:Если это чатная строка, какая разница какой там объём? 100 символов там можно уместить. (макс) |  Страницы: [1] [2] [3] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |