|
Вопрос # 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;
 |
Вопрос задал: 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 (статус: Посетитель), 16 марта 2011, 18:03 [#2]:
Прошу не удалять! Лучше было бы если помогли с ответом на этот вопрос!!!
Cr@G!N |{GZ
|
|
bugmenot (статус: 3-ий класс), 16 марта 2011, 19:04 [#3]:
это уже было?
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
min@y™ (статус: Доктор наук), 16 марта 2011, 19:13 [#4]:
Под отладчиком прогонял? Чему равны переменные S1 и S2 перед вызовом SendMessage()?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Kazi (статус: Посетитель), 17 марта 2011, 10:16 [#5]:
В смысле чему равны переменные S1, S2?
Cr@G!N |{GZ
|
|
min@y™ (статус: Доктор наук), 17 марта 2011, 10:31 [#6]:
Цитата (Kazi):
В смысле чему равны переменные S1, S2?
Значения в них какие?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 17 марта 2011, 10:55 [#7]:
Дело в том, что для комбобокса нужно использовать другие сообщение, не SET_TEXT.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 17 марта 2011, 11:01 [#8]:
Цитата (Вадим К):
Дело в том, что для комбобокса нужно использовать другие сообщение, не SET_TEXT.
Я решил до этого момента пока не доходить и всё-таки узнать, не ваозвращает ли какая-нить из функций нулевой хэндл. Естественно, для ComboBox свои сообщения типа CB_xxx.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 17 марта 2011, 11:09 [#9]:
Если копнуть ещё глубже, то на самом то деле применимы. просто комбобокс - это edit+button+listbox. Нужно только уметь добраться до каждой части Но задачи то разные бывают. Где то нужно расскрыть его, а где то может и симулировать набор кнопок.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
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™ (статус: Доктор наук), 17 марта 2011, 11:20 [#11]:
Цитата (Kazi):
Вот с этим кодом из моего edit попадают в edit mail.ru агент т.е.в поле где нужно ввести пароль а в combobox нет!
Ты мне скажешь когда-нибудь, что попадает в переменную S2 после вызова S2:=FindWindowEx(S1,0,'ComboBox',0)?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Kazi (статус: Посетитель), 17 марта 2011, 11:27 [#12]:
Ааа туда еще одно дочернее окно где расположен 2 ComboBox и едит!
Cr@G!N |{GZ
|
|
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™ (статус: Доктор наук), 21 марта 2011, 12:01 [#14]:
Цитата (Kazi):
Так у меня тоже не получается, как быть???
На каком шаге не получается?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Kazi (статус: Посетитель), 21 марта 2011, 14:32 [#15]:
Вообще не могу отправить данные в combobox-сы, не пойму почему не передается, ведь в Edit отправляются данные, кнопка кликается!
Cr@G!N |{GZ
|
|
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™ (статус: Доктор наук), 21 марта 2011, 15:03 [#17]:
Спрашиваю ещё раз: какое значение получает переменная S1 перед SendMessage()?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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™ (статус: Доктор наук), 21 марта 2011, 15:52 [#19]:
Цитата (Kazi):
Вы это спрашивали???
Нет! НЕЕЕЕЕЕЕЕЕЕЕЕЕЕТ!!!! Спрашиваю третий раз: какое значение получает переменная S1 перед SendMessage()? ЗНАЧЕНИЕ КАКОЕ В ПЕРЕМЕННОЙ, ЧОРТ ВОЗЬМИ???!!!111
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Kazi (статус: Посетитель), 27 марта 2011, 15:21 [#20]:
Как насчет Аськи ???
Cr@G!N |{GZ
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|