Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 088

/ вопрос закрыт /

Здравствуйте, уважаемые эксперты!

Приветствую, уважаемые эксперты!
тут у меня такая ситуация! Писал прогу взаимодействие с Mail.ru агентом, нажать программно на кнопки и отправить данные из edit моего приложения в edit Mail.ru (а именно в авторизацию пользователя) мне удалось, но не смог отправить данные из ComboBox
Что где не так плиз помогите!

Вот код:

procedure TForm1.Button3Click(Sender: TObject);
var
S,S1,S2:HWND;
begin
S:=findwindow(nil,'Авторизация пользователя');
S1:=FindWindowEx(S,0,nil,nil);
S2:=FindWindowEx(S1,0,'ComboBox',0);
SendMessage(S2,WM_SETTEXT,0,lParam(LPCTSTR'Primer@mail.ru')));
end;

Приложение:
  1.  
  2.  


Kazi Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: Kazi (статус: Посетитель)
Вопрос отправлен: 16 марта 2011, 17:34
Состояние вопроса: закрыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Написал я тебе пример. Прицепляю к ответу. Вот главный кусок:

procedure TMainForm.ButtonClick(Sender: TObject);
var
  MsgResult: Integer;
begin
  // передача текста из Edit в ComboBox
  MsgResult:= SendMessage(ComboBox.Handle, CB_ADDSTRING, 0, Integer(PChar(Edit.Text)));
  if SendMessage(ComboBox.Handle, CB_SETCURSEL, MsgResult, 0) <> CB_ERR
    then begin
           ComboBox.SetFocus();
           Edit.Clear();
         end;
end;

К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 31 марта 2011, 08:43
Оценка за ответ: 5

Комментарий к оценке: all okey !!! Thank's -+- давно бы так :)))

Мини-форум вопроса

Всего сообщений: 25; последнее сообщение — 31 марта 2011, 08:20; участников в обсуждении: 4.

Страницы: [1] [2] [Следующая »]

Вадим К

