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

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

17.10.2012, 17:38. Показов 3094. Ответов 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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru