Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запуск exe из бэйсика, возможно ли? 
:(
    Опции темы
Pugach
Дата 25.2.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Здраствуйте.
Вопрос следующий:
Есть программа .exe 
запускается типа под досом, работать в ней нужно в диалоговом режиме (вводить цифры).

Возможно ли запускать ее програмно, и вводить туда данные скажем из textbox?
 
Как? 

Заранее спс.
PM MAIL   Вверх
bom
Дата 25.2.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Возможно.
Например, с помощью Shell и SendKeys.

PM MAIL   Вверх
Pugach
Дата 26.2.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Посмотрю надосуге спасибо
PM MAIL   Вверх
bom
Дата 1.3.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



надо только фокус предварительно на ее окно установить.

Это сообщение отредактировал(а) bom - 1.3.2007, 19:58
PM MAIL   Вверх
Kirill89
Дата 1.3.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



А что за программа? Может можно просто передать ей параметр?


--------------------
PM MAIL WWW   Вверх
abalich
Дата 4.3.2007, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



Код

Private Sub Command1_Click()
Shell "C:\и т.д\имя.exe", vbMaximizedFocus
'vbMaximizedFocus размер открываемого окна
'если надо открыть директорию
Shell "explorer C:\", vbNormalFocus
End Sub



--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
Pugach
Дата 5.3.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Спасибо, Shell работает, а вот sendkeys не получается:

Private Sub Command1_Click()
 
  Shell "f:\program files\Работа\progs\ldxxx\gsmkw.exe", vbNormalFocus
  SendKeys "d13510", wait

End Sub

' d13510 - надо ввести

Есть у кого-нибуть ссылки на ресурс, где подробно описаны все операторы и функции?
А то чувствую что такую ерунду спрашиваю, но про sendkeys больше ничего не нашел.

Это сообщение отредактировал(а) Pugach - 5.3.2007, 21:01
PM MAIL   Вверх
bom
Дата 6.3.2007, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Код

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
Shell "cmd.exe", vbNormalFocus
Sleep 500
SendKeys "d", True
SendKeys "1", True
SendKeys "3", True
SendKeys "5", True
SendKeys "1", True
SendKeys "0", True
End Sub

PM MAIL   Вверх
Pugach
Дата 6.3.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Код

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
 Shell "f:\program files\ðàáîòà\progs\ldxxx\gsmkw.exe", vbNormalFocus
 Sleep 5000
 SendKeys "d", True
 SendKeys "1", True
 SendKeys "3", True
 SendKeys "5", True
 SendKeys "1", True
 SendKeys "0", True
End Sub


Прога запускается, но вместо нужных символов там происходит следующее:

\
\
\
\
\

вот
PM MAIL   Вверх
Akina
Дата 6.3.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(MSDN)

Note   You can't use SendKeys to send keystrokes to an application that is not designed to run in Microsoft Windows. Sendkeys also can't send the PRINT SCREEN key {PRTSC} to any application.

Так что ДОС-приложению SendKeys ну никак не получится - его получает окно командного процессора... однако можно вывернуться так: поместить необходимую текстовую строку в буфер обмена и инициировать Paste метод окна.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pugach
Дата 6.3.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Как инициировать Paste метод окна?

нашел несколько топиков на эту тему, но нигде нет окончательного результата.
Давайте не будем плодить неоконченных тем  smile . Помогите написать окончательный результат smile  

PM MAIL   Вверх
Akina
Дата 6.3.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Pugach @  6.3.2007,  20:45 Найти цитируемый пост)
Как инициировать Paste метод окна?

Мамма миа! SendKeys "Ctrl-V" 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pugach
Дата 6.3.2007, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Ну хоть убейте не понимаю я:
Цитата(Akina @  6.3.2007,  12:47 Найти цитируемый пост)
поместить необходимую текстовую строку в буфер обмена и инициировать Paste метод окна.


Есть переменная 
txt="123"
как ее туда засунуть?!? smile 
PM MAIL   Вверх
bom
Дата 7.3.2007, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



PM MAIL   Вверх
Dred
Дата 7.3.2007, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 6.1.2007

Репутация: нет
Всего: нет



А как все введеное потом применить?
PM MAIL   Вверх
Pugach
Дата 7.3.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Вот код. Информация в буфер копируется, но в окно не вставляется.
вместо текста - \
Код

Dim Txt As String
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
 Txt = "d13510"
 Clipboard.Clear
 Clipboard.SetText Txt, vbCFText
 Shell "f:\program files\ðàáîòà\progs\ldxxx\gsmkw.exe", vbNormalFocus
 Sleep 3000
 SendKeys (Ctrl - V)
End Sub

Еще вопросик, что означает vbCFText ?
PM MAIL   Вверх
bom
Дата 7.3.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Попробуй инициировать нажатия нужных клавиш с помощью keybd_event из user32.dll

Note: ищем описание вышеуказанной АПИ функции и примеры работы с ней в MSDN или других местах, АКА Гугл.
PM MAIL   Вверх
Pugach
Дата 10.3.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Нашел хорошую ссылочку, кому надо.
Сам пока еще разбираюсь.
Подробно расписано использование keybd_event 
PM MAIL   Вверх
Pugach
Дата 10.3.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Ура! получилось. 
Код

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" (ByVal cChar As Byte) As Integer
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function OemKeyScan Lib "user32" (ByVal wOemChar As Integer) As Long
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2

Public Sub SendMyKey(ByVal c$)
    Dim vk%, scan%, oemchar$
    vk% = VkKeyScan(Asc(c$)) And &HFF
    oemchar$ = " " 
    CharToOem Left$(c$, 1), oemchar$
    scan% = OemKeyScan(Asc(oemchar$)) And &HFF
    keybd_event vk%, scan%, 0, 0
    keybd_event vk%, scan%, KEYEVENTF_KEYUP, 0
End Sub

Private Sub Command1_Click()
   Shell "f:\program files\ðàáîòà\progs\ldxxx\gsmkw.exe", vbNormalFocus
   Sleep 3000
   Call SendMyKey("t")
End Sub

Прога прописывает букву "t" в окне под досом.

Только Ентер не получается нажать. Пытался так:
1ый вар.
 keybd_event &HD, 0, 0, 0
 keybd_event &HD, 0, KEYEVENTF_KEYUP, 0
2ой вар.
Call SendMyKey(chr(13))
Помогите!

Это сообщение отредактировал(а) Pugach - 11.3.2007, 20:49
PM MAIL   Вверх
Pugach
Дата 13.3.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Извините за назойливость, но с Enter - беда. Где только не искал. Не получается smile 
PM MAIL   Вверх
bom
Дата 14.3.2007, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Код

                  keybd_event 13, 0, 0, 0  ' нажимаем enter
                  keybd_event 13, 0, 38, 0  ' отпускаем enter

PM MAIL   Вверх
Pugach
Дата 14.3.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 3.10.2006

Репутация: 1
Всего: 1



Не нажимается  smile 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.