Вадим К (статус: Академик), 16 марта 2011, 17:39 [#1]:

дубликат вопроса №5062. удалю.
Галочка "подтверждения прочтения" - вселенское зло.
Kazi

Kazi (статус: Посетитель), 16 марта 2011, 18:03 [#2]:

Прошу не удалять! Лучше было бы если помогли с ответом на этот вопрос!!!
Cr@G!N |{GZ
bugmenot

bugmenot (статус: 3-ий класс), 16 марта 2011, 19:04 [#3]:

это уже было?
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 16 марта 2011, 19:13 [#4]:

Под отладчиком прогонял? Чему равны переменные S1 и S2 перед вызовом SendMessage()?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kazi

Kazi (статус: Посетитель), 17 марта 2011, 10:16 [#5]:

В смысле чему равны переменные S1, S2?
Cr@G!N |{GZ
min@y™

min@y™ (статус: Доктор наук), 17 марта 2011, 10:31 [#6]:

Цитата (Kazi):

В смысле чему равны переменные S1, S2?

Значения в них какие?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 17 марта 2011, 10:55 [#7]:

Дело в том, что для комбобокса нужно использовать другие сообщение, не SET_TEXT.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 17 марта 2011, 11:01 [#8]:

Цитата (Вадим К):

Дело в том, что для комбобокса нужно использовать другие сообщение, не SET_TEXT.

Я решил до этого момента пока не доходить и всё-таки узнать, не ваозвращает ли какая-нить из функций нулевой хэндл. Естественно, для ComboBox свои сообщения типа CB_xxx.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 17 марта 2011, 11:09 [#9]:

Если копнуть ещё глубже, то на самом то деле применимы. просто комбобокс - это edit+button+listbox. Нужно только уметь добраться до каждой части:) Но задачи то разные бывают. Где то нужно расскрыть его, а где то может и симулировать набор кнопок.
Галочка "подтверждения прочтения" - вселенское зло.
Kazi

Kazi (статус: Посетитель), 17 марта 2011, 11:17 [#10]:

Вот с этим кодом из моего edit попадают в edit mail.ru агент т.е.в поле где нужно ввести пароль
а в combobox нет!
procedure TForm1.Button3Click(Sender: TObject);
var
S,S1,S2:HWND;
begin
S:=findwindow(nil,'Авторизация пользователя');
S1:=FindWindowEx(S,0,nil,nil);
S2:=FindWindowEx(S1,0,'Edit',0);
SendMessage(S2,WM_SETTEXT,0,lParam(LPCTSTR'Primer@mail.ru')));
end
Cr@G!N |{GZ
min@y™

min@y™ (статус: Доктор наук), 17 марта 2011, 11:20 [#11]:

Цитата (Kazi):

Вот с этим кодом из моего edit попадают в edit mail.ru агент т.е.в поле где нужно ввести пароль а в combobox нет!

Ты мне скажешь когда-нибудь, что попадает в переменную S2 после вызова S2:=FindWindowEx(S1,0,'ComboBox',0)?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kazi

Kazi (статус: Посетитель), 17 марта 2011, 11:27 [#12]:

Ааа туда еще одно дочернее окно где расположен 2 ComboBox и едит!
Cr@G!N |{GZ
Kazi

Kazi (статус: Посетитель), 21 марта 2011, 11:43 [#13]:

1. Найти диалоговое окно по заголовку (hDlg=FindWindow(0,L"Авторизация пользователя"))
2. Потом перечислить дочерние окна найденного диалога (EnumChildWindows(hDlg,EnumFunc,0 ))
3. В функции перечисления определять имя класса (GetClassName) каждого дочернего окна и сравнивать с "ComboBox". Если совпадает, то посылать ему CB_INSERTSTRING с нужной строкой и затем CB_SETCURSEL

Так у меня тоже не получается, как быть???
Cr@G!N |{GZ
min@y™

min@y™ (статус: Доктор наук), 21 марта 2011, 12:01 [#14]:

Цитата (Kazi):

Так у меня тоже не получается, как быть???

На каком шаге не получается?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kazi

Kazi (статус: Посетитель), 21 марта 2011, 14:32 [#15]:

Вообще не могу отправить данные в combobox-сы, не пойму почему не передается, ведь в Edit отправляются данные, кнопка кликается!
Cr@G!N |{GZ
Kazi

Kazi (статус: Посетитель), 21 марта 2011, 14:34 [#16]:

Что где не так подскажите плиз!

procedure TForm1.Button3Click(Sender: TObject);
var
S,S1:HWND;
begin
S:=findwindow(nil,'Авторизация пользователя');
S1:=FindWindowEx(S,0,nil,nil);
S1:=FindWindowEx(S1,0,'ComboBox',nil);
SendMessage(S1,CB_INSERTSTRING,0,lParam(Pchar(edit1.Text)));
SendMessage(S1,CB_SETCURSEL,0,0);
end;
Cr@G!N |{GZ
min@y™

min@y™ (статус: Доктор наук), 21 марта 2011, 15:03 [#17]:

Спрашиваю ещё раз: какое значение получает переменная S1 перед SendMessage()?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kazi

Kazi (статус: Посетитель), 21 марта 2011, 15:29 [#18]:

S1:=FindWindowEx(S,0,nil,nil); --- получает хэндл еще одного окна т.е. внутри главной формы есть еще одно окно где расп. 2 ComboBox-са и Edit
Вот после: S1:=FindWindowEx(S,0,nil,nil);
Ищем Combobox-сы
S1:=FindWindowEx(S1,0,'ComboBox',nil);
и отправляем данные:
SendMessage(S1,CB_INSERTSTRING,0,lParam(Pchar(edit1.Text)));
SendMessage(S1,CB_SETCURSEL,0,0);
end;

Вы это спрашивали???
Cr@G!N |{GZ
min@y™

min@y™ (статус: Доктор наук), 21 марта 2011, 15:52 [#19]:

Цитата (Kazi):

Вы это спрашивали???

Нет! НЕЕЕЕЕЕЕЕЕЕЕЕЕЕТ!!!! Спрашиваю третий раз: какое значение получает переменная S1 перед SendMessage()? ЗНАЧЕНИЕ КАКОЕ В ПЕРЕМЕННОЙ, ЧОРТ ВОЗЬМИ???!!!111
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kazi

Kazi (статус: Посетитель), 27 марта 2011, 15:21 [#20]:

Как насчет Аськи ???
Cr@G!N |{GZ

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.03 сек.