как из Excel открыть окно ICQ-клиента для поиска конкретного пользователя?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

LOKI-85
Сообщения: 120
Зарегистрирован: 15 янв 2007, 17:34

Есть еще какие либо варианты кода?
LOKI-85
Сообщения: 120
Зарегистрирован: 15 янв 2007, 17:34

Аууу!!!
Девелоперы!!!Проблема то не решена
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

Хех.. Судя по некоторым последним Вашим сообщениям, мой вариант работал частично... но происходило следующее
- icq запускался, но в соответствии с настройками, появлялся только диалог логина... и все (или логин происходил все-таки, в отличие от ручного запуска Icq?)

То, что мое предложение не является универсальным - это ясный пень...

Итак... на чем конкретно останавливается мое предложение?
- остается открытым диалог логина с предвведенным значением номера текущего пользователя

или

- дилог логина закрывается, логин происходит, но окно поиска других пользователей не открывается

или

- не понятно что вообще проиходит... icq вроде запускается, но запуск ни чем заметным не отличается от ручного запуска icq

Хотите ли Вы довести этот путь до ума или Вам он не подходит в принципе?

И еще одни вопрос: Вы ничего не сказали о предложении воспользоваться поиском пользователей на странице сайта icq.com - Вы не видите возможным пользоваться этим вариантом в принципе или просто не любите отвечать на подобные предложения?
Всякое решение плодит новые проблемы.
LOKI-85
Сообщения: 120
Зарегистрирован: 15 янв 2007, 17:34

Все вы правильно говорите,Genyaa. Но, как я уже говорила, у всех пользователей стоит разный ICQ-клиент.
Предложенный вами код рабоате следующим образом. Поскольку запускается qip.exe (мой ICQ-клиент), то открывается окно входа в аську, т.е. высвечивается мой номер и запрашивается пароль. После входа ничего более не происходит. Поэтому мне и не понятно для чего же используется параметр User. К тому же проца SendKeys должна выполнять свои действия в соответствии с заданными параметрами. Почему этого не происходит?

:) Конечно же, хотелось бы довести это дело до ума.
Genyaa писал(а):
И еще одни вопрос: Вы ничего не сказали о предложении воспользоваться поиском пользователей на странице сайта icq.com - Вы не видите возможным пользоваться этим вариантом в принципе или просто не любите отвечать на подобные предложения?
Во-первых, я не знаю как эта система поиска работает.Во-вторых,никто в нашем офисе,думаю, тоже...ну или многие. К тому же фича, которую мне надо реализовать интересна именно тем, что делает все через ICQ-клиент.
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

LOKI-85 писал(а):Все вы правильно говорите,Genyaa. Но, как я уже говорила, у всех пользователей стоит разный ICQ-клиент.
Если у всех разный клиент, то либо нужно под каждый клиент писать процедуру управления этим клиентом, либо писать релизацию собственного клиента под VBA. Ни для того, ни для другого у меня не хватит ресурсов.
Предложенный вами код рабоате следующим образом. Поскольку запускается qip.exe (мой ICQ-клиент), то открывается окно входа в аську, т.е. высвечивается мой номер и запрашивается пароль. После входа ничего более не происходит. Поэтому мне и не понятно для чего же используется параметр User. К тому же проца SendKeys должна выполнять свои действия в соответствии с заданными параметрами. Почему этого не происходит?
SendKeys посылает коды нажатий клавиш клавиатуры в активное в этот момент приложение. Если после активации вашего открывается диалог логина, и чтобы логин произошел нужно нажать на Enter, можно добавить в код:

SendKeys "{ENTER}", True

- первым из других SendKeys, сразу после shell

Пробуйте смелее.

Далее, ваш клиент должен иметь возможность как-то вызвать диалог поиска (в ICQ это клавиша F5) нажатием клавиш. Замените SendKeys "{F5}" на то, что нужно, чтобы вызвать это диалог Вашем клиенте. (См.Help по VBA для SendKeys чтобы узнать, какие обозначения нужно использовать в аргументах, чтобы релизовать посылку нажатий тех или иных, нужных для Вас клавиш.)

И т.д.
Во-первых, я не знаю как эта система поиска работает.Во-вторых,никто в нашем офисе,думаю, тоже...ну или многие. К тому же фича, которую мне надо реализовать интересна именно тем, что делает все через ICQ-клиент.
Ну, можно было просто проверить, как работает поиск со странички ICQ и подумать, может быть это подошло... как-то... например, может быть можно было бы вставить в Excel форму, в которой отражалась бы эта страничка, как в браузере.. и с этой формой работали бы все... как миленькие... :-)
Всякое решение плодит новые проблемы.
LOKI-85
Сообщения: 120
Зарегистрирован: 15 янв 2007, 17:34

