С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 5

Запуск стороннего приложения, отправка сообщений, получение информации с его окон

17.10.2012, 17:38. Показов 3075. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цель - написать программу, которая должна обращаться ко внешней программе-калькулятору, вводить в неё некоторые значения, запускать её выполнение, считывать результат (он будет в виде числа) и возвращать этот результат в ячейку в MS Excel.
Вопрос: Можно ли это сделать с помощью встроенного в Эксель VBA? И если ответ да, то посоветуйте самоучитель или что-нибудь в этом духе. Я пока приметил вот это и это.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.10.2012, 17:38
Ответы с готовыми решениями:

Получение информации из стороннего приложения
Доброго времени суток Уважаемому сообществу! Выручайте! Есть прога написанная прошлым кодером, исходники не сохранились, есть в этой...

Перехват окон стороннего приложения до его загрузки
Всем доброго времени. Пытаюсь разобраться вот в чем: Для того, чтобы сделать чужое приложение дочерним для моей программы, необходимо: ...

Активация окна стороннего приложения с помещением его поверх всех окон
мы получаем список процессов ,выбираем из них например хром как вот это приложение активировать поверх всех остальных окон и изменить...

18
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
17.10.2012, 17:40
Возможно, т.к. в нем можно вызывать функции из dll.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
17.10.2012, 18:12
Цитата Сообщение от MLPMan Посмотреть сообщение
Возможно, т.к. в нем можно вызывать функции из dll.
Хотелось бы увидеть дальнейшее развитие этой глубокой мысли, особенно в свете взаимодействия с внешней программой - калькулятором!
1
 Аватар для Kogb
367 / 128 / 28
Регистрация: 17.07.2011
Сообщений: 253
Записей в блоге: 1
17.10.2012, 20:29
Для начинающего помойму сложновато. Если цель обучиться VB на практике, то советую выбрать чтонить попроще для начала, тот же калькулятор простейший, например.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
17.10.2012, 20:29
Зачем внешняя программа-калькулятор, если Excel мощнее любого калькулятора? Делаешь скрытый лист, заносишь на него формулы (одну, две, хоть сотню), подставляешь данные, используешь результаты...
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
18.10.2012, 01:33
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Хотелось бы увидеть дальнейшее развитие этой глубокой мысли, особенно в свете взаимодействия с внешней программой - калькулятором!

Visual Basic
1
Declare Function func_name Lib "Library.dll" (parameters) As return_type;
И можно вызывать всякие FindWindow, SendMessage, keybd_event, разве не так?

Сам когда-то пробовал вызывать Beep из PowerPointa, работало.
0
Заблокирован
18.10.2012, 10:03
Catstail, правильно говорит. Круче экселя я еще не видел, в нем таких создают монстров и базы данных даже. Так, что ....
0
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 5
18.10.2012, 15:11  [ТС]
Извиняюсь, неправильно выразился. Под "программой-калькулятором" я имел ввиду не стандартный калькулятор windows, а прогу для специфичных технических нужд, в которую на вход подаются несколько значений и она выдаёт результат-число. Чтобы заново написать её вручную в экселе, придётся делать базу из 30 000 значений, при этом без Visual Basic'а будет всё равно не обойтись. Кроме того, программированию мне в любом случае придётся учиться, небольшая база есть, так что учиться буду не с нуля, и чем раньше это начну, тем будет лучше.
MLPMan re:
Возможно, т.к. в нем можно вызывать функции из dll.
Pro_grammer
Хотелось бы увидеть дальнейшее развитие этой глубокой мысли, особенно в свете взаимодействия с внешней программой - калькулятором!
Так можно или нет?
И вопрос про самоучитель тоже остаётся открытым.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
18.10.2012, 15:30
Цитата Сообщение от Kostya1991 Посмотреть сообщение
а прогу для специфичных технических нужд, в которую на вход подаются несколько значений и она выдаёт результат-число.
- в принципе, возможно. Но реализация будет сильно зависеть от интерфейса этой "проги". Нужно конкретизировать.

