女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

api技巧集(四)

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

超級鏈接效果

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

首先新建一個工程,在窗體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函數(shù)可以將一幅位圖從一個設備場景拷貝到另一個設備場景,這個函數(shù)經常用在抓圖程序和游戲編程方面,也可以用來做基于桌面的屏幕保護程序。下面讓我們用BitBlt函數(shù)來做一個虛假桌面的程序:

首先,添加一個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函數(shù) GetDiskFreeSpace。

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

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

磁盤上剩余空間(字節(jié)) = 簇的扇區(qū)數(shù) * 扇區(qū)的字節(jié)數(shù) * 剩余簇數(shù)

磁盤上總空間(字節(jié)) = 簇的扇區(qū)數(shù) * 扇區(qū)的字節(jié)數(shù) * 總簇數(shù)

下面就是取得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函數(shù)ExtractIcon可以提取出在程序文件中的圖標,它的頭文件是shellapi.h,原型為:

HICON ExtractIcon

(

HINSTANCE hInst, //實例句柄

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

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

);

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

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

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

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

例子:

TIcon *Icon = new TIcon();

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

int TotalIcon;

//得到文件SHELL32.DLL的總圖標數(shù)

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屬性修改一個,最后輸入程序代碼,運行程序,一個提取圖標的程序就出來了,你以后也就不會為沒有圖標資源可用而發(fā)愁了。

程序清單(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="可執(zhí)行文件(*.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函數(shù)GetDriveType能判斷一個驅動器的類型,該函數(shù)返回一個int型的值,當返回值為2時,是軟盤;為3時,是硬盤;為4時,是網絡映射盤;為5時,是光驅;為6時,是 RAM 磁盤;為其它值時,是非法的盤符。這個API函數(shù)包含在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語句后的數(shù)值也可以用注釋后的常數(shù)替換。如2可用常數(shù) DRIVE_REMOVABLE 來替換。

審核編輯黃宇

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

    關注

    2

    文章

    1558

    瀏覽量

    63448
  • 函數(shù)
    +關注

    關注

    3

    文章

    4367

    瀏覽量

    64050
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    API技巧(二)

    (一)不規(guī)則窗口 Windows提供的只是標準的矩形窗口,要想建立一個不規(guī)則的窗口就需要調用API函數(shù)來實現(xiàn)。建立一個不規(guī)則的窗口,一般是先用創(chuàng)建區(qū)域的API函數(shù)建立一個不規(guī)則的區(qū)域,再用API函數(shù)
    的頭像 發(fā)表于 05-22 16:49 ?1082次閱讀

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

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

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

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

    高階API構建模型和數(shù)據使用

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

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

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

    HarmonyOS/OpenHarmony應用開發(fā)-HUAWEI DevEco Studio 3.1API9成SDK

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

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

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

    Web API接口設計經驗總結

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

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

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

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

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

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

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

    API技巧(三)

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

    api接口怎么使用

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

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

    API 設計不一致?API 沒地方歸檔?云服務開發(fā)項目合作低效?......?? 華為云為廣大開發(fā)者帶來最新 API 設計管理平臺:API?Arts。它
    的頭像 發(fā)表于 09-03 00:36 ?519次閱讀
    <b class='flag-5'>API</b>?Arts?全探秘?|?華為云新一代設計管理平臺,功能強大!

    AN84-線性技術雜志電路,第一卷第四集

    電子發(fā)燒友網站提供《AN84-線性技術雜志電路,第一卷第四集.pdf》資料免費下載
    發(fā)表于 01-09 14:21 ?0次下載
    AN84-線性技術雜志電路<b class='flag-5'>集</b>,第一卷第<b class='flag-5'>四集</b>