|
|
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
А можно ли из программы VBA (написав код) нажать кнопку меню в другой программе (программа Металикс написаная на С++)??? На этой программе происходит перевод чертежей деталей с инструментами (пробивочных) в коды НС. Стандартные детали я параметрирую. В самой программе есть редактор, который создает файл.РРО В этом редакторе можно записать все данные параметрической программы построчно на сколько угодно деталей, нажать кнопку пуск и получаешь все все графические файлы с чертежами деталей . У меня есть программа на VBA которая создает файл.РРО с нужными мне данными . Но теперь я должен открыть Металикс , нажать кнопку и открыть редактор .РРО, наити свой созданный моей прогой файл.РРО-открыть его и запустить , нажав кнопку пуска!!!! Как же мне эти действия выполнить через VBA, вообще возможно ли это??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 10:11 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Возможно, если у этой программы все нужные действия можно выполнить только нажатием клавиш на клавиатуре. Пример с калькулятором: Открывается приложение калькулятор и вызываетя меню "О программе" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. то вместо всех инструкций SendKeys можно прописать всего одну. Остальное найдешь в справке VBA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 17:48 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Спасибо, но может у кого еще есть какие то решения???? Советы??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 08:43 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
vallotСпасибо, но может у кого еще есть какие то решения???? Советы??? А чем предыдущее решение не устраивает? Можно посылать еще WM_COMMAND , например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 09:54 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 09:58 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
----Решения и советы могут быть если эта прога : - API в виде DLL ----- Это присутствует! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 11:09 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
А стрелки, увы, стоят на месте!!!! Да и если они приползут на кнопку, то как ее запустить? Кнопка реагирует на нажатие мыши, а на ENTER -нет! Эхе..хэ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 10:55 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
vallotА стрелки, увы, стоят на месте!!!! Да и если они приползут на кнопку, то как ее запустить? Кнопка реагирует на нажатие мыши, а на ENTER -нет! Эхе..хэ..... 1. Это ты про калькулятор или про свою прогу Металикс? Если про свою, то скажи спасибо программисту. 2. Может у этой кнопки горячая клавиша есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 14:23 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Нет горячих клавиш, увы мне, увы..! Но есть идея попросить их создать горячие клавиши! Они постоянно апгрейты присылают, может выкручусь! А вообще то жалко, что хакеров на форуме нет..., щас бы вмиг бы решили проблему мою!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 20:24 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Ура, нашел!!! Помогите, у кого есть опыт. Например имеется файл Vova.dll, а в нем есть строчка: OriginalFirstThunk: GetEnvironmentVariableW(337) FirstThunk: GetEnvironmentVariableW(337) Как мне при написать код, чтобы выполнилась длл-команда из моей проги??? Подскажите, кто знает!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 10:56 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
..........и тишина!? Э...хе...хе!!!. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 14:59 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
vallot..........и тишина!? Э...хе...хе!!!. Так почитайте о GetEnvironmentVariable - и чем это может помочь? Я уже предложил вариант. Подробнее - берется spy++ или winspector и изучается приложение - нужно узнать класс окна и код сообщения. По шагам: 1. Запустить приложение 2. Запустить Spy++ 3. Выбрать Find Window (выглядит вроде как бинокль) 4. Оттащить на окно приложения 5. щелкнуть по Messages и OK. 6. в Spy++ появится пустое окно. Выберите тот пункт меню в вашем приложении, который вам нужен и нужные сообщения должны появиться в окне Spy++. В winspector - аналогично. Потом пишете код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 11:07 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Вот спасибо, за подсказку , а то я самоучка и тяжело методом тыка, а сейчас хоть есть зацепка!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 11:18 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Да, рано обрадовался! Все нашел , все установил, разобрался(?) что к чему, но тут заковыка такая - winspector находит все компоненты в Металиксе, но если это, например, виндюковские окна диалогов . А в тулбарах Металикса находит только тулбары !!! А в одном окне тулбара находится 3-6 кнопок , а их то он и не определяет и что только не делал! Оставлял одну кнопку на тулбаре, все равно показывает как тулбар, что делать не знаю! Как заставить, чтобы кнопки в тулбарах показывало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 22:24 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
vallotКак заставить, чтобы кнопки в тулбарах показывало? А зачем? Если я правильно помню, сообщения WM_COMMAND обычно посылаются главному окну приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 09:52 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Ну как же, ведь у меня в тулбаре 1 находится кнопки - 1-Run AutoNesting 2-Run Parametric 3- Run Order File Как же прога будет знать, что именно Run Order File надо запустить, или я чего то не догоняю??? Увы мне.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:19 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
vallot Как же прога будет знать, что именно Run Order File надо запустить, или я чего то не догоняю??? Увы мне.. Если я правильно помню (много лет уже WinApi не использовал :) ) - тулбар получает сообщение о щелчке мышой с указанием координат. (Похоже, кнопки не являются окнами сами по себе). После этого тулбар проверяет, что за кнопка есть по этим координатам. Если это Run Order File - тулбар посылает главному окну сообщение WM_COMMAND с параметром - каковой параметр и есть id команды Run Order File. То же сообщение может послать и меню, например, и ваша программа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:32 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Я прошу прощения, я наверное ввел в зблуждение Вас своим "ламерским" языком , под словом "кнопка" я имел ввиду Command Button ! И как я уже говорил, в некоторых диологовых окнах определяет как "Button"! И еще вопрос- CommandId = 'идентификатор нужного пункта меню, который узнали Как я это могу определить, если Command Button !(Run Order File) не отражается, или это что-то другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 11:56 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
vallot Как я это могу определить, если Command Button !(Run Order File) не отражается, или это что-то другое? Следите за главным окном - какие ему приходят сообщения, когда вы нажимаете кнопку на тулбаре или выбираете пункт в меню? Будет много - целая куча mousemove, mouseup, mousedown. Одно из них может быть WM_COMMAND - это и нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 12:39 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Вот для примера создал на VB6 проект "Vova", в проекте есть форма, на ней CommandButton для выполнения кое каких действий в TextBoxe . Через Winspector Spy нашел все для CommandButton : 000601В6: ThunderCommandButton "cmdVova" А на VBА (чтобы нажать CommandButton из другой программы) сделал по совету так: '=========================================================== 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 Const WM_COMMAND = &H111 Private Sub Command1_Click() Dim hwnd As Long Dim CommandId As Long CommandId = 2 hwnd = FindWindow("ThunderCommandButton", vbNullString) PostMessage hwnd, WM_COMMAND, CommandId, 0 End Sub ======================================================== Но это не работает, почему? По моему нету ссылки на проект VB6 , кто может помочь??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2005, 23:04 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Второй раз поднимаю эту тему, но теперь надеюсь что вопрос будет понятен до конца!!! Прочел много помощи, вроде(?) делаю все правильно, но не получаю результата, ПОЧЕМУ??? Подскажите пожалуйста, сам уже неделю бьюсь!!! -------------------------------------------------------------------------------- Эксперементирую с "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, "Button", "Open")'находим хэндл кнопки "Open" SendMessage hwndOpen, WM_ACTIVATE, 1&, 0 'делаем окно "Open" активным выбрать нужный файл-????????- не знаю как это сделать SendMessage hwndBtnOpen, BM_CLICK, 0, 0 'нажать кнопку "Open" End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 20:44 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Так же найти хендл поля "Имя файла", и прописать туда текст с именем файла. Через SendMessage, например. А потом "Open". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 10:49 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
текст с именем файла с полным путём , да. В этом диалоге (Открытие файла) не обязательно же по папкам путешествовать, можно просто вписать нужное имя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 10:51 |
|
||
|
Нажать кнопку меню в другой программе?
|
|||
|---|---|---|---|
|
#18+
Дело в том , что я специально задал вопрос по Notepad, потому что он у всех под рукой и можно коды мои проверить! А мои файлы .РРО можно открыть только, если, именно в моем приложении Металикс "путешествовать"!!! А в данном случае- 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"!!!! ПОЧЕМУ???? и т. д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 11:30 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=33249650&tid=2177018]: |
0ms |
get settings: |
8ms |
get forum list: |
22ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
369ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 755ms |

| 0 / 0 |
