色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

api技巧集(四)

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

超級鏈接效果

在很多共享軟件的關于對話框里有一些模仿網頁的超級鏈接,如主頁URL或E-Mail之類的,當鼠標移到它上面的時候,文字變成紅色的,當鼠標離開時,文字又變回原來的藍色,如果用鼠標點擊這個鏈接則會彈出瀏覽器窗口打開指定的URL或是運行默認的E-Mail程序撰寫新郵件,就和真的超鏈接一樣。你是不是也想在你的程序里做一個呢?其實,我們只要調用API函數ShellExecute和在鼠標移動時改變一下文字的顏色,就可以在自己的程序中出現這種效果。

首先新建一個工程,在窗體Form1上添加兩個Label組件,它們的Name屬性使用默認的Label1和Label2。

然后在Form1的OnCreate事件中加入代碼:

Label1-$#@62;Cursor=crHandPoint;

Label2-$#@62;Cursor=crHandPoint;

Label1-$#@62;Font-$#@62;Color =clBlue;

Label2-$#@62;Font-$#@62;Color =clBlue;

Label1-$#@62;Caption="主頁:初學者之家網站";

Label2-$#@62;Caption="E-Mail: fdlweb@sina.com";

再在Label1的OnClick(單擊)事件中加入:

//藍色的字請改成自己的主頁地址

ShellExecute(Handle,NULL," http://fdlweb.myrice.com/",NULL,NULL,SW_SHOWNORMAL);

在OnMouseMove事件中加入:

Label1-$#@62;Font-$#@62;Color=clRed;

在Label2的OnClick事件中加入:

//藍色的字請改成自己郵箱地址

ShellExecute(Handle,NULL," mailto:fdlweb@sina.com",NULL,NULL,SW_SHOWNORMAL);

在OnMouseMove事件中加入:

Label2-$#@62;Font-$#@62;Color=clRed;

最后在Form1的OnMouseMove事件中加入:

Label1-$#@62;Font-$#@62;Color=clBlue;

Label2-$#@62;Font-$#@62;Color=clBlue;

代碼輸入完了,按F9編譯運行程序就看到效果了。

拷貝屏幕

BitBlt函數可以將一幅位圖從一個設備場景拷貝到另一個設備場景,這個函數經常用在抓圖程序和游戲編程方面,也可以用來做基于桌面的屏幕保護程序。下面讓我們用BitBlt函數來做一個虛假桌面的程序:

首先,添加一個Image組件到窗體中,將窗體Form1的BorderStyle屬性設為:bsNone。

接著在窗體的OnCreate事件加入程序代碼

Left=0;

Top=0;

Width=Screen-$#@62;Width;

Height=Screen-$#@62;Height;

Image1-$#@62;Left=0;

Image1-$#@62;Top=0;

Image1-$#@62;Width=Screen-$#@62;Width;

Image1-$#@62;Height=Screen-$#@62;Height;

//這句代碼就是將桌面拷貝到組件Image1中來存放,

// 其中GetDC(0)返回桌面設備的句柄(HDC)

