Страница: 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-почему то возращает "0", значит не находит "Untitled-Notepad"!!!! FindWindow Lib  "user32" Alias  "FindWindowA" _
 
(ByVal  lpClassName As String , _
ByVal  lpWindowName As String ) As Long 
hwnd = FindWindow(vbNullString, "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 | 
 
		
			Поиск по форуму