Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нахождение эдитов в чужем окне по другому условию 
:(
    Опции темы
AlexeyShestchenko
Дата 14.2.2008, 05:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.2.2008

Репутация: нет
Всего: нет



как мне найти именно editы в другом приложении? во всех примерах разбрается конкретно Tedit,Edit, но формы с эдитами куда я хочу вставить текст класс имеют другой чтоли...вообщем не прокатывает ни один пример.
Код

var
  ParentWnd,Wnd: HWND;
  Buff: PChar;
begin
  GetMem(Buff, 255);
  ParentWnd := FindWindow(nil, 'Macromedia Product Activation');
  Wnd := FindWindowEx(ParentWnd, 0, nil,nil);
  while Wnd <> 0 do
    begin
      GetClassName(Wnd, Buff, 255);
      if Pos('Edit', Buff) > 0 then
      begin
        SendMessage( Wnd, WM_SETTEXT, 0,lParam(PChar('XZ')) );
        Inc(index);
      end;
      Wnd := FindWindowEx(ParentWnd, Wnd, nil,nil)
    end;
  FreeMem(Buff, 255);
end;



этот меня устраивал пока я не попробовал на других приложениях....
помогите решить этот вопрос! буду благодарен!

PM MAIL   Вверх
THandle
Дата 14.2.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



AlexeyShestchenko, так посмотри какой там класс. Стандартный WS32 или WinSpy++ тебе помогут.
PM   Вверх
VICTAR
Дата 14.2.2008, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: нет
Всего: 80



Используй 
Код

function RealGetWindowClass(hwnd: HWND; pszType: PChar; cchType: UINT): UINT;

А для нахождения дочерних окон EnumChildWindows
PM MAIL   Вверх
AlexeyShestchenko
Дата 14.2.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.2.2008

Репутация: нет
Всего: нет



я посмотрел,там они находятся на панели или чтото типо того,у которой класс #32770, и edit имееюют edit. но как не крутил ниче не работает! буду еще пробовать...
PM MAIL   Вверх
AlexeyShestchenko
Дата 14.2.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.2.2008

Репутация: нет
Всего: нет



не пойму как RealGetWindowClass работать,делаю так:

wnd := 787742; // допустим что я уже знаю хендл панели.
i:=0;
RealGetWindowClass(wnd,s,i);
ShowMessage(S);

вроде понял, надо i делать побольше. smile
тогда возращает класс панели. а дальше по нему enumchildom похоже буду пробовать

Это сообщение отредактировал(а) AlexeyShestchenko - 14.2.2008, 18:26
PM MAIL   Вверх
VICTAR
Дата 14.2.2008, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: нет
Всего: 80



Код

procedure TForm1.btn1Click(Sender: TObject);
const cMax = 255;
var lBuffer: array [0..255] of Char;
begin
   RealGetWindowClass(Handle, lBuffer, cMax);
   ShowMessage(lBuffer);
end;

PM MAIL   Вверх
AlexeyShestchenko
Дата 14.2.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.2.2008

Репутация: нет
Всего: нет




function proc(wnd:hWnd;list:TStringList):boolean;stdcall;

list:tstringlist;

как мне передать list в функцию proc: EnumChildWindows(wnd,@proc(list - так не работает),0);


PM MAIL   Вверх
AlexeyShestchenko
Дата 14.2.2008, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.2.2008

Репутация: нет
Всего: нет



этим способом вставляю в этиты текст
в list у меня храниться текст, и каждый раз его разное кол-во, как мне цикл чтобы заполнялось 
по смыслу так, только как правильно сделать?
for i:=0 to list1.count - 1 do
SendMessage(wnd,WM_SETTEXT,0,LParam(PAnsiChar(list1.Strings[i])));


Код

function proc(wnd:hWnd):boolean;stdcall;
var wndClass:array[0..255] of char;
begin
Result:=True;
GetClassName(wnd, wndClass, sizeof(wndClass));
if wndClass='Edit' then
begin
  case i of
0:  SendMessage(wnd,WM_SETTEXT,0,LParam(PAnsiChar(list1.Strings[0])));
1:  SendMessage(wnd,WM_SETTEXT,0,LParam(PAnsiChar(list1.Strings[1])));
end;
inc(i);

end;

end;


Добавлено через 5 минут и 13 секунд
SendMessage(wnd,WM_SETTEXT,0,LParam(PAnsiChar(list1.Strings[i])));
inc(i);

работает но криво как то ошибка вылезает что типо нет index 2

Добавлено через 10 минут и 34 секунды
все разобрался,прост там 4 эдита а я в лист добавил только 2 smile
PM MAIL   Вверх
AlexeyShestchenko
Дата 14.2.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.2.2008

Репутация: нет
Всего: нет



создал форму для теста, 6 эдитов, посылаю им текст. и обнаружил что они начинают заполняться в порядке убывания, т.е. первым заполниться edit6 и последним edit1 как это поправить?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.