Если "прога" оформлена, как функция в dll (которая что-то берет на вход и возвращает результат) - это одно. Если "прога" консольная - другое, если оконная - третье...
0
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 5
19.10.2012, 11:31  [ТС]
Оконная.
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
19.10.2012, 23:26
Цитата Сообщение от Kostya1991 Посмотреть сообщение
Оконная.
Смотрите в сторону Windows API; зная дескриптор окна, с ним можно сделать что угодно.
1
64 / 20 / 1
Регистрация: 29.07.2012
Сообщений: 151
20.10.2012, 00:25
Цитата Сообщение от Kostya1991 Посмотреть сообщение
Цель - написать программу, которая должна обращаться ко внешней программе-калькулятору, вводить в неё некоторые значения
Могу простой примерчик подбросить:
Visual Basic
1
2
3
4
5
6
7
Option Explicit
 
Private Sub Command1_Click()
On Error Resume Next
AppActivate ("Êàëüêóëÿòîð")
SendKeys ("1234567890")
End Sub
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
20.10.2012, 05:37
Можно считать и так в Excel
Visual Basic
1
2
 strExpr = InputBox("Что будем считать?")
   MsgBox strExpr & " = " & Application.Evaluate(strExpr)
0
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 5
20.10.2012, 19:35  [ТС]
большое спасибо
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
20.10.2012, 20:06
Если оконная - нужно искать окно, его элементы управления и извлекать из них нужную информацию.
1
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 5
21.10.2012, 14:40  [ТС]
Цитата Сообщение от MLPMan Посмотреть сообщение
Смотрите в сторону Windows API; зная дескриптор окна, с ним можно сделать что угодно.
А его можно узнать самому? Или это инсайдерская инфа разработчиков проги?
0
64 / 20 / 1
Регистрация: 29.07.2012
Сообщений: 151
21.10.2012, 15:04
Можно конечно, вот один из многочисленных вариантов как это делается
Здесь мы сперва находим хендл по курсору мыши, а за тем и класс и заголовок, и можно много чего ещё вытворить с тем окном.
Вложения
Тип файла: rar Узнать клас и заголовок по курсору мыши.rar (2.9 Кб, 25 просмотров)
2
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
21.10.2012, 16:40
Цитата Сообщение от Kostya1991 Посмотреть сообщение
А его можно узнать самому?
Пример отправки окну с названием калькулятор сообщения, что оно должно быть закрыто:

Visual Basic
1
2
3
4
5
6
7
8
Declare Function FindWindow Lib "User32.dll" (lpClassName As String, lpWindowName As String) As Long;
Declare Function SendMessage Lib "User32.dll" (HWND As Long, Msg As Long, wParam As Long, lParam As Long) As Long;
Sub TryExitCalc
Const WM_CLOSE As Long = 16;
Dim W_Handle As Long;
W_Handle=FindWindow("","Калькулятор"); //получения дескриптора
SendMessage(W_Handle,WM_CLOSE,0,0);
End Sub
(Код не проверял).

Цитата Сообщение от Kostya1991 Посмотреть сообщение
Или это инсайдерская инфа разработчиков проги?
Неа. Это просто 4 байтный уникальный номер окна в Windows. Скачайте какой-нибудь справочник по WindowsAPI, и он есть в составе хелпов для Delphi, C++ Builder.
0
64 / 20 / 1
Регистрация: 29.07.2012
Сообщений: 151
21.10.2012, 17:37
MLPMan, в vb синтаксис немного другой, так будет правильней:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit
 
Dim a As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Sub TryExitCalc()
Const WM_CLOSE As Long = 16
Dim W_Handle As Long
W_Handle = FindWindow(vbNullString, "Калькулятор") 'получения дескриптора
a = SendMessage(W_Handle, WM_CLOSE, 0, 0)
End Sub
 
Private Sub Command1_Click()
Call TryExitCalc
End Sub
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.10.2012, 17:37
Помогаю со студенческими работами здесь

Запуск стороннего приложения по его ярлыку
подскажите

Запуск стороннего приложения с контролем его процесса
Незнаю в правильный ли отдел написал! Вообшим как можно мделать так что б программка запускала другой exe(установочный фаил) и cамое...

Запуск стороннего приложения с помещением его окна внутрь формы
Приветствую всех. Видел как в PictureBox открывают командную строку. Подскажите пожалуйста, как можно открыть так любой exe. Мне даже...

Запуск стороннего консольного приложения и доступ к его потокам ввода/вывода
Здравствуйте! Есть java прилажение, работающее в консоли (сервер Minecraft'а). Я хочу запустить его на сервере (Windows Server 2003) как...

Скрытие окон стороннего приложения
Доброго времени суток, мне нужно скрыть главное окно и побочные формы стороннего приложения. Объясню на примере блокнота, мне нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru