Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SendKeys шлёт пароль не туда. / 19 сообщений из 19, страница 1 из 1
05.03.2007, 23:05
    #34372760
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
У меня есть VB-шная аппликация, которая запускает аксесные рипорты. Аксесная база запаролена. Моя программа посылает пароль через SendKeys. Вот примерный код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub Print_Access_Report(sRptName)

Dim ac As Access.Application
Dim strLvSendKeys As String
   
   Set ac = New Access.Application
   strLvSendKeys = strLcDatabasePas & "~"
   DoEvents
   SendKeys (strLvSendKeys)

   ac.OpenCurrentDatabase MyFile
   ac.Visible = True
   ac.DoCmd.RunMacro "Macro1"
   ac.DoCmd.OpenReport sRptName, acViewPreview
   ac.DoCmd.Maximize
   
End Sub

Это всё работает. Но проблема в том, что если запустить это и одновременно открыть что-нибудь другое, как Excel or Notepad, то иногда она тупо передаёт этот пароль прямо в эти посторонние аппликации и его можно прочитать! Кто-нибудь сталкивался с таким? Как этого избежать?
...
Рейтинг: 0 / 0
06.03.2007, 05:29
    #34372900
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
Увы, SendKeys не имеет параметра - "приложение" и посылает символы АКТИВНОМУ приложению! Соответственно, если последним, до вызова процедуры запущен Notepad, то пароль мы увидим в блокноте.

Решением данной проблемы может быть команда AppActivate "Microsoft Access", которая сделает активным приложение Microsoft Access. А что если будет открыта другая база?

ИМХО: SendKeys+Пароль=Алгоритм ненадежный и легко отслеживаемый.
Мой совет: Используй ConnectionString (SQL) для передачи пароля базе. Это всего одна строчка кода)))

Успехов!
...
Рейтинг: 0 / 0
06.03.2007, 17:22
    #34375312
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
VipFedor,
огромное спасибо вам за ответ.
авторИспользуй ConnectionString (SQL) для передачи пароля базе.
Вррбще-то так и делаю во всей аппликации, но в этом конкретном месте такая дурацкая комбинация - надо ОТКРЫТЬ аксесные рипорты из VB. Вот как это реализовать другим образом, пока не придумала.
...
Рейтинг: 0 / 0
06.03.2007, 17:28
    #34375337
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
Ой, пропустила ваше замечание по поводу AppActivate ! Сейчас буду искать.
...
Рейтинг: 0 / 0
06.03.2007, 21:29
    #34375939
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
авторИМХО: SendKeys+Пароль=Алгоритм ненадежный и легко отслеживаемый.

VipFedor, подумала, подумала и решила, что вы абсолютно правы. Налакякала нечто такое, прекрасно работает и нет опасности послать пароль в ложное место. Спасибо вам ещё раз.
Пришлось конечно ДАО подключать в проект для этого, чего не хотелось.
Может кто знает как в таком коде обойтись с АДО?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   Static acc As Access.Application
   Dim db As DAO.Database
   Set acc = New Access.Application
   
   Set db = acc.DBEngine.OpenDatabase(MyFile, False, False, ";PWD=" & strLcDatabasePas & "")
   acc.OpenCurrentDatabase MyFile
   acc.DoCmd.RunMacro "Macro1"
   
   acc.DoCmd.OpenReport sRptName, acViewPreview
   acc.DoCmd.Maximize
   acc.Visible = True
...
Рейтинг: 0 / 0
06.03.2007, 22:00
    #34375970
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
мадамаПришлось конечно ДАО подключать в проект для этого, чего не хотелось. Вам самим подключать DAO было необязательно, просто объявите
Код: plaintext
Dim db As Object
...
Рейтинг: 0 / 0
06.03.2007, 22:26
    #34375998
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
Serge Gavrilov,
огромнейшее спасибо. Отключила ДАО, сделала с Object, прекрасно работает.
...
Рейтинг: 0 / 0
06.03.2007, 22:53
    #34376022
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
мадамаМожет кто знает как в таком коде обойтись с АДО?