BitBlt( Image1-$#@62;Canvas-$#@62;Handle,0,0,Screen-$#@62;Width,Screen-$#@62;Height,GetDC(0),0,0,SRCCOPY);

按F9運行,一個假的桌面就出來了,在這個“桌面”上怎么按鼠標都沒有反應,可以用來捉弄人喔!。有些桌面的小游戲也是這么干的,你可以在這個程序的基礎上加上更多的功能,如在窗體上加上Label組件和Timer組件,用Timer組件來控制Label組件在窗體上移動,再在窗體Form1的OnKeyDown事件和Image1的OnMouseDown事件中加入關閉窗口的代碼“Close();”,最后將編譯了的程序的擴展名改為scr,這就成了一個文字在桌面上亂動的屏幕保護程序了。

取得磁盤總空間和剩余空間

要取得磁盤總空間和剩余空間,最簡單直接的方法是調用API函數 GetDiskFreeSpace。

GetDiskFreeSpace函數有5個參數,第一個參數是要判斷可用空間的驅動器名,第二個參數是一個存放每簇扇區數的變量,第三個參數是一個存放每扇區字節數的變量,第四個參數是存放剩余簇數的變量,第五個參數是存放總簇數的變量。套用相應計算磁盤空間的公式即可得出指定驅動器的總空間或剩余空間。

磁盤總空間和剩余空間的計算公式分別為:

磁盤上剩余空間(字節) = 簇的扇區數 * 扇區的字節數 * 剩余簇數

磁盤上總空間(字節) = 簇的扇區數 * 扇區的字節數 * 總簇數

下面就是取得C盤的總空間和剩余空間的例子:

unsigned long Sectors,Bytes,Free,Total;

GetDiskFreeSpace("C:",&Sectors,&Bytes,&Free,&Total);

//可用空間(單位:MB)

int FreeKB = Bytes * Sectors * Free / 1024;

//總空間(單位:MB)

int TotalKB = Bytes * Sectors * Total / 1024;

ShowMessage("C盤的可用空間有:" + IntToStr(FreeKB) + "MB,總空間有:" + IntToStr(TotalKB) +"MB");

api技巧集(五)

提取圖標

調用API函數ExtractIcon可以提取出在程序文件中的圖標,它的頭文件是shellapi.h,原型為:

HICON ExtractIcon

(

HINSTANCE hInst, //實例句柄

LPCTSTR lpszExeFileName, //要提取圖標的那個程序的文件名

UINT nIconIndex //要提取的圖標的索引

);

調用該函數時,參數hInst一般設為當前應用程序的實例句柄,如: Form1-$#@62;Handle。

參數lpszExeFileName為需要提取圖標的程序文件的完整路徑,這個程序文件可以是EXE文件、DLL文件、ICO文件等,只要是包含有圖標資源的文件一般都可以提取圖標。

當參數nIconIndex指定一個圖標的索引可以返回指向圖標的句柄,如指定的文件中不存在圖標,則返回零,當參數nIconIndex設為-1,函數返回文件的圖標總數。

函數返回的句柄可以賦給一個用TIcon類聲明的變量,再使用該變量的SaveToFile方法就可以把圖標保存出來。

例子:

TIcon *Icon = new TIcon();

AnsiString FileName = "C:\WINDOWS\SYSTEM\SHELL32.DLL";

int TotalIcon;

//得到文件SHELL32.DLL的總圖標數

TotalIcon = (int)ExtractIcon(Form1->Handle,FileName.c_str(), -1);

//提取第一個圖標,0為第一個,1為第二個,類推...

Icon->Handle = ExtractIcon( Form1->Handle, FileName.c_str(), 0);

//保存圖標

Icon->SaveToFile("C:\1.ICO");

下面給出一個完整的圖標提取程序源碼。

這個程序需要四個按鈕控件(Button)、四個文本標簽控件(Label)、兩個文本框控件(Edit)、一個水平滾動條控件(ScrollBar)、一個打開文件對話框控件(OpenDialog)、一個保存文件對話框控件(SaveDialog)和一個圖片控件(Image),還有一個Panel控件是裝飾用的。界面如圖所示:

把各個控件排列好,再把四個Label控件的Caption屬性修改一個,最后輸入程序代碼,運行程序,一個提取圖標的程序就出來了,你以后也就不會為沒有圖標資源可用而發愁了。

程序清單(Unit1.cpp):

//--------------------------------------- ----------------------

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

#pragma hdrstop

#include "Unit1.h"

//----------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

AnsiString FileName;

TIcon *Icon = new TIcon();

int TotalIcon;

//----------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//----------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Caption="圖標小偷 1.0";

Button1-$#@62;Caption="選擇文件";

Button2-$#@62;Caption="保存圖標";

Button3-$#@62;Caption="保存所有";

Button4-$#@62;Caption="退出";

Edit1-$#@62;Text=0;

Edit2-$#@62;Text=0;

Image1-$#@62;Width=32;

Image1-$#@62;Height=32;

OpenDialog1-$#@62;Filter="可執行文件(*.exe,*.dll)|*.exe;*.dll|圖標文件(*.ico)|*.ico|所有文件(*.*)|*.*";

SaveDialog1-$#@62;Filter="圖標文件|*.ico";

ScrollBar1-$#@62;Enabled=false;

Button2-$#@62;Enabled=false;

Button3-$#@62;Enabled=false;

}

//----------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if( OpenDialog1-$#@62;Execute())

