在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何嵌入第三方可執(zhí)行程序

jf_xutpKvFS ? 來(lái)源:LabVIEW QT 修煉之路 ? 作者:LabVIEW QT 修煉之路 ? 2022-11-01 09:54 ? 次閱讀

LabVIEW:2015

你可能碰到過(guò)這種需求:需要在自己開(kāi)發(fā)的應(yīng)用程序中嵌入某個(gè)第三方的可執(zhí)行程序,那么該如何實(shí)現(xiàn)呢?其實(shí)是很簡(jiǎn)單的,借助Windows API,簡(jiǎn)單幾步即可完成:

1. 找到待嵌入的窗體句柄,使用WinAPI:

HWND FindWindowA(

[in, optional] LPCSTR lpClassName,

[in, optional] LPCSTR lpWindowName

);

參數(shù)的詳細(xì)描述如下圖所示:

aecc237c-593d-11ed-a3b6-dac502259ad0.png

從描述中可以看到,通過(guò)窗口的標(biāo)題來(lái)查找句柄是簡(jiǎn)單可行的方式(當(dāng)有多個(gè)標(biāo)題相同的窗體時(shí),需要用窗體類(lèi)名來(lái)區(qū)分),但是此時(shí) lpClassName需要傳入NULL值,但LabVIEW中并沒(méi)有辦法直接創(chuàng)建NULL值,參考官方給出的解決方案1是可行的(按照值傳遞的方式傳入0,大多數(shù)時(shí)候DLL會(huì)視作指針類(lèi)型參數(shù)傳入的是NULL值),如下圖所示:

af0f4cec-593d-11ed-a3b6-dac502259ad0.png

于是封裝 FindWindowA() 函數(shù)如下圖所示:

af2ab964-593d-11ed-a3b6-dac502259ad0.png

af438d18-593d-11ed-a3b6-dac502259ad0.png

af605fd8-593d-11ed-a3b6-dac502259ad0.png

另外如果你想獲取任一窗體的類(lèi)名和標(biāo)題名,借用Spy++工具是很容易的,可以自行搜索下載,當(dāng)然如果你按照了Visual Studio也是帶的有的,如下圖所示:

af6ef2fa-593d-11ed-a3b6-dac502259ad0.png

af84e8ee-593d-11ed-a3b6-dac502259ad0.png

比如將查找程序工具拖拽到TEST.exe的窗體標(biāo)題欄上,如下圖所示:

afa07d0c-593d-11ed-a3b6-dac502259ad0.png

2.設(shè)置帶嵌入窗體的父窗體,使用WinAPI:

HWND SetParent(

[in] HWND hWndChild,

[in, optional] HWND hWndNewParent

);

參數(shù)的詳細(xì)描述如下圖所示:

afbdff76-593d-11ed-a3b6-dac502259ad0.png

這兩個(gè)參數(shù)比較簡(jiǎn)單,無(wú)需多解釋?zhuān)庋b SetParent() 函數(shù)如下圖所示:

afdd0b00-593d-11ed-a3b6-dac502259ad0.png

b0018c6e-593d-11ed-a3b6-dac502259ad0.png

b018eb2a-593d-11ed-a3b6-dac502259ad0.png

那么如何獲取LabVIEW編寫(xiě)的VI窗體句柄呢?這里提供兩種方式:

通過(guò)上面封裝的 FindWinowA() 函數(shù),傳入窗體標(biāo)題來(lái)獲取;

通過(guò)VI的Front Panel Window.Native Window屬性直接獲取,但是該屬性默認(rèn)是隱藏的,需要在LabVIEW.ini配置文件中加上:SuperSecretPrivateSpecialStuff=True,重啟LabVIEW即可;

b02941dc-593d-11ed-a3b6-dac502259ad0.png

有了上述兩個(gè)API其實(shí)就已經(jīng)可以把第三方exe嵌入到VI中了,但是窗體沒(méi)有重繪,效果可能是窗體已經(jīng)嵌入但是是空白的(如下圖所示),需要自己拖動(dòng)一下窗口或調(diào)整其大小才能恢復(fù),另外嵌入時(shí)沒(méi)有辦法去控制嵌入的位置和窗體大小,顯然這并不夠完美,那么還需借助幾個(gè)API來(lái)達(dá)到理想的效果。

