Страница: 1 | 2 | 3 |
|
Вопрос: Послать команды из VBA в другое приложение!
|
Добавлено: 10.10.05 23:39
|
|
Автор вопроса: vall
|
Я не программист, простой самоучка.
----------------------------------------
Работаю на проге (программа Металикс написаная на С+),
вообщем делаю простые чертежи ставлю на них пробивочные инструменты и все это прога переводит в коды НС, а станки все это
пробивают.
---------------------------------------------------------------------------------
Стандартные детали я параметрирую(сам модуль параметрирования встроен в Металикс) . С помощью VBA я создаю файл.РРО, куда записываю параметры(ну там длина, ширина ит.д.) И теперь, что бы получить чертежи по этим параметрам я выполняю следущии действия:
===============================================
1)Открыть Металикс(Открывается интерфейс)
-------------------------------------------------------------
2) нажать кнопку "Run Parametric"(Открывается окно поиска файлов.РРО)
------------------------------------------------------------------------
3)Выбрать нужный файл.РРО(SELECT)
---------------------------------------------------------
4)нажать кнопку "OPEN"(Открывается файл.РРО с параметрами - это типа редактора, в нем есть кнопка "Run")
---------------------------------------------------------
5)нажать кнопку "Run"(создаются чертежи.DFT, что и требуется!)
---------------------------------------------------------
6)закрыть все
==============================================
---------------------------------------------------
Я написал программу(как смог) на VBA, где детали одного вида , но разных размеров должны пройти путь от заказа до программы NC, но вот эти пункты , кроме первого, я выполняю вручную!
Помогите программно выполнить их на VBA!
У меня не получается управлять через VBA
приложением Мetalix! Если надо какие доолнительные данные, я могу дать,
есть у меня Winspector!
Ответить
|
Номер ответа: 4 Автор ответа: vall
Вопросов: 6 Ответов: 31
|
Профиль | | #4
|
Добавлено: 12.10.05 23:19
|
Второй раз поднимаю эту тему, но теперь надеюсь что вопрос будет понятен до конца!!!
Прочел много помощи, вроде(?) делаю все правильно, но не получаю результата, ПОЧЕМУ???
Подскажите пожалуйста, сам уже неделю бьюсь!!!
--------------------------------------------------------------------------------
Эксперементирую с "Notepad", выполняю следующие действия:
1)Открыть "Notepad"
2)Открыть "File" в Menu
3)Открыть "Open" в SubMenu
4)Выбрать File "Вася"
5)Нажать кнопку "Open"
'=============================================================
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal
lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam
As Long, ByVal lParam As Long) 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
Private Sub Command1_Click()
Dim hwnd As Long
Dim hMenu As Long
Dim hMenuItm As Long
Dim hMenuSub As Long
Dim hwndOpen As Long
Dim hwndBtnOpen As Long
Dim RetVal
Private Const WM_ACTIVATE = &H6
Const WM_COMMAND = &H111
'---------------------------------------------------
RetVal = Shell("notepad.exe"
AppActivate RetVal
'-----------------------------------------------------
hwnd = FindWindow(vbNullString, "Untitled-Notepad" ''''находим хэндл окна "Notepad"
hMenu = GetMenu(hwnd) ''''находим хэндл окна меню
hMenuItm = GetMenuItemID(hMenu, 0) ''''находим хэндл "File"
PostMessage hMenuItm, WM_COMMAND, 0, 0 ''''Открыть "File" в Menu
hMenuSub = GetSubMenu(hMenuItm, 1) 'находим хэндл "Open" в SubMenu
PostMessage hMenuSub, WM_COMMAND, 0,0 ''''Открыть "Open" в SubMenu'
-----------------------------------------------------
hwndOpen = FindWindow(vbNullString, "Open" ''''находим хэндл окна "Open"
hwndBtnOpen = FindWindowEx(hwndOpen, "кнопка", "Open"''''находим хэндл кнопки "Open"
SendMessage hwndOpen, WM_ACTIVATE, 1&, 0 ''''делаем окно "Open" активным
выбрать нужный файл-????????- не знаю как это сделать
SendMessage hwndBtnOpen, BM_CLICK, 0, 0 ''''нажать кнопку "Open"
End Sub
-------------------------------------
Проверял с помощью Debug, построчно.
Ответить
|
Номер ответа: 8 Автор ответа: vall
Вопросов: 6 Ответов: 31
|
Профиль | | #8
|
Добавлено: 13.10.05 11:31
|
А в данном случае-
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
( ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
hwnd = FindWindow(vbNullString, "Untitled-Notepad" -почему то возращает "0", значит не находит "Untitled-Notepad"!!!!
ПОЧЕМУ???? и т. д.
Ответить
|
Номер ответа: 9 Автор ответа: GSerg
Вопросов: 0 Ответов: 1876
|
Профиль | | #9
|
Добавлено: 13.10.05 12:47
|
К вопросу о коммандной строке, если имеется ввиду такая, как в автокаде(можно писать комманды), то нет! Есть просто строка информации,где показывает какую кнопку нажал!
То ли прикалывается человек, то ли действительно никогда компьютера не видел, понять не могу...
ПОЧЕМУ????
Видимо потому, что нет в системе окна с заголовком "Untitled-Notepad"?
Ответить
|
Номер ответа: 14 Автор ответа: vall
Вопросов: 6 Ответов: 31
|
Профиль | | #14
|
Добавлено: 14.10.05 09:22
|
И сотворил Бог все программы по образу и подобию Автокада
Именно так и есть , у Autocad,Solid Edge,Solid Works, Metalix(CNC), Jetcam(CNC)- у всех есть рисовалка!
Ну вот как мне самоучке не запутаться, суди сам.
Мне нужно кликнуть левой кнопкой мышки (курсор установлен), мне предлагают использовать команду
WM_LBUTTONDOWN. Отлично, иду на сайт MSDN, нахожу
синтаксис: WM_LBUTTONDOWN fwKeys = wParam;
xPos = LOWORD(lParam);
yPos = HIWORD(lParam);
fwKeys=MK_LBUTTON
Вроде все понятно, но идем дальше:
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
  ByVal Hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
PostMessage Hwnd, WM_LBUTTONDOWN, MK_LBUTTON,[B]lParam[/B]
А параметр lParam состоит еще из двух параметров-x,y!
А примеров нет, вот методом тыка и бьюсь,
результата нет!!! Поэтому я и прошу с примерами!!!
Ответить
|
Страница: 1 | 2 | 3 |
Поиск по форуму