Код для ADO в этом случае не сильно изменится:

Set objConn = CreateObject("ADODB.Connection")
objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password="ТУТ_ПАРОЛЬ";Data
Source="ТУТ_ПУТЬ_К_БАЗЕ" + другие нужные параметры!
objConn.Open 'Ну и собственно подключаемся к базе данных:)

ИМХО: DAO - устарело и не актуально)
...
Рейтинг: 0 / 0
06.03.2007, 23:19
    #34376047
Старый ворчун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
VipFedor
ИМХО: DAO - устарело и не актуально)
Сеня, про зайцев - не актуально (С) :-)

Что ж сам-то Access до сих пор использует DAO?
...
Рейтинг: 0 / 0
07.03.2007, 00:03
    #34376089
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
Старый ворчун VipFedor
ИМХО: DAO - устарело и не актуально)
Сеня, про зайцев - не актуально (С) :-)

Что ж сам-то Access до сих пор использует DAO?

ИМХО (imho) — In My Humble Opinion (по моему скромному мнению). Есть ещё вариант imo, это когда говорящий не считает своё мнение скромным. Учим этикет)))

Сравнение работы DAO и ADO можно найти в Интернете! Ваше мнение может быть другим!
...
Рейтинг: 0 / 0
07.03.2007, 00:05
    #34376092
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
И в дополнение... Microsoft отказалось от развития технологии DAO. А технология ADO успешно развивается! Читаем: www.microsoft.com

Успехов!
...
Рейтинг: 0 / 0
07.03.2007, 00:45
    #34376126
Старый ворчун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
VipFedor Старый ворчун VipFedor
ИМХО: DAO - устарело и не актуально)
Сеня, про зайцев - не актуально (С) :-)

Что ж сам-то Access до сих пор использует DAO?

ИМХО (imho) — In My Humble Opinion (по моему скромному мнению). Есть ещё вариант imo, это когда говорящий не считает своё мнение скромным. Учим этикет)))
Спасибо, но я не просил вас это пояснять, я говорил несколько о другом.
VipFedor
Сравнение работы DAO и ADO можно найти в Интернете!
ценное наблюдение :-)
...
Рейтинг: 0 / 0
07.03.2007, 00:48
    #34376128
Старый ворчун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
VipFedorИ в дополнение... Microsoft отказалось от развития технологии DAO. А технология ADO успешно развивается! Читаем: www.microsoft.com

Отказ от развития не равен отказу от использования.
Обычно развивается то, что пока неразвито :-)
...
Рейтинг: 0 / 0
07.03.2007, 18:33
    #34378372
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
Старый ворчунЧто ж сам-то Access до сих пор использует DAO?
Потому что Access это епархия ДАО. А в VB проджекте уже его использовать не современно.
...
Рейтинг: 0 / 0
07.03.2007, 21:25
    #34378569
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
мадамаА в VB проджекте уже его использовать не современно.
Спасибо за поддержку. :)
...
Рейтинг: 0 / 0
07.03.2007, 23:55
    #34378701
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
пожалста :)
...
Рейтинг: 0 / 0
09.03.2007, 16:51
    #34381055
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
Ну, тогда и сам VB использовать несовременно.
Раз уж мы такие принципиальные.
:))
...
Рейтинг: 0 / 0
09.03.2007, 17:20
    #34381147
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
мадама Старый ворчунЧто ж сам-то Access до сих пор использует DAO?
Потому что Access это епархия ДАО. А в VB проджекте уже его использовать не современно.А еще не гламурно и даже не готично =))
На самом деле DAO и Access изначально затачивались друг под друга, поэтому в приложениях, использующих mdb в качестве хранилища и требовательных к скорости, лучше использовать DAO, оно быстрее.
...
Рейтинг: 0 / 0
09.03.2007, 17:43
    #34381195
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendKeys шлёт пароль не туда.
Letter_DНу, тогда и сам VB использовать несовременно.
Раз уж мы такие принципиальные.
:))
Конечно несовременно. Кто ж спорит. :)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SendKeys шлёт пароль не туда. / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]