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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2012, 22:44   #1
onefinal
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 18
По умолчанию Отправка ТЕКСТА в неактивное окно.

Получаю хендл окна, потом ему отправляю ентер ( VK_Return) проходит нормально, но вот как отправить предложение туда же ?
пробую так
PHP код:
s:=edit1.text;

 
sendMessage(WndWM_IME_KEYDOWN,VK_Return,);
 
sleep(100);
    
//SetWindowText(Wnd, PChar(s));
  
postmessage(wndWM_Char0lParam(s));
  
showmessage(PChar(s)); 
помогите пож )
onefinal вне форума Ответить с цитированием
Старый 22.07.2012, 22:57   #2
volvo877
Форумчанин
 
Аватар для volvo877
 
Регистрация: 01.06.2009
Сообщений: 108
По умолчанию

Окно чужое? Тогда читай MSDN внимательнее:
Цитата:
However, SetWindowText cannot change the text of a control in another application.
и
Цитата:
To set the text of a control in another process, send the WM_SETTEXT message directly instead of calling SetWindowText.
volvo877 вне форума Ответить с цитированием
Старый 22.07.2012, 23:06   #3
onefinal
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 18
По умолчанию

Код:
 postmessage(Wnd, WM_SETTEXT, 0, lParam(s));
не срабатывает (((
onefinal вне форума Ответить с цитированием
Старый 22.07.2012, 23:39   #4
volvo877
Форумчанин
 
Аватар для volvo877
 
Регистрация: 01.06.2009
Сообщений: 108
По умолчанию

Почему PostMessage, а не SendMessage? Чтобы проблем найти? Вот ты их нашел уже. Почему строка не приводится к PChar?

Код:
sendmessage(Wnd, WM_SETTEXT, 0, Integer(PChar(s)));
прекрасно работает.
volvo877 вне форума Ответить с цитированием
Старый 23.07.2012, 00:18   #5
onefinal
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 18
По умолчанию

Мне оно просто меняет заголовок, а нужно что бы отправило нажатие клавиш(
onefinal вне форума Ответить с цитированием
Старый 23.07.2012, 00:21   #6
onefinal
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 18
По умолчанию

Вот смотри, мб я накосячил


Код:
unit Spamer;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,tlhelp32, StdCtrls;
 
type
  TForm1 = class(TForm)
    btRefresh: TButton;
    ComboBox1: TComboBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
  
    procedure Label1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btRefreshClick(Sender: TObject);


  private
    procedure GetProcessList();
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   Wnd: HWND;
    EDITCtrl : HWND;
   buff: array [0..127] of Char;
implementation

{$R *.dfm}

procedure TForm1.GetProcessList;
var
  Wnd: HWND;
  buff: array [0..127] of Char;
begin
  form1.combobox1.Items.Clear; // Î÷èùàåì ñïèñîê ïðîöåññîâ â ôîðìå
  Wnd := GetWindow(Handle, GW_HWNDFIRST);
  while Wnd <> 0 do
  begin
    // Íåêîòîðûå îêíà ïîêàçûâàòü íåíóæíî
    if (Wnd <> Application.Handle) and // Ñîáñòâåííîå îêíî
      (GetWindowText(Wnd, buff, SizeOf(buff)) <> 0) // Îêíà áåç çàãîëîâêîâ
      then
    begin
      GetWindowText(Wnd, buff, SizeOf(buff));
     form1.combobox1.Items.Add(StrPas(buff)); // Äîáàâëåíèå çàïèñè â ñïèñîê
    end;
    Wnd := GetWindow(Wnd, GW_HWNDNEXT);
  end;
end;



 
procedure TForm1.FormCreate(Sender: TObject);
begin
  GetProcessList;

end;



procedure TForm1.Label1Click(Sender: TObject);
begin

      if combobox1.ItemIndex>=0
  then label1.Caption:=combobox1.Items[combobox1.ItemIndex]
  else label1.Caption:='Íè÷åãî íå âûáðàíî';
  Wnd :=  FindWindow(nil, PChar(label1.Caption));
   EDITCtrl := FindWindowEx(Wnd, 0, 'EDIT', nil);
     //showmessage( FloatToStr(Wnd));
end;


procedure TForm1.btRefreshClick(Sender: TObject);
var
s:string;

begin
s:=edit1.text;
//Text:= 'Hello World';
 sendMessage(Wnd, WM_Char,VK_Return,0 );
 sleep(100);


    //SetWindowText(Wnd, PChar(s));
   sendMessage(Wnd, WM_Char, 0, Integer(PChar(s)));
   //SetWindowText(Wnd,PChar('Hello'));
  //postmessage(wnd, WM_Char,);
  showmessage(PChar(s));
end;

end.
onefinal вне форума Ответить с цитированием
Старый 23.07.2012, 00:35   #7
Putin-mode
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 82
По умолчанию

Цитата:
Сообщение от onefinal Посмотреть сообщение
Вот смотри, мб я накосячил


Код:
unit Spamer;
Для спама что ли программа?
Putin-mode вне форума Ответить с цитированием
Старый 23.07.2012, 00:37   #8
onefinal
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 18
По умолчанию

для спама Aion игра такая онлайн, нужно продать вещь а там лимит в чат 30 сек по этому легече написать программу дабы каждые 30 сек не отрываться.
onefinal вне форума Ответить с цитированием
Старый 23.07.2012, 13:20   #9
onefinal
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 18
По умолчанию

up Помогите домучить
onefinal вне форума Ответить с цитированием
Старый 24.07.2012, 11:54   #10
onefinal
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 18
По умолчанию

блин Люди форум создан для помощи а не для игнора!
onefinal вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неактивное окно SeMgA Общие вопросы Delphi 6 28.03.2012 12:05
Неактивное окно mfc Madmaxisss Visual C++ 1 27.03.2012 18:45
Несворачевоемое неактивное окно Vol666 Общие вопросы Delphi 6 07.09.2011 21:33
И опять нажатие в неактивное окно.. Syred Общие вопросы Delphi 0 15.06.2008 01:56
неактивное окно oLMeR Общие вопросы Delphi 7 11.11.2006 08:14