На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> как отправить данные другому приложению?
    Надо автоматизировать ввод данных. Есть прога, она кушает данные из командной строки, но топтать клаву - влом. Былобы проще слать ей нажатые клавиши. Но как???
    Подскажите...
      SendKeys поможет!!!!
        А подробнее можно?
          Я понимаю, что сендкей поможет, но перед его использованием нуно передать фокус той проге.
          Как?
            сделай окно (always on top)
              Public Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
              Sub SendIt()
              Dim rc as Long
              rc = SetForegroundWindow(ProgramForm.hwnd)
              SendKeys "HELLO!"
              End Sub
                это все конечно зашибись, но та прога которой надо переслать нажатие клавиши работает с командной строкой.
                поэтому SendKeys нифига не помогает; мне кажется SetForegroundWindow тоже не поможет, ибо я уже пробовал слать сообщения sendmessage - ну не помогает!!! это вообще возможно??
                  SetForegroundWindow всего лишь передаст окну фокус! Если вторая прога - прога DOS, то о передачи клавиш SendKeys-ом и речи быть не может! Можно после передачи фокуса создать искусственное событие нажатия клавиши с помощью ф-ции keybd_event.
                  Public Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
                  Система не отличит такой последовательный ввод от настоящего!
                    пожалуйста подробнее!
                      Public Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
                      bVk - код имитируемой виртуальной клавиши
                      bScan - аппаратный скан-код клавиши
                      dwFlags - ноль или одна из следующих констант:
                      KEYEVENTF_EXTENDEDKEY - клавища является расширенной и имеет префиксный код 0xE0
                      KEYEVENTF_KEYUP - имитировать отпускание клавиши (вроде вызова события KeyUp)
                      А вообще не поленись, полазий в API Viewer!
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0302 ]   [ 16 queries used ]   [ Generated: 2.05.24, 07:19 GMT ]