




已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
/ShowForum.aspx?id=36&ClassID=57對法恩特插件進行外部操作1 想必大家對法恩特的插件不陌生的;大概是第一款完整的標(biāo)準(zhǔn)件的插件; 空閑的時候做了個小程序,用來對FNT插件進行外部操作,目的是用其他外部程序控制法恩特的軟件窗口工作;首先用到win32 api函數(shù):findwindows;Private Declare Function FindWindow Lib user32 Alias FindWindowA (ByVal lpClassName As String, ByVal lpWindowName As String) As Long把這句話加到vb程序的聲明中,這樣在程序里面就能調(diào)用findwindows函數(shù)來尋找FNT的窗口了,本質(zhì)上來說每個windows窗口都有一個唯一的句柄,可惜每次運行窗口的時候句柄的值是變動的;hwnd = FindWindow(vbNullString, 法恩特標(biāo)準(zhǔn)件庫-螺栓)如果“法恩特標(biāo)準(zhǔn)件庫-螺栓”這個窗口是打開著的,我們就能利用上面的語句找到這個窗口的句柄;hwnd這個函數(shù)的真值就是句柄;這是第一步,只有找到了句柄才能夠?qū)@個特定的窗口進行操作;如果需要對其他窗口操作把語句中的窗口名稱換掉即可:如:hwnd = FindWindow(vbNullString, 法恩特標(biāo)準(zhǔn)件庫-軸承) hwnd = FindWindow(vbNullString, 法恩特標(biāo)準(zhǔn)件庫-螺母) hwnd = FindWindow(vbNullString, 法恩特標(biāo)準(zhǔn)件庫-墊圈)hwnd = FindWindow(vbNullString, 法恩特標(biāo)準(zhǔn)件庫-密封件)這個是隨意換的;如果想操作solidworks窗口,就換成:hwnd = FindWindow(vbNullString, Solidworks Office Premium 2007)一樣可以得到sw軟件的運行窗口;抱歉我用的是sw2007;機器破,沒辦法;補充一點:在用上面的hwnd語句之前,要加一個hwnd的定義:Dim hwnd As Long這樣就把hwnd的類型規(guī)定為長整型;找到hwnd,也就是上面所說的句柄是打算干什么呢?當(dāng)然是為了找到這個窗口里面顯示的其他控件;怎么找呢? 下次再寫給大家;我們說到hwnd是句柄,也就是法恩特窗口的句柄;我們來看上圖: 圖中有“確定”“取消”按鍵,這是我們軟件中經(jīng)常有的東西,這種東西有個專有名稱叫控件,是專門做出來的一個軟件集合,可以供編程者調(diào)用; 圖中也還有其他種類的控件,我們可以數(shù)一下,一共是12個控件;其中包括“標(biāo)準(zhǔn)件類型”這樣的字段也是用控件的形式做出來的。 我們介紹上面控件的目的是要通過窗體的hwnd(句柄)來得到,窗體內(nèi)控件的hwnd,沒想到吧,窗體內(nèi)的控件也有句柄哦。 那么,我們用一句程序來調(diào)用查找控件的模塊程序:Call EnumChildWindows(hwnd, AddressOf EnumChildWindowProc, lParam) 注意 hPwnd 是父窗口的句柄下面我就要列出查找控件的模塊了,基本的意思是用枚舉法遍歷所有在窗口中的控件;找出控件的hwnd(也就是句柄);Public Function EnumChildWindowProc(ByVal hwnd As Long, ByRef lParam As Long) As LongDim strTitle As StringDim strClassName As StringlParam = 1Call GetTitleClass(hwnd, strTitle, strClassName)那么在這個模塊之前,我們當(dāng)然要聲明一下EnumChildWindowProc這個過程了,這個部分有興趣的朋友可以查閱win32 Api函數(shù),VB里面也有帶這個的查找器。Public Declare Function EnumWindows Lib user32 (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long那么好了,請看上面最后一句:Call GetTitleClass(hwnd, strTitle, strClassName)這明顯是調(diào)用了另外一段程序,也就是GetTitleClass,那么我們給出這段程序:Public Sub GetTitleClass(ByVal hwnd As Long, Title As String, ClassName As String)Dim nSize As LongDim strTitle As StringDim strClassName As StringnSize = GetWindowTextLength(hwnd)If nSize 0 ThenstrTitle = Space(255)Call GetWindowText(hwnd, strTitle, Len(strTitle)strTitle = Trim(strTitle)ElsestrTitle = No TitleEnd IfstrClassName = Space(255)Call GetClassName(hwnd, strClassName, Len(strClassName)strClassName = Trim(strClassName)Title = strTitleClassName = strClassNameMsgBox ClassNameMsgBox strTitleEnd Sub用上面這段小程序能得到每個控件的三個值:A、hwnd 句柄值B、strTitle 就是控件的標(biāo)題C、ClassName 控件的類型;也就是說EnumChildWindowProc要遍歷每個控件,然后通過GetTitleClass,得到每個控件的句柄值,控件的標(biāo)題,控件的類型。今天我們繼續(xù)討論上次我貼出來的一段小程序:Public Sub GetTitleClass(ByVal hwnd As Long, Title As String, ClassName As String)Dim nSize As LongDim strTitle As StringDim strClassName As StringnSize = GetWindowTextLength(hwnd)If nSize 0 ThenstrTitle = Space(255)Call GetWindowText(hwnd, strTitle, Len(strTitle)strTitle = Trim(strTitle)ElsestrTitle = No TitleEnd IfstrClassName = Space(255)Call GetClassName(hwnd, strClassName, Len(strClassName)strClassName = Trim(strClassName)Title = strTitleClassName = strClassNameMsgBox ClassNameMsgBox strTitleEnd Sub上段程序中加紅色的代碼是win32 api,需要進行聲明的,如下:Private Declare Function GetClassName Lib user32 Alias GetClassNameA (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As LongPrivate Declare Function GetWindowText Lib user32 Alias GetWindowTextA (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPrivate Declare Function GetWindowTextLength Lib user32 Alias GetWindowTextLengthA (ByVal hwnd As Long) As Long我們聲明了api函數(shù)以后就可以順利運行程序了,通過下面兩句可以輕松得到每個控件的名字和標(biāo)題,這樣我們就能夠有很大收獲了。MsgBox ClassNameMsgBox strTitle然后可以找張紙把得到的classname和strtiltle記錄下來,然后再來分析具體的控件情況。接下來:我說明一下我們的編程思路:第一步:找到總窗口的句柄第二步:通過總窗口的句柄遍歷窗口中的控件,得到每個控件的種類和標(biāo)題第三步:按控件的種類和標(biāo)題,對控件進行一一對應(yīng),找出我們需要操作的控件,比如“確定”控件(按鈕控件)。第四步:對我們需要操作的控件提取出控件的hwnd(控件句柄);第五步:用控件句柄hwnd操作控件;第六步:結(jié)合VB的相關(guān)其他界面和編程要求對控件實現(xiàn)控制,比如輸入、輸出、順序動作等。 下一節(jié),我會將得到的控件列出來,以便大家參考。(原創(chuàng))solidworks開發(fā)教程27-例題 VB對尺寸的操作 歡迎參與調(diào)查 下面的例子是用VB程序?qū)α慵某叽鐓?shù)進行操作,注意:目前絕大多數(shù)的API函數(shù)的單位是米; Private Sub Command1_Click() 建立一個按鈕,這是點按鈕的事件驅(qū)動;Dim Part As Object 定義Partdim strFileName as string 定義sTrFileName 串?dāng)?shù)據(jù)類型;dim longstatus as long 定義長型類型;dim d1 as integerdim d2 as integerdim h as Singleif Dir(strFileName)= then 檢查文件是否存在 MsgBox (文件不存在,請檢查路徑: & vbCrlf & strFileName ) exit sub 如果不存在就退出end ifstrFileName =App.Path+墊圈.sldprt 文件地址;Set swApp=CreateObject (SldWorks.Application) 創(chuàng)建swAppswApp.Visible=True swApp 可見set Part=swApp.OpenDoc4(strFileName,1,0,longsstatues) 用API打開文件set Part=swApp.ActivateDoc (墊圈) 激活ProgressBar1.value=4d1=text1.text 分別從text1到text3中取值;text1-3是text控件;d2=text2.texth=text3.textdebug.Print d1,d2,hstrFileName=墊圈.sldprtPart.Parameter(d1草圖1&strFileName).systemValue=d1/1000 賦值Part.Parameter(d2草圖1&strFileName).systemValue
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼年型骨骺炎個案護理
- 脾周圍炎的護理查房
- 軟件硬件集成主要材料供應(yīng)計劃
- 新人教版小學(xué)數(shù)學(xué)三年級下冊教學(xué)評價計劃
- 小學(xué)數(shù)學(xué)課題研究教學(xué)計劃
- 醫(yī)院醫(yī)療設(shè)備年度保養(yǎng)計劃
- 個人銀行收入證明書(5篇)
- 五年級上學(xué)期班主任考試復(fù)習(xí)計劃
- 《怎樣進行高效的學(xué)習(xí)計劃制定教案》
- 文化專有詞匯在英語中的翻譯與處理:翻譯碩士專業(yè)課程教案
- 中國IBD藍(lán)皮書-中國炎癥性腸病醫(yī)患認(rèn)知暨生存質(zhì)量報告:克羅恩病部分
- 2025至2030中國電動踏板車行業(yè)項目調(diào)研及市場前景預(yù)測評估報告
- 中國公安信息化市場前景預(yù)測及未來發(fā)展趨勢報告
- 專精特新企業(yè)課件
- 2025至2030中國耐腐蝕高溫合金行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 四川省南充市四校聯(lián)考2025年英語八下期末質(zhì)量檢測試題含答案
- 2025年中國全棉靛藍(lán)色織布市場調(diào)查研究報告
- 人文關(guān)懷病區(qū)管理制度
- 中華詩詞大賽1-3年級題庫(含答案)
- 2025年四川廣安愛眾股份有限公司對外招聘考試筆試試題(含答案)
- 中國軍魂課件
評論
0/150
提交評論