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

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

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

API技巧集(三)

OBEason ? 來源:jf_88563726 ? 作者:jf_88563726 ? 2023-05-23 11:10 ? 次閱讀

(一)閃爍程序的標(biāo)題欄

在某些專業(yè)的應(yīng)用程序中,當(dāng)程序需要提醒用戶或要引起用戶的注意時,就不停地閃爍程序的標(biāo)題欄。要實現(xiàn)這個功能,只需要一個Timer組件和使用一個API函數(shù)--FlashWindow。

使用API函數(shù)FlashWindow可以閃爍顯示指定窗口,讓窗口在活動與非活動的狀態(tài)之間切換,它有兩個參數(shù):hwnd和bInvert,頭文件為“winuser.h”。其中,參數(shù)hwnd為要閃爍的窗口句柄,參數(shù)bInvert是一個bool變量,設(shè)為true時,程序窗口標(biāo)題欄從活動切換到非活動狀態(tài)、或反向切換,當(dāng)設(shè)為false時,窗口標(biāo)題欄還原為最初的狀態(tài)。如果配合一個時間組件(Timer組件),以一定的時間間隔執(zhí)行語句:

FlashWindow( Form1-$#@62;Handle,true);

程序窗口的標(biāo)題欄就在活動、非活動的狀態(tài)之間不停地切換。若把hwnd指定成為應(yīng)用程序的句柄( Application-$#@62;Handel),將會閃爍程序在任務(wù)欄上的標(biāo)題欄。

下面就讓我們來做一個閃爍窗口標(biāo)題欄和任務(wù)欄上標(biāo)題欄的程序。

首先,在Form1中添加三個按鈕Button1、Button2和Button3,把它們的屬性分別為“閃爍窗口標(biāo)題欄”、“閃爍任務(wù)標(biāo)題欄”和“停止閃爍”,再加入兩個時間組件Timer1和Timer2,將兩個Timer組件的Enabled屬性都設(shè)為false,將Interval屬性都設(shè)為為500(即半秒),改變這個屬性的值可以修改閃爍的頻率。

然后,雙擊Timer1,在OnTimer事件中加入:

FlashWindow( Form1-$#@62;Handle,true);

雙擊Timer2,在OnTimer事件中加入:

FlashWindow( Application-$#@62;Handel,true);

雙擊Button1,在Button1的OnClick事件中加入:

Timer1-$#@62;Enabled=true;

雙擊Button2,在Button2的OnClick事件中加入:

Timer2-$#@62;Enabled=true;

最后,雙擊Button3,在Button3的OnClick事件中加入:

Timer1-$#@62;Enabled=false;

Timer2-$#@62;Enabled=false;

FlashWindow( Form1-$#@62;Handle,false);

FlashWindow( Application-$#@62;Handel,false);

這樣,一個簡單的例子就完成了。按F9編譯運行程序,你就可閃爍窗口標(biāo)題欄或是閃爍任務(wù)欄上? 題欄了。

(二)拖動無標(biāo)題窗體

現(xiàn)在的Windows應(yīng)用程序,大都使用了圖形化的界面、不規(guī)則窗口技術(shù),使得程序界面更加漂亮了。但是,使用界面一般要先把窗體的標(biāo)題欄去掉(在BCB中,將窗體的BorderStyle屬性設(shè)為bsNone,就可以把窗體的標(biāo)題欄去掉),這樣就不能使用原來的標(biāo)題欄了,出現(xiàn)了窗口不能移動的問題。沒有標(biāo)題欄怎樣用鼠標(biāo)拖動窗體呢?我們可以使用Windows的API函數(shù)SendMessage來解決這個問題。

首先,新建一個工程,把窗體的BorderStyle屬性設(shè)為bsNone去掉窗體的標(biāo)題欄,按F12鍵切換到代碼編輯窗口,在頭部加入包含頭文件"winuser.h"的代碼:

#include $#@60;winuser.h$#@62;

然后,在窗體的 OnMouseDown 事件中加入下面的代碼:

if(Button == mbLeft)//判斷是否按了鼠標(biāo)左鍵

{

ReleaseCapture();//釋放鼠標(biāo)操作

SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);

}

這樣,用鼠標(biāo)左鍵點住窗口拖動,就可以實現(xiàn)拖動沒有標(biāo)題的窗口了。也可以在窗體上添加組件,然后在該組件的 OnMouseDown 事件中加入上面的代碼,這樣也可以點住這個組件拖動窗口。你還可以把SendMessage函數(shù)的第一個參數(shù)修改為這個組件的句柄,如:往窗體添加一個Button組件,在它的 OnMouseDown 事件中加入上面的代碼,其中把SendMessage那行語句改為:

SendMessage( Button1-$#@62;Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);

這樣就可以在程序運行時,用鼠標(biāo)在窗口的范圍內(nèi)移動Button1了。

(三)隱藏程序在任務(wù)欄的圖標(biāo)

使用API函數(shù)ShowWindow可以隱藏一個程序在任務(wù)欄的圖標(biāo),它被包含在頭文件“winuser.h”里面。

1、隱藏任務(wù)欄圖標(biāo)的代碼就是:

ShowWindow( Application-$#@62;Handle, SW_HIDE);

2、要重新顯示的時候就使用:

ShowWindow( Application-$#@62;Handle, SW_SHOW);

但是,如果將程序最小化后,在任務(wù)欄的圖標(biāo)就會重新出現(xiàn)。若要在程序還原最小化后,程序在任務(wù)欄的圖標(biāo)重新被隱藏起來,可以在窗體的OnPaint事件中加入隱藏程序在任務(wù)欄的圖標(biāo)的代碼,這樣,程序只有在最小化時任務(wù)欄才會出現(xiàn)圖標(biāo),當(dāng)程序還原最小化時圖標(biāo)又會重新被隱藏起來。

(四)重啟、關(guān)閉Windows

當(dāng)用戶修改了Windows里面的一些設(shè)置,Windows經(jīng)常會提問是否要重新啟動計算機,當(dāng)用戶點Yes的時候,計算機將會自動重啟。這個就是API函數(shù)ExitWindowsEx的一個典型的應(yīng)用。

ExitWindowsEx,顧名思義就是退出Windows的函數(shù),它有兩個參數(shù),第一個是退出Windows的選項,常用的有:EWX_REBOOT(重新啟動計算機),EWX_SHUTDOWN(關(guān)閉計算機),EWX_LOGOFF(注銷當(dāng)前用戶),第二個參數(shù)系統(tǒng)保留沒有使用,可設(shè)為0。

在自編的程序中(如:注冊表修改程序),當(dāng)用戶修改了某項設(shè)置需要重新啟動計算機的時候,就要使用EWX_REBOOT選項重啟計算機。如:

ExitWindowsEx(EWX_REBOOT,0);

使用WX_SHUTDOWN選項,可以實現(xiàn)關(guān)機。如:

ExitWindowsEx(EWX_SHUTDOWN,0);

當(dāng)需要注銷的時候,就使用EWX_LOGOFF選項。如:

ExitWindowsEx(EWX_LOGOFF,0);


審核編輯黃宇

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

    關(guān)注

    2

    文章

    1501

    瀏覽量

    62025
收藏 人收藏

    評論

    相關(guān)推薦

    芯盾時代入選《API安全技術(shù)應(yīng)用指南(2024版)》API安全十大代表性廠商

    近日,國內(nèi)知名網(wǎng)絡(luò)安全媒體安全牛正式發(fā)布《API安全技術(shù)應(yīng)用指南(2024版)》報告,幫助用戶更好地開展API安全規(guī)劃和安全建設(shè),并提供有效的API安全框架、產(chǎn)品方案、廠商選擇建議。芯盾時代作為領(lǐng)先
    的頭像 發(fā)表于 12-18 11:04 ?285次閱讀
    芯盾時代入選《<b class='flag-5'>API</b>安全技術(shù)應(yīng)用指南(2024版)》<b class='flag-5'>API</b>安全十大代表性廠商

    IP風(fēng)險畫像詳細接入規(guī)范、API參數(shù)(Ipdatacloud)

    的風(fēng)險行為標(biāo)簽、代理、真人率、秒撥概率等風(fēng)險特征和潛在風(fēng)險。 數(shù)據(jù)示例: 產(chǎn)品的詳細接入文檔、API參數(shù)如下: 接口地址:https://api.ipdatacloud.com 請求方式 輸出
    的頭像 發(fā)表于 11-15 11:11 ?275次閱讀
    IP風(fēng)險畫像詳細接入規(guī)范、<b class='flag-5'>API</b>參數(shù)(Ipdatacloud)

    api驅(qū)動的云服務(wù)是什么意思?

    API驅(qū)動的云服務(wù)是指利用API技術(shù)來驅(qū)動和提供云服務(wù)的模式。在這種模式下,云服務(wù)提供商會公開一系列的API接口,允許開發(fā)者或應(yīng)用程序通過調(diào)用這些API來實現(xiàn)對云服務(wù)的訪問和操作。
    的頭像 發(fā)表于 11-14 10:06 ?192次閱讀

    API :軟件程序間溝通的橋梁

    或許我們不清楚API是什么,但在現(xiàn)實生活中,API的應(yīng)用場景卻遠遠超出了我們的想象。舉個例子來說,當(dāng)我們想要搜索某個IP地址時,通常是利用API與離線庫兩種方式去獲取數(shù)據(jù)信息,那么或許你會疑惑到底
    的頭像 發(fā)表于 08-27 15:54 ?262次閱讀

    全球視野下的API資源,看冪簡集成如何整合國內(nèi)外API

    在全球數(shù)字化浪潮的推動下,API(應(yīng)用程序編程接口)已成為連接不同系統(tǒng)和數(shù)據(jù)的橋梁,是企業(yè)數(shù)字化轉(zhuǎn)型的關(guān)鍵。全球各地的企業(yè)都在進行數(shù)字化轉(zhuǎn)型,它們不約而同地尋求通過API快速集成新技術(shù),以提高效率
    的頭像 發(fā)表于 07-30 14:23 ?316次閱讀
    全球視野下的<b class='flag-5'>API</b>資源,看冪簡集成如何整合國內(nèi)外<b class='flag-5'>API</b>

    鴻蒙元服務(wù)API全新呈現(xiàn)-開發(fā)更清晰高效

    鴻蒙元服務(wù)API全新呈現(xiàn),開發(fā)更清晰高效,具體見如下截圖,深黑色部分即本階段公布支持的元服務(wù)API。 本材料整理來源于HarmonyOS NEXT Developer Beta1官
    發(fā)表于 07-11 10:23

    如何理解機器學(xué)習(xí)中的訓(xùn)練、驗證和測試

    理解機器學(xué)習(xí)中的訓(xùn)練、驗證和測試,是掌握機器學(xué)習(xí)核心概念和流程的重要一步。這者不僅構(gòu)成了模型學(xué)習(xí)與評估的基礎(chǔ)框架,還直接關(guān)系到模型性能的可靠性和泛化能力。以下是一篇深入探討這
    的頭像 發(fā)表于 07-10 15:45 ?3998次閱讀

    ChatGPT-4 API 密鑰:官方申請指南及國內(nèi)直連使用攻略

    如何使用 ChatGPT 4.0 API 一、獲取 API Key 要使用 ChatGPT 4.0,首先需要獲取一個 API Key,它將作為訪問 token 額度的憑證。您可以通過以下步驟獲取
    的頭像 發(fā)表于 05-29 17:08 ?6483次閱讀
    ChatGPT-4 <b class='flag-5'>API</b> 密鑰:官方申請指南及國內(nèi)直連使用攻略

    華為云發(fā)布 CodeArts API,為 API 護航

    4 月 10 日,華為云正式發(fā)布 API 全生命周期管理一體化協(xié)作平臺 CodeArts API,支持開發(fā)者高效實現(xiàn) API 設(shè)計、開發(fā)、測試、托管、運維、變現(xiàn)的一站式體驗。以 API
    的頭像 發(fā)表于 05-09 23:17 ?537次閱讀
    華為云發(fā)布 CodeArts <b class='flag-5'>API</b>,為 <b class='flag-5'>API</b> 護航

    谷歌開放ZenDeviceEffects API,助第方應(yīng)用實現(xiàn)睡前屏幕管理

    據(jù)報道,谷歌近日在安卓 15 開發(fā)者預(yù)覽版 2 中推出了全新 ZenDeviceEffects API,允許第方應(yīng)用訪問數(shù)字健康的就寢模式功能。
    的頭像 發(fā)表于 05-08 16:41 ?484次閱讀

    什么是國外API代理?

    API
    jf_60146132
    發(fā)布于 :2024年04月30日 06:47:18

    OpenAI API Key獲取與充值教程:助開發(fā)者解鎖GPT-4.0 API

    OpenAI 的 API Key,以及如何使用這個 Key 來調(diào)用 GPT-4.0 API。 第一步:獲取 OpenAI API Key 要開始使用 OpenAI 的服務(wù),你首先需要注冊并獲取一個
    的頭像 發(fā)表于 04-28 16:35 ?1.1w次閱讀
    OpenAI <b class='flag-5'>API</b> Key獲取與充值教程:助開發(fā)者解鎖GPT-4.0 <b class='flag-5'>API</b>

    API安全風(fēng)險顯現(xiàn),F(xiàn)5助API實現(xiàn)可信訪問

    API在現(xiàn)代軟件開發(fā)中占據(jù)著重要地位,是應(yīng)用和數(shù)據(jù)的網(wǎng)關(guān),實時API更是構(gòu)建數(shù)字業(yè)務(wù)的基礎(chǔ)。Salt Labs報告顯示,過去6個月中,API攻擊活動數(shù)量快速增長了400%,可見API
    的頭像 發(fā)表于 04-17 16:09 ?458次閱讀
    <b class='flag-5'>API</b>安全風(fēng)險顯現(xiàn),F(xiàn)5助<b class='flag-5'>API</b>實現(xiàn)可信訪問

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 剛剛 GA,旨在改進將集群服務(wù)暴露給外部的過程。這其中包括一套更標(biāo)準(zhǔn)、更強大的 API資源,用于管理已暴露的服務(wù)。在這篇文章中,我將介紹 Gateway
    的頭像 發(fā)表于 01-12 11:32 ?894次閱讀
    Kubernetes Gateway <b class='flag-5'>API</b>攻略教程

    極管的共放大器設(shè)計與分析

    極管共放大器是一種常見的電子電路,廣泛應(yīng)用于信號處理、通信等領(lǐng)域。本文將介紹極管共放大器的設(shè)計與分析方法。 一、極管共
    的頭像 發(fā)表于 12-30 17:09 ?1381次閱讀
    <b class='flag-5'>三</b>極管的共<b class='flag-5'>集</b>放大器設(shè)計與分析