Это то все поняяяятно...я так и думала, что реализация происходит именно так(я про SendKeys). И в браузере смотрела данный поиск....но ничего из этого мне не помогает-))
LOKI-85
Сообщения: 120
Зарегистрирован: 15 янв 2007, 17:34

В любом случае спасибо вам,Genyaa:-)))
LOKI-85
Сообщения: 120
Зарегистрирован: 15 янв 2007, 17:34

Доброго времени суток. Подскажите, пожалуйста (наверное, Genyaa сможет мне помочь-)), а как задать параметры в браузере на icq.com такие как ICQ-Number? Genyaa, у вас есть реализация добавления пользователя в icq через браузер?
Заранее спасибо.
LOKI-85
Сообщения: 120
Зарегистрирован: 15 янв 2007, 17:34

Я решила установить ICQLite и посмотрела как же это все работает у вас. У вас работает именно так как мне надо!Но если будет стоять QIP, то при запуске qip.exe происходит именно логин,таким образом,если он открыт,то происходит ошибка..не знаю как устранить , во-первых данную проблему. Во вторых запуск в кип происходит с попмощью нажатия и удерживания клавиш ctrl+shifrt+f , с чем тоже возникают трудности. Я и справку смотрела...ничего....
Что скажете?
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

LOKI-85 писал(а):Я решила установить ICQLite и посмотрела как же это все работает у вас. У вас работает именно так как мне надо!Но если будет стоять QIP, то при запуске qip.exe происходит именно логин,таким образом,если он открыт,то происходит ошибка..не знаю как устранить , во-первых данную проблему. Во вторых запуск в кип происходит с попмощью нажатия и удерживания клавиш ctrl+shifrt+f , с чем тоже возникают трудности. Я и справку смотрела...ничего....
Что скажете?
Поймите, что здесь нужно просто указать в SendKeys то, что требуется для запуска кип и вызова нужного диалога с помощью клавиш клавиатуры.

Например, если вызов диалога поиска происходит по Alt+Shift+f, то нужно написать:

SendKeys "%+f", True

% и + в этом случае будут указывать на нажатые Alt и Shift одновременно при нажатии f - и эта комбинация клавиш будет передана активному в данный момент приложению в Windows.

Если нужно для продвижения по диалогу логина нажатие на Enter, нужно добавить SendKeys "{ENTER}", True

Если нужно провинуться по дилогу табуляцией 3 раза, то пишем SendKeys "{TAB 3}", True

Если повторный запуск кип вызывает ошибку, то можно разрулить это в коде процедуры...

либо сначала попытаться активировать кип (делается с помощью AppActivate), полагая, что он уже запущен... и анализировать код завершения (Err.Number)

либо пытаться запустить кип по Shell и все равно анализировать код завершения.

Чтобы анализировать код завешения без того, чтобы прекращалась работа, нужно вписать директиву

On Error ....

, где на месте .... должно быть то, что Вам удобней - либо переход к следующей строке - resume next, либо переход на нужное место кода GoTo (метка) - см. Help по VBA.

Чтобы узнать код завершения, проверяйте значение Err.Number - если не ноль - то была какая-то ошибка... какая именно - подскажет конкретно этот номер кода завершения. Описание можно будет посмотреть по Err.Describtion.

Для работы с сайтом тоже нет больших проблем... можно все также сделать с помощью SendKeys

- вызвать по shell браузер - я бы сделал так:

n = shell("C:\Program Files\Internet Explorer\IEXPLORE.EXE" & " " _
& "http://people.icq.com/people/about_me.php?uin=" & User)

- это вызвало бы сразу страничку пользователя по его номеру ICQ, далее

- сделать небольшую паузу, чтобы дать браузеру загрузиться и загрузить страничку:

Application.Wait Now()+TimeSerial(0,0,3)

- далее ищем поле добавления пользователя и нажимаем соответствующую ему ссылку:

SendKeys "^f", True
SendKeys "Add{ENTER}{TAB}", true
SendKeys "{ENTER}", True

По идее вроде должно сработать... я не проверял, но умозрительно должно вроде все получиться.
Всякое решение плодит новые проблемы.
Ответить