b0394a14-593d-11ed-a3b6-dac502259ad0.png

3. 獲取窗體的邊界尺寸,使用WinAPI:

BOOL GetWindowRect(

[in] HWND hWnd,

[out] LPRECT lpRect

);

參數(shù)詳細(xì)描述如下圖所示:

b04fbd8a-593d-11ed-a3b6-dac502259ad0.png

參數(shù)也比較簡(jiǎn)單,只是第二個(gè)參數(shù)是一個(gè)結(jié)構(gòu)體指針,這里需要用一個(gè)空類(lèi)型指針來(lái)接收,傳入適配類(lèi)型簇(包含四個(gè)Int32數(shù)值元素),封裝如下圖所示:

b0635ebc-593d-11ed-a3b6-dac502259ad0.png

b0748d5e-593d-11ed-a3b6-dac502259ad0.png

b086cf32-593d-11ed-a3b6-dac502259ad0.png

4. 移到窗體位置并設(shè)置大小,使用WinAPI:

BOOL MoveWindow(

[in] HWND hWnd,

[in] int X,

[in] int Y,

[in] int nWidth,

[in] int nHeight,

[in] BOOL bRepaint

);

參數(shù)詳細(xì)描述如下圖所示:

b09d9dfc-593d-11ed-a3b6-dac502259ad0.png

封裝如下圖所示:

b0b1cd90-593d-11ed-a3b6-dac502259ad0.png

b0c926de-593d-11ed-a3b6-dac502259ad0.png5.? ?

5.更改指定窗口的屬性,使用WinAPI:

LONG SetWindowLongA(

[in] HWND hWnd,

[in] int nIndex,

[in] LONG dwNewLong

);

詳細(xì)參數(shù)描述如下圖所示:

b0e2ad84-593d-11ed-a3b6-dac502259ad0.png

關(guān)于窗口樣式有很多種,這里不便展出,詳細(xì)請(qǐng)參考官方描述,鏈接如下:

https://learn.microsoft.com/zh-cn/windows/win32/winmsg/window-styles

封裝如下圖所示:

b1017160-593d-11ed-a3b6-dac502259ad0.png

b113e41c-593d-11ed-a3b6-dac502259ad0.png

6. 指定窗體的顯示狀態(tài),使用WinAPI:

BOOL ShowWindow(

[in] HWND hWnd,

[in] int nCmdShow

);

詳細(xì)參數(shù)描述如下圖所示:

b124f126-593d-11ed-a3b6-dac502259ad0.png

封裝如下圖所示:

b13a382e-593d-11ed-a3b6-dac502259ad0.png

b1533e0a-593d-11ed-a3b6-dac502259ad0.png

7.發(fā)送指定消息到窗口,使用WinAPI:

LRESULT SendMessageA(

[in] HWND hWnd,

[in] UINT Msg,

[in] WPARAM wParam,

[in] LPARAM lParam

);

詳細(xì)參數(shù)如下圖所示:

b1622da2-593d-11ed-a3b6-dac502259ad0.png

官方文檔中提到更改窗口的父級(jí)時(shí),應(yīng)同步這兩個(gè)窗口的 UISTATE。有關(guān)詳細(xì)信息,請(qǐng)參閱WM_CHANGEUISTATE和WM_UPDATEUISTATE。封裝如下:

b172af56-593d-11ed-a3b6-dac502259ad0.png

b18cf686-593d-11ed-a3b6-dac502259ad0.png

嵌入一個(gè)LabVIEW開(kāi)發(fā)的可執(zhí)行程序如下圖所示:

b1a29c84-593d-11ed-a3b6-dac502259ad0.png

b1c5a878-593d-11ed-a3b6-dac502259ad0.png

嵌入Excel應(yīng)用程序如下圖所示:

b1dae3dc-593d-11ed-a3b6-dac502259ad0.png

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LabVIEW
    +關(guān)注

    關(guān)注

    1986

    文章

    3667

    瀏覽量

    330658
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1545

    瀏覽量

    63190
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3310

    瀏覽量

    58439

原文標(biāo)題:如何嵌入第三方可執(zhí)行程序

文章出處:【微信號(hào):LabVIEW QT 修煉之路,微信公眾號(hào):LabVIEW QT 修煉之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Labview如何內(nèi)嵌操作第三方EXE程序

    自己在網(wǎng)上搜了下相關(guān)資料,能把第三方EXE內(nèi)嵌進(jìn)入容器里,但是有個(gè)問(wèn)題,這個(gè)第三方軟件必須手動(dòng)拖到容器正中間,手動(dòng)最大化。請(qǐng)問(wèn)有什么方法可以自動(dòng)實(shí)現(xiàn)嗎? 下圖是我內(nèi)嵌的POLL 軟件。如圖!
    發(fā)表于 04-18 14:26

    如何打開(kāi)第三方軟件

    請(qǐng)問(wèn)大神們 誰(shuí)知道如何在Labview中 打開(kāi)第三方軟件,我現(xiàn)在想打開(kāi)工程后 自動(dòng)打開(kāi)USB視頻采集卡,然后就直接顯示出采集卡采集到的圖像了請(qǐng)問(wèn)如何打開(kāi)在這先謝過(guò)了
    發(fā)表于 09-11 16:26

    如何把第三方庫(kù)加到PROTEUS中?

    新手求教,弱弱的問(wèn)下,下了一個(gè)第三方庫(kù),說(shuō)是要先安裝,再添加路徑,可是我下來(lái)的第三方庫(kù)沒(méi)有看到安裝文件啊。還望指教如何添加!
    發(fā)表于 06-15 22:32

    如何在LabVIEW中嵌入第三方軟件界面

    如何把第三方軟件的界面嵌入到labview中,并且能夠在LabVIEW的前面板中對(duì)第三方軟件進(jìn)行操作。LabVIEW中有Active用于IE回調(diào)的例子,可以在LabVIEW前面板中操作IE。想把IE換成
    發(fā)表于 04-27 23:06

    第三方dll調(diào)用問(wèn)題!!!

    第三方dll,沒(méi)有.h,labview怎么實(shí)現(xiàn)調(diào)用,dll可以用VS打開(kāi),類(lèi)庫(kù)說(shuō)明也有
    發(fā)表于 05-11 09:14

    LabVIEW與第三方軟件交互問(wèn)題

    現(xiàn)在做一個(gè)軟件,就是通過(guò)LabVIEW去與第三方軟件進(jìn)行交互操作!已經(jīng)通過(guò)百度找到了利用user32.dll調(diào)用FindWindowA與PostMessage去實(shí)現(xiàn)對(duì)計(jì)算器,找了多方資料也沒(méi)有找到解決辦法。想做一個(gè)軟件就是對(duì)圖片2中第三方軟件中控件進(jìn)行控制的方法謝謝各位幫
    發(fā)表于 12-26 17:13

    下載python第三方庫(kù)

    python第三方庫(kù)的下載
    發(fā)表于 07-02 13:12

    國(guó)內(nèi)知名第三方檢測(cè)認(rèn)證機(jī)構(gòu)排名

    的某個(gè)客體,我們把它叫作第三方第三方可以是和兩個(gè)主體有聯(lián)系,也可以是獨(dú)立于兩個(gè)主體之外,是由處于買(mǎi)賣(mài)利益之外的第三方(如專(zhuān)職監(jiān)督檢驗(yàn)機(jī)構(gòu)),以公正、權(quán)威的非當(dāng)事人身份,根據(jù)有關(guān)法律、標(biāo)準(zhǔn)或合同所進(jìn)行
    發(fā)表于 07-19 16:57

    關(guān)于LabVIEW調(diào)用第三方exe,如何去控制第三方exe按鈕的問(wèn)題

    我想調(diào)用第三方的exe,但并沒(méi)有給出任何接口,就單單一個(gè)exe程序,通過(guò)查資料得出可以用window自帶的user32.dll可以控制第三方的軟件,通過(guò)FindWindowA函數(shù)找到該軟件句柄,通過(guò)
    發(fā)表于 08-12 16:37

    頭文件中包含第三方文件

    macrocmake如果源文件(例如 CPP)中包含第三方頭文件,但是頭文件(例如 hpp)中不包含該第三方文件頭,采用 PRIVATE。如果源文件和頭文件中都包含該第三方文件頭,采用 PUBLIC
    發(fā)表于 08-18 08:10

    銀行和第三方支付:戀愛(ài)進(jìn)行時(shí)

    銀行和第三方支付:戀愛(ài)進(jìn)行時(shí)   北京2010年1月8日電  -- 從第三方支付誕生之時(shí)起,銀行與第三方支付之間的競(jìng)合關(guān)系
    發(fā)表于 01-09 08:08 ?711次閱讀

    基于第三方信號(hào)無(wú)源探測(cè)系統(tǒng)研究

    文中主要討論了基于第三方信號(hào)檢測(cè)隱形目標(biāo)的無(wú)源探測(cè)系統(tǒng),并對(duì)偵察第三方信號(hào)作用距離和基于第三方信號(hào)無(wú)源探測(cè)系統(tǒng)的作用距離進(jìn)行仿真,證明基于第三方信號(hào)無(wú)源探測(cè)系統(tǒng)在檢測(cè)
    發(fā)表于 03-01 15:35 ?29次下載
    基于<b class='flag-5'>第三方</b>信號(hào)無(wú)源探測(cè)系統(tǒng)研究

    第三方實(shí)例:iView開(kāi)發(fā)介紹 (1)

    第三方實(shí)例介紹 - iView (1)
    的頭像 發(fā)表于 08-22 01:42 ?4519次閱讀

    C++串口程序第三方類(lèi)代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++串口程序第三方類(lèi)代碼免費(fèi)下載。
    發(fā)表于 09-11 08:00 ?7次下載
    C++串口<b class='flag-5'>程序</b><b class='flag-5'>第三方</b>類(lèi)代碼免費(fèi)下載

    第三方腳本成為網(wǎng)絡(luò)攻擊“重災(zāi)區(qū)”,多管齊下防范第三方腳本安全隱患

      第三方腳本攻擊利用的是第一網(wǎng)站對(duì)第三方腳本的控制力不足和難以實(shí)現(xiàn)的全面監(jiān)測(cè),造成較為嚴(yán)重的攻擊后果。除此之外,第三方腳本還會(huì)帶來(lái)一些其他的潛在隱患。綜合來(lái)看,
    的頭像 發(fā)表于 09-04 14:51 ?3773次閱讀
    主站蜘蛛池模板: 精品黄色片 | www视频在线观看天堂 | 亚洲精品第三页 | 色天使在线播放 | 日韩免费三级电影 | www亚洲欲色成人久久精品 | 色视频网站免费 | 一区二区三区亚洲视频 | 全部在线播放免费毛片 | 一级特一级特色生活片 | 免费看一毛一级毛片视频 | 亚洲一区二区三区精品视频 | 国产精品视频久久久久久 | 婷婷激情在线 | 国产乱码免费卡1卡二卡3卡四 | 分分操免费视频在线观看 | 五月天丁香婷 | 亚洲成人在线网站 | 激情综合丝袜美女一区二区 | 天天舔天天爱 | 久久婷婷综合五月一区二区 | 中文字幕xxx | 亚洲五月婷 | 久久是精品 | 中韩日欧美电影免费看 | 亚洲va久久久噜噜噜久久 | 免费观看老外特级毛片 | 国产成人啪午夜精品网站 | abc欧美成人影院 | 亚洲综合色婷婷中文字幕 | 一级录像| 中国国产aa一级毛片 | 日本色频 | 欧美.亚洲.日本一区二区三区 | 精品国产免费观看一区高清 | 日韩毛片大全免费高清 | 99久久精品费精品国产 | 2019天天爱天天做 | 韩国黄色三级视频 | 天天射夜夜骑 | 亚洲人成网站在线在线 |