И сотворил Бог все программы по образу и подобию Автокада
Именно так и есть
Да, Штырлиц бы наверное уже застрелился.
Так, иду на Рабочий стол и ищу там значок Автокада. Так, нахожу "AutoCAD LT 2002" - не ахти, но нам без разницы. Отодвигаю его в сторону. Открываю "Мой компьютер" -> "Мои Документы", беру первый попавшийся файл "оус1.dwg" и перетаскиваю его аж на Рабочий стол на ярлык атвокада. Операция называется Drag&rop(перенести и оставить). Отпускаю левую кнопку мыши. Запускается автокад и, о чудо, в нём открывается файл "оус1.dwg". Это означает что программа автокад в качестве параметра получила файл оус1.dwg.
Да, Штырлиц бы наверное уже застрелился
"Штирлиц знал, но он не знал-знает ли это Борман?"Точно так же(Drag&rop) у Металикса, я думаю, запустятся файлы .DFT, Но у него еще есть файлы .PPD и .PPO запустятся ли они так же,
не знаю, после выходных проверю, сообщу!
Ну вот проверил, графические файлы.дфт запускаются,
а "текстовые" *.РРО и *.РРд не запускаются!
Их только из самой программы запустить можно!
Проверил с Winspector Металикс, не отражаются меню,
кнопки! Есть только главное окно и тулбары, что делать
не знаю! (Кстати Solid Edge так же построен).
Что делать, стреляться или подскажите!?
Мануал пробовал читать? Может его можно как сервер вызывать через CreateObject?
Вызвать диалог открытия можно например эмуляцией нажатия горячих клавишь. Например CTRL+0. См. keybd_event. Если не устраивает, шли сообщение WM_COMMAND с идентификаторами кнопок тулбара. Идентификаторы находишь каким нибудь оконным инструментом или пишешь сам программу.
Еще неделю назад я бы ничего не понял из того, что ты написал, но "век живи-век учись!" Сколько я перечитал
всякого...и не зря! Есть продвижение, где сам, где с помощью участников форума, но задача почти решена! Осталось пару нерешенных вопросов! Так как, в принципе,
я разобрался как управлять чужими окнами, сейчас я,
наверное, смогу "членораздельно" задать эти вопросы!(?)
-----------------------------------------------------
Первое-в мануале только о работе в Металиксе!
-----------------------------------------------
Чтобы запустить параметрические программы, мне надо в Металиксе открыть два окна(из одного попадаеешь в другое).
Первое окно должно открываться из самой среды Металикса.
В среде Металикса есть "ToolBar1",(это создается пользователем, есть такая опция во многих программах) на нем находится кнопка "Run Order file"(она то мне и нужна), но она никак не отображается в Wininspector!
Кстати класс тулбаров вот такого примерно вида:
"Afx 01000000:8:01000100:00011010:00000000"Кликал по кнопке и просматривал Message, и подозреваю, что с кнопкой как то связан Message "WM_PAINT"
Другого ничего не нахожу!
Вот это момент клика:
---------------------------------------------
WM_STCURSOR Hit test code:HTCLIENT Mouse message ID:513
WM_LBUTTONDOWN Mouse coordinates: 43,15
WM_PAINT wParam:0x00000000 lParam:0x00000000
message return-value="1"
WM_PAINT Return:0x00000000
WM_MOUSEMOVE POINT:43,15 MK_LBUTTON
WM_TIMER ID:57345 Callback:0x00000000
WM_LBUTTONUP wParam:0x00000000 lParam:0x000f002b
------------------------------------------------------
Как отсюда что нибудь нарыть???
===================================================
Первое окно- это стандартное диалоговое окно типа "Open","Save"-здесь проблема в том, когда я вставляю
текст файла "55.РРО", то пишется какая то билиберда,
как то надо перевести в Unicod или что,или как?
dim s As String
s = "55.РРО"
SendMessage hEdit, WM_SETTEXT, 0, s
Кликал по кнопке и просматривал Message, и подозреваю, что с кнопкой как то связан Message "WM_PAINT"
Ещё как сваязан, этот сообщений приходит в окно при перерисовке. Как ты им собираешся открыть файл, для меня остаётся загадкой. Тулбар посылает не сообщения, а т.н. "уведомления" родительскому окну. Смотреть сообщения нужно не у самого тулбара, а у его формы.
Вот примерно как осуществлять субклассинг програмно (на PowerBasic).
Function SubClassProc(ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam& As Long
'Вот здесь кидаешь все параметры в лог
'...
'Вызов родной процедуры сообщений
Function = CallWindowProc(gOldSubClassProc, hWnd&, wMsg&, wParam&, lParam&
End Function
'Ну и в конце отключаешь субклассирование
SetWindowLong hTextBox1, %GWL_WNDPROC, gOldSubClassProc
Private Sub Command1_Click()
Dim hWndMet As Long
Dim hWndTbl As Long
Dim hWndTb As Long
Dim hWndOr As Long
Dim hwndBtnRun As Long
Dim hwndBtnExt As Long
Dim hEd As Long
Dim s As String
Dim hdc As String
Dim hWndPpo As Long
Dim hwndTblr As Long
Dim RetVal, PrevProc
Dim iReturn As Long
[CODE]Public Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long,
ByVal wParam As Long, lParam As Any) As Long/CODE]
Наконец то я пришел к финалу!...НО почему то программа отлично работает, когда я ее тестирую через Debag , а если запускаю кнопкой с Exelя(она и сделана в нем), то она останавливается на этой строке, не выполняя ее:
PostMessage hwndTblr, WM_COMMAND, 33277, 0
Игрался полдня, но.........??????????????
'=================================
Private Sub Command1_Click()
Dim hWndLis As Long
Dim hwndBtnOk As Long
Dim hwnd As Long
Dim hWndOrd As Long
Dim hwndBtnOpen As Long
Dim hEd As Long
Dim hWndPpo As Long
Dim hwndTblr As Long
Dim RetVal
Dim Order As String
Dim iReturn As Long
'========================
Order = Sheet1.Cells(1, 1)
''=======================================================
RetVal = Shell("C:\Metalix\cncKad2004.75\gkadw.exe", 1)
Do While hwnd = 0
SendKeys "{ENTER}", True
'-------------------------------------------
hwnd = FindWindow(vbNullString, "No Part 'F' FINNPOWER / F625 20FI-C - cncKad2004 V7.5"
Loop
SetActiveWindow (hwnd)
PostMessage hwnd, WM_COMMAND, 33268, 0
''-------------------------------------------------------
Do While hWndOrd = 0
hWndOrd = FindWindow(vbNullString, "Open Parametric part order"
Loop
SendMessage hWndOrd, WM_ACTIVATE, 1&, 0
hEd = FindWindowEx(hWndOrd, 0, "ComboBoxEx32", vbNullString)
SendMessageByString hEd, WM_SETTEXT, 0&, Order
hwndBtnOpen = FindWindowEx(hWndOrd, 0, "кнопка", "&Open"
SendMessage hwndBtnOpen, BM_CLICK, 0, 0