{

TotalIcon = (int)ExtractIcon( Form1-$#@62;Handle, OpenDialog1-$#@62;FileName.c_str(), -1 );

if( TotalIcon$#@62;0)

{

if( TotalIcon$#@60;2)

ScrollBar1-$#@62;Enabled=false;

else

ScrollBar1-$#@62;Max=TotalIcon-1;

Button2-$#@62;Enabled=true;

Button3-$#@62;Enabled=true;

FileName = OpenDialog1-$#@62;FileName;

Edit1-$#@62;Text =TotalIcon;

Icon-$#@62;Handle = ExtractIcon( Form1-$#@62;Handle, FileName.c_str(), 0);

Image1-$#@62;Picture-$#@62;Icon=Icon;

Edit2-$#@62;Text=1;

}

else

{

ShowMessage("該文件沒有圖標");

}

}

}

//----------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if( SaveDialog1-$#@62;Execute())

{

//保存圖標

Icon-$#@62;SaveToFile( SaveDialog1-$#@62;FileName);

}

}

//----------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

if( SaveDialog1-$#@62;Execute())

//提取所有的圖標

for(int i=0;i$#@60;TotalIcon-1;i++)

{

Icon-$#@62;Handle = ExtractIcon( Form1-$#@62;Handle, FileName.c_str(), i);

Icon-$#@62;SaveToFile(SaveDialog1-$#@62;FileName+(AnsiString)i+".ico");

}

}

//----------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Close();

}

//----------------------------------------------------------------

void __fastcall TForm1::ScrollBar1Change(TObject *Sender)

{

Edit2-$#@62;Text=ScrollBar1-$#@62;Position+1;

Icon-$#@62;Handle = ExtractIcon( Form1-$#@62;Handle, FileName.c_str(),ScrollBar1-$#@62;Position);

Image1-$#@62;Picture-$#@62;Icon=Icon;

}

//----------------------------------------------------------------

判斷驅動器的類型

使用API函數GetDriveType能判斷一個驅動器的類型,該函數返回一個int型的值,當返回值為2時,是軟盤;為3時,是硬盤;為4時,是網絡映射盤;為5時,是光驅;為6時,是 RAM 磁盤;為其它值時,是非法的盤符。這個API函數包含在winbase.h頭文件中,首先在程序頭部加上語句:

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

包含頭文件,然后在程序中加入以下代碼就可以判斷驅動器的類型:

int drv;

//這里的"C:"為要判斷的盤符

drv=GetDriveType("C:");

switch (drv) //判斷drv的值

{

case 2 : //DRIVE_REMOVABLE

ShowMessage("軟盤");

break;

case 3 : //DRIVE_FIXED

ShowMessage("硬盤");

break;

case 4 : //DRIVE_REMOTE

ShowMessage("網絡映射盤");

break;

case 5 : //DRIVE_CDROM

ShowMessage("光驅");

break;

case 6 : //DRIVE_RAMDISK

ShowMessage("RAM 磁盤");

break;

default :

ShowMessage("這個磁盤不存在!");

break;

}

注:case語句后的數值也可以用注釋后的常數替換。如2可用常數 DRIVE_REMOVABLE 來替換。

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1499

    瀏覽量

    61971
  • 函數
    +關注

    關注

    3

    文章

    4329

    瀏覽量

    62576
收藏 人收藏

    評論

    相關推薦

    API技巧(二)

    (一)不規則窗口 Windows提供的只是標準的矩形窗口,要想建立一個不規則的窗口就需要調用API函數來實現。建立一個不規則的窗口,一般是先用創建區域的API函數建立一個不規則的區域,再用API函數
    的頭像 發表于 05-22 16:49 ?883次閱讀

    鴻蒙元服務API全新呈現-開發更清晰高效

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

    基于onepanel使用kaggle api提交結果和下載數據的步驟

    在onepanel上使用kaggle api提交結果和下載數據
    發表于 04-22 11:00

    高階API構建模型和數據使用

    了TensorFlow2.0Beta版本,同pytorch一樣支持動態執行(TensorFlow2.0默認eager模式,無需啟動會話執行計算圖),同時刪除了雜亂低階API,使用高階API簡單地構建復雜神經網絡模型,本文主要分享用高階A
    發表于 11-04 07:49

    【rtthread學習筆記系列】第篇:線程間同步的概念

    rtthread將互斥量抽象成rt_mutex.3.2 互斥量api3.3 互斥量示例、事件4.1 事件概念rtthread將事件
    發表于 04-22 11:31

    HarmonyOS/OpenHarmony應用開發-HUAWEI DevEco Studio 3.1API9成SDK

    /module.json5”中添加網絡權限。*附件:HarmonyOSOpenHarmony應用開發-HUAWEI DevEco Studio 3.1API9成SDK.docx
    發表于 03-27 10:06

    vc++ api函數 (Windows API大全)

    Windows API大全,本書主要介紹VC++里API函數及其用法-WindowsAPI Daquan, the book introduces VC Lane API function
    發表于 10-14 11:45 ?32次下載

    Web API接口設計經驗總結

    本文是對Web API接口設計的總結,我將從個方面進行分析。
    發表于 01-04 18:03 ?5165次閱讀

    推薦這款好用的API測試工具

    如今,API日漸成為應用程序開發的核心。無可厚非,API測試是成功實現持續集成,并保持DevOps實踐的重要組成部分。數據顯示開發人員對于Web和API服務的測試興趣,在過去幾十年中呈逐漸增長的趨勢。
    的頭像 發表于 11-27 15:35 ?3747次閱讀

    什么是API,不同場景中的API

    當公司構建他們的應用時,他們把它們設計成一組交互的API。最容易理解的例子是Lyft(或者Uber)。你可能想在Lyft應用中做一些事情,它們在幕后都會觸發不同的API
    的頭像 發表于 08-10 11:20 ?2181次閱讀

    API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API

    華為云API Arts是API全生命周期一體化協作平臺,支持開發者一站式高效實現API設計、API開發、API測試、
    的頭像 發表于 03-01 15:45 ?797次閱讀
    <b class='flag-5'>API</b>+DevOps:華為云<b class='flag-5'>API</b> Arts一體化平臺,端到端呵護您的<b class='flag-5'>API</b>

    API Arts 全探秘 | 華為云新一代設計管理平臺,功能強大!

    API設計不一致?API沒地方歸檔?云服務開發項目合作低效?...... ? 華為云為廣大開發者帶來最新API設計管理平臺:API Arts。它
    的頭像 發表于 03-10 18:40 ?487次閱讀

    API技巧(三)

    (一)閃爍程序的標題欄 在某些專業的應用程序中,當程序需要提醒用戶或要引起用戶的注意時,就不停地閃爍程序的標題欄。要實現這個功能,只需要一個Timer組件和使用一個API函數
    的頭像 發表于 05-23 11:10 ?444次閱讀

    api接口怎么使用

    本文就從API接口的維度,淺析API的概念以及為什么要了解它 一、API的概念 API,官方定義為應用程序編程接口。就是把是一些預先定義的接口,用來提供應用程序與開發人員基于某軟件或硬
    的頭像 發表于 05-24 14:44 ?1421次閱讀

    API?Arts?全探秘?|?華為云新一代設計管理平臺,功能強大!

    API 設計不一致?API 沒地方歸檔?云服務開發項目合作低效?......?? 華為云為廣大開發者帶來最新 API 設計管理平臺:API?Arts。它
    的頭像 發表于 09-03 00:36 ?380次閱讀
    <b class='flag-5'>API</b>?Arts?全探秘?|?華為云新一代設計管理平臺,功能強大!
    主站蜘蛛池模板: 久久午夜免费视频| 吃寂寞寡妇的奶| 亚洲中文字幕乱码熟女在线| 神马电影dy888午夜我不卡| 欧美成ee人免费视频| 米奇影视999| 久久这里只精品热在线18| 久cao在线香蕉| 久久国产主播福利在线| 狠很橹快播| 黄图gif揉胸吸奶| 精品久久中文字幕有码| 精品人妻伦一二三区久久AAA片| 好吊射视频988gaocom| 国内九一激情白浆发布| 狠狠色综合7777久夜色撩人| 果冻传媒视频在线播放 免费观看| 韩日午夜在线资源一区二区| 国产专区青青草原亚洲| 精品高清国产a毛片| 久久精品99国产精品日本| 久久亚洲AV无码精品午色夜麻豆| 就去色一色| 女人高潮被爽到呻吟在线观看| 欧美性XXXXX极品娇小| 日本午夜精品理论片A级APP发布| 涩涩爱涩涩片影院| 性欧美videofree中文字幕| 亚洲午夜精品A片久久不卡蜜桃| 在线观看中文字幕国产| 18女下面流水不遮网站免费| BL文库好大粗黑强强肉NP| 调教女M屁股撅虐调教| 国产人妻人伦精品久久无码| 精品亚洲大全| 欧美 亚洲 日韩 在线综合| 色噜噜视频| 亚洲精品久久久久久蜜臀| 稚嫩挤奶h调教h| 菠萝视频高清版在线观看| 国产精品高潮呻吟AV久久96|