文档库 最新最全的文档下载
当前位置:文档库 › C#API基础介绍

C#API基础介绍

C#API基础介绍
C#API基础介绍

C#API 基础介绍

API(Application Programming Interface),我想大家不会陌生,它是我们Windows 编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认API在Windows编程中的重要性。大多数的编程语言都支持API编程,而.Net平台中的MFC (Microsoft Foundation Class Library)构架本身就封装了大部分的API。

做为程序员,我们需要了解API从字面上了解便是编程接口,因此,做为开发者,需要了解的只是API的使用方法。

API根据操作系统、处理器及功能性的不同而拥有很多不同的类型。操作系统特用的API:

每种操作系统都有许多通用的API以及一些特用的API,这些特用的API只能在当前操作系统中执行。

例如:

Windows NT 支持MS-DOS, Win16, Win32, POSIX (Portable Operating System Interface), OS/2 console API; 而Windows 95 支持MS-DOS, Win16 以及Win32 APIs.

Win16 & Win32 API:

Win16是为十六位处理器开发的,早期的操作系统均支持。

Win32则是为32位处理器开发。它可移植性强,被大部分的处理器所支持。

Win32 API在库名后有一个”32”后缀。比如KERNEL32,USER32等。

所有API在下面3个库中得以运行:

Kernel

User

GDI

1. KERNEL

他的库名为KERNEL32.DLL, 他主要用于产生与操作系统之间的关联:

程序加载

上下文选择.

文件输入输出.

内存管理.

例如:GlobalMemoryStatus 函数就包括当前物理内存及虚拟内存的使用信息。

2. USER

这个类库在Win32中名叫USER32.DLL。

它允许管理全部的用户接口,比如:

窗口

菜单

对话框

图标等.,

例如:DrawIcon 函数将在指定的设备关联上“画”出图标或者鼠标。

3. GDI (Graphical Device Interface)

它在Win32中的库名为:GDI32.dll,它是图形输出库。使用GDI Windows“画”出窗口、菜单以及对话框等:

它能创建图形输出.

它也能保存图形文件.

例如:CreateBitmap 函数就能通过指定的长、宽、颜色创建一个位图。

C# 中操作API:

作为初学者来说,在C#中使用API确是一件令人头疼的问题。在使用API之间你必须知道如何在C#中使用结构、类型转换、安全/不安全代码,可控/不可控代码等许多知识。

一切从简单开始,复杂的大家一时不能接受。我们就从实现一个简单的MessageBox 开始。首先打开https://www.wendangku.net/doc/da8065682.html, ,创建一个新的C#工程,并添加一个Button按钮。当这个按钮被点击,则显示一个MessageBox对话框。

即然我们需要引用外来库,所以必须导入一个Namespace:

using System.Runtime.InteropServices;

接着添加下面的代码来声明一个API:

[DllImport("User32.dll")]

public static extern int MessageBox(int h, string m, string c, int type);

此处DllImport属性被用来从不可控代码中调用一方法。”User32.dll”则设定了类库

名。DllImport属性指定dll的位置,这个dll中包括调用的外部方法。Static修饰符则声明一个静态元素,而这个元素属于类型本身而不是上面指定的对象。extern则表示这个方法将在工程外部执行,使用DllImport导入的方法必须使用extern修饰符。

MessageBox 则是函数名,拥有4个参数,其返回值为数字。

大多数的API都能传递并返回值。

添中Click点击事件代码:

protected void button1_Click(object sender, System.EventArgs e)

{

MessageBox (0,"API Message Box","API Demo",0);

}

编译并运行这个程序,当你点击按钮后,你将会看到对话框,这便是你使用的API函数。

使用结构体

操作带有结构体的API比使用简单的API要复杂的多。但是一旦你掌握了API的过程,那个整个API世界将在你的掌握之中。

下面的例子中我们将使用GetSystemInfo API 来获取整个系统的信息。

第一步还是打开C#建立一个Form工程,同样的添中一个Button按钮,在代码窗中输入下面的代码,导入Namespace:

using System.Runtime.InteropServices;

声明一个结构体,它将做为GetSystemInfo的一个参数:

[StructLayout(LayoutKind.Sequential)]

public struct SYSTEM_INFO {

public uint dwOemId;

public uint dwPageSize;

public uint lpMinimumApplicationAddress;

public uint lpMaximumApplicationAddress;

public uint dwActiveProcessorMask;

public uint dwNumberOfProcessors;

public uint dwProcessorType;

public uint dwAllocationGranularity;

public uint dwProcessorLevel;

public uint dwProcessorRevision;

}

声明API函数:

[DllImport("kernel32")]

static extern void GetSystemInfo(ref SYSTEM_INFO pSI);

添加下面的代码至按钮的点击事件处理中:

首先创建一个SYSTEM_INFO结构体,并将其传递给GetSystemInfo函数。protected void button1_Click (object sender, System.EventArgs e) {

try

{

SYSTEM_INFO pSI = new SYSTEM_INFO();

GetSystemInfo(ref pSI);

//

//

//

一旦你接收到返回的结构体,那么就可以以返回的参数来执行操作了。

e.g.listBox1.InsertItem (0,pSI.dwActiveProcessorMask.ToString());:

//

//

//

}

catch(Exception er)

{

MessageBox.Show (er.Message);

}

}

调用API全部代码

//Created By Ajit Mungale

//程序补充飞刀

namespace UsingAPI

{

using System;

using System.Drawing;

using System.Collections;

using https://www.wendangku.net/doc/da8065682.html,ponentModel;

using System.WinForms;

using System.Data;

using System.Runtime.InteropServices;

//Struct 收集系统信息

[StructLayout(LayoutKind.Sequential)]

public struct SYSTEM_INFO {

public uint dwOemId;

public uint dwPageSize;

public uint lpMinimumApplicationAddress;

public uint lpMaximumApplicationAddress;

public uint dwActiveProcessorMask;

public uint dwNumberOfProcessors;

public uint dwProcessorType;

public uint dwAllocationGranularity;

public uint dwProcessorLevel;

public uint dwProcessorRevision;

}

//struct 收集内存情况

[StructLayout(LayoutKind.Sequential)]

public struct MEMORYSTATUS

{

public uint dwLength;

public uint dwMemoryLoad;

public uint dwTotalPhys;

public uint dwAvailPhys;

public uint dwTotalPageFile;

public uint dwAvailPageFile;

public uint dwTotalVirtual;

public uint dwAvailVirtual;

}

public class Form1 : System.WinForms.Form

{

private https://www.wendangku.net/doc/da8065682.html,ponentModel.Container components;

private System.WinForms.MenuItem menuAbout;

private System.WinForms.MainMenu mainMenu1;

private System.WinForms.ListBox listBox1;

private System.WinForms.Button button1;

//获取系统信息

[DllImport("kernel32")]

static extern void GetSystemInfo(ref SYSTEM_INFO pSI);

//获取内存信息

[DllImport("kernel32")]

static extern void GlobalMemoryStatus(ref MEMORYSTATUS buf);

//处理器类型

public const int PROCESSOR_INTEL_386 = 386;

public const int PROCESSOR_INTEL_486 = 486;

public const int PROCESSOR_INTEL_PENTIUM = 586;

public const int PROCESSOR_MIPS_R4000 = 4000;

public const int PROCESSOR_ALPHA_21064 = 21064;

public Form1()

{

InitializeComponent();

}

public override void Dispose()

{

base.Dispose();

components.Dispose();

}

private void InitializeComponent()

{

https://www.wendangku.net/doc/da8065682.html,ponents = new https://www.wendangku.net/doc/da8065682.html,ponentModel.Container ();

this.mainMenu1 = new System.WinForms.MainMenu ();

this.button1 = new System.WinForms.Button ();

this.listBox1 = new System.WinForms.ListBox ();

this.menuAbout = new System.WinForms.MenuItem ();

mainMenu1.MenuItems.All = new System.WinForms.MenuItem[1] {this.menuAbout};

button1.Location = new System.Drawing.Point (148, 168);

button1.Size = new System.Drawing.Size (112, 32);

button1.TabIndex = 0;

button1.Text = "&Get Info";

button1.Click += new System.EventHandler (this.button1_Click);

listBox1.Location = new System.Drawing.Point (20, 8);

listBox1.Size = new System.Drawing.Size (368, 147);

listBox1.TabIndex = 1;

menuAbout.Text = "&About";

menuAbout.Index = 0;

menuAbout.Click += new System.EventHandler (this.menuAbout_Click);

this.Text = "System Information - Using API";

this.MaximizeBox = false;

this.AutoScaleBaseSize = new System.Drawing.Size (5, 13);

this.MinimizeBox = false;

this.Menu = this.mainMenu1;

this.ClientSize = new System.Drawing.Size (408, 213);

this.Controls.Add (this.listBox1);

this.Controls.Add (this.button1);

}

protected void menuAbout_Click (object sender, System.EventArgs e) {

Form abt=new about() ;

abt.ShowDialog();

}

protected void button1_Click (object sender, System.EventArgs e) {

try

{

SYSTEM_INFO pSI = new SYSTEM_INFO();

GetSystemInfo(ref pSI);

string CPUType;

switch (pSI.dwProcessorType)

{

case PROCESSOR_INTEL_386 :

CPUType= "Intel 386";

break;

case PROCESSOR_INTEL_486 :

CPUType = "Intel 486" ;

break;

case PROCESSOR_INTEL_PENTIUM :

CPUType = "Intel Pentium";

break;

case PROCESSOR_MIPS_R4000 :

CPUType = "MIPS R4000";

break;

case PROCESSOR_ALPHA_21064 :

CPUType = "DEC Alpha 21064";

break;

default :

CPUType = "(unknown)";

}

listBox1.InsertItem (0,"Active Processor Mask :"+pSI.dwActiveProcessorMask.ToString());

listBox1.InsertItem (1,"Allocation Granularity :"+pSI.dwAllocationGranularity.ToString());

listBox1.InsertItem (2,"Number Of Processors :"+pSI.dwNumberOfProcessors.ToString());

listBox1.InsertItem (3,"OEM ID :"+pSI.dwOemId.ToString());

listBox1.InsertItem (4,"Page Size:"+pSI.dwPageSize.ToString());

listBox1.InsertItem (5,"Processor Level Value:"+pSI.dwProcessorLevel.ToString());

listBox1.InsertItem (6,"Processor Revision:"+ pSI.dwProcessorRevision.ToString());

listBox1.InsertItem (7,"CPU type:"+CPUType);

listBox1.InsertItem (8,"Maximum Application Address: "+pSI.lpMaximumApplicationAddress.ToString());

listBox1.InsertItem (9,"Minimum Application Address:" +pSI.lpMinimumApplicationAddress.ToString());

/************** 从GlobalMemoryStatus 获取返回值****************/

MEMORYSTATUS memSt = new MEMORYSTATUS ();

GlobalMemoryStatus (ref memSt);

listBox1.InsertItem(10,"Available Page File :"+ (memSt.dwAvailPageFile/1024).ToString ());

listBox1.InsertItem(11,"Available Physical Memory : " + (memSt.dwAvailPhys/1024).ToString());

listBox1.InsertItem(12,"Available Virtual Memory:" + (memSt.dwAvailVirtual/1024).ToString ());

listBox1.InsertItem(13,"Size of structur :" + memSt.dwLength.ToString());

listBox1.InsertItem(14,"Memory In Use :"+ memSt.dwMemoryLoad.ToString());

listBox1.InsertItem(15,"Total Page Size :"+ (memSt.dwTotalPageFile/1024).ToString ());

listBox1.InsertItem(16,"Total Physical Memory :" + (memSt.dwTotalPhys/1024).ToString());

listBox1.InsertItem(17,"Total Virtual Memory :" + (memSt.dwTotalVirtual/1024).ToString ());

}

catch(Exception er)

{

MessageBox.Show (er.Message);

}

}

public static void Main(string[] args)

{

try

{

Application.Run(new Form1());

}

catch(Exception er)

{

MessageBox.Show (er.Message );

}

}

}

}

04 FunCode C 开发常用API

FunCode C开发常用API C语言标准库函数 在实验中,我们需要用到一些C语言标准库函数,主要用于字符串处理,获得随机值,处理数学函数等。 Math.h 函数原型功能与返回值参数说明与应用举例 public static double atan2( double y, double x );返回两点之间的正 切值 x:点的x坐标 y:点的y坐标 float ftan = atan2((fMouseY-fY),(fMouseX-fX)); float sqrt( float x ); 功能:计算平方根 返回值:x的平方根 sqrt(9) = 3 Stdio.h 函数原型功能与返回值参数说明与应用举例 int sprintf( char *buffer, const char *format, [ argument] … ); 把格式化的数据写 入某个字符串缓冲 区。 返回值:字符串长 度(strlen) buffer:char型指针,指向将要写入的 字符串的缓冲区。 format:char型指针,指向的内存里面 存放的将要格式字符串。 [argument]...:可选参数,可以是任何类 型的数据。 sprintf(szUfoName,"ufo_%d_%d", iLoop, iTotalUfoCount ); String.h 函数原型功能与返回值参数说明与应用举例 extern char *strstr( char *str1, char *str2 );找出str2字符串 在str1字符串中 第一次出现的位置 (不包括str2的 串结束符)。 返回值:返回该位 置的指针,如找不 到,返回空指针。 strstr(szName, “feichong”) != NULL 说明szName中包含feichong 可以用来判断前一个字符串包含后面 一个字符串 extern int strcmp( const char *s1, const char * s2 );比较字符串s1和 s2。 当s1

API接口调用说明及示例(第四次修订)

产品/项目名称Product/Project Name 保密级别Confidentiality Level eYou邮件系统机密 产品/项目版本Product/Project Version 最后更新日期Last Update 81032014-09-12 eYou邮件系统V8接口文档 北京亿中邮信息技术有限公司 All Rights Reserved 版权所有侵权必究 仅供内部使用

Revision Record 修订记录

目录 1 API接口简介------------------------------------------------------------------------------------------------------- 3 2 API认证概述------------------------------------------------------------------------------------------------------- 4 认证方式的分类 --------------------------------------------------------------------------------------------- 4认证方式的选择 --------------------------------------------------------------------------------------------- 5认证原理 ------------------------------------------------------------------------------------------------------- 5 3 认证方法详解及示例-------------------------------------------------------------------------------------------- 5 OAuth ----------------------------------------------------------------------------------------------------------- 5 eYouAuth ------------------------------------------------------------------------------------------------------- 5 SSO API的eYouAuth认证方法:----------------------------------------------------------------- 5 Feed API的eYouAuth认证方法: --------------------------------------------------------------- 7 申请会话Token:------------------------------------------------------------------------------------- 8 4 API接口调用示例 ---------------------------------------------------------------------------------------------- 10 Feed API调用----------------------------------------------------------------------------------------- 10 资源概述 ---------------------------------------------------------------------------------------------- 10 以用户的增删改查为例,示例各种Feed API调用步骤--------------------------------- 11 5 附表 ---------------------------------------------------------------------------------------------------------------- 13 1 API接口简介 API指eYou邮件系统所提供的接口。 调用接口流程图:

常用MFC和API函数

常用MFC和API函数 索引 CArchive类:用于二进制保存档案 CBitmap类:封装Windows的图形设备接口(GDI)位图 CBrush类:封装图形设备接口(GDI)中的画刷 CButton类:提供Windows按钮控件的功能 CByteArray类:该类支持动态的字节数组 CCmdUI类:该类仅用于ON_UPDATE_COMMAND_UI处理函数中 CColorDialog类:封装标准颜色对话框 CDC类:定义设备环境对象类 CDialog类:所有对话框(模态或非模态)的基类 CDocument类:提供用户定义的文档类的基本功能 CEdit类:是一个用于编辑控件的类 CFile类:该类是基本文件类的基类 CFileDialog类:封装了打开和保存文件的标准对话框 CFindReplaceDialog类:封装了标准查找/替换对话框 CFont类:封装了Windows图形设备接口(GDI)中的字体对象 CFontDialog类:封装了字体选择对话框 CGdiObject类:GDI绘图工具的基类 CIPAddressCtrl类:提供了IP地址控件的功能 CImageList类:管理大小相同的图标或位图集 CMenu类:封装应用程序菜单栏和弹出式菜单 CPen类:封装了Windows图形设备接口(GDI)中的画笔对象 CPoint类:操作CPoint和POINT结构 CRect类:封装了一个矩形区域及相关操作 CRgn类:封装用于操作窗口中的椭圆、多边形或者不规则区域的GDI区域 CSize类:用于表示相对坐标或位置 CSpinButtonCtrl类:旋转控件Spin的控制类 CStatusBar类:状态栏窗口的基类 CString类:处理字符串 CStringList类:支持CString对象的列表 CWinApp类:派生的程序对象的基类 CWnd类:提供所有窗口类的基本函数 API函数 CArchive类:用于二进制保存档案 CArchive::CArchive 建立一个CArchive对象 CArchive(CFile* pFile,UINT nMode,int nBufSize=4096,void* lpBuf=NULL); 参数:pFile 指向CFile对象的指针,这个CFile对象是数据的最终源或目的;nMode是标志,取值为CArchive::load时,从文档中加载数据(要求CFile读许可),取值为CArchive::store时,将数据存入文档(要求CFile写许可);nBufSize 指定内部文件缓冲区的大小(按字节计); lpBuf 指向大小为nBufSize的缓冲区,若未指定,则从局部堆中分配一缓冲区,

常用API函数参数

常用API函数参数5 ImmIsIME 函数功能: 判断指定的句柄是否为IME; 函数原型: BOOL ImmIsIME( HKL hKL ); 参数hKL: 待检查的键盘布局句柄; 返回值: 函数调用成功返回1,失败返回0. 速查信息: Windows NT: 要求4.0或更高版本 Windows: 要求Windows 95 或更高. Windows CE:不支持. Header: 声明在imm.h. Import Library: imm32.lib. Windows XP没有自带五笔型输入法,这对五笔型用户而言无疑是个大大的遗憾。网上的五笔型输入法虽然种类很多,也不乏优秀的版本,但一方面有些版本是共享软件需要注册,另一方面也许很多五笔型输入法的老用户最习惯用的还是老牌的“王码五笔型输入法86/98版”。 微软的Office XP软件中包含了这个老牌的五笔型输入法,但如果用户并不使用Office XP中的任何组件,仅仅是为了使用“王码五笔型输入法”而运行Office XP安装程序,就显的有些小题大做了,更不用说是某些零时在外面用公用电脑而又想用五笔型输入法的情况。于是网上出现了很多简化的安装方法,大体上可以分为三个步骤: 拷贝输入法文件(从Of还是9x/ME。示例代码fice XP光盘中或已经安装了“王码五笔型输入法”的电脑中提取) 增加注册表项 重启后通过控制面板添加输入法

整个过程中拷贝输入法文件和增加注册表项可以用批处理和导入注册表文件来简化操作,但必须重启计算机才能在控制面板里添加输入法,这同样让使用者觉得比较烦琐。那么作为一个编程爱好者能不能通过写个小程序来实现在不重新启动计算机的情况下全自动的安装“王码五笔型输入法”呢(也就是即装即用)?答案是肯定的!因为微软的Office XP 安装程序做到了,这就表示微软肯定留有一个专门用来安装输入法的接口,一般来说应该是一系列API函数。 经过一番摸索,笔者在MSDN里找到了这个可以用来安装输入法的API:ImmInstallIME()。Ok,现在我们就开始利用这个API来实现自己的“王码五笔型输入法”全自动安装程序。 一、准备素材 我们先试着从Office XP光盘中提取“王码五笔型输入法”的输入法文件。通过Windows 的查找功能在Office XP的第一张安装盘中查找与“WINWB”相关的文件,在OFFICE1.CAB 中找到了一下14个文件:WINWB86.CHM.*、https://www.wendangku.net/doc/da8065682.html,T.*、WINWB86.HLP.*、WINWB86A.IME.*、WINWB86A.MB.*、WINWB86W.IME.*、WINWB86W.MB.*、WINWB98.CHM.*、https://www.wendangku.net/doc/da8065682.html,T.*、WINWB98.HLP.*、WINWB98A.IME.*、WINWB98A.MB.*、WINWB98W.IME.*、WINWB98W.MB.*,其中*是很长的一串由字母、数字和下滑线组成的序列(个人认为应该是微软为了校验文件内容的正确性而加上的内容为该文件效验码的后缀吧)。去掉这个长长的后缀,可以看到5 种类型的文件。很明显,*.CHM、*.CNT和*.HLP是五笔型输入法的帮助文件,*.MB是码表文件,而*.IME是主要的输入法文件。其中*.IME和*.MB有文件名部分以A结尾和以W结尾两个版本,经过笔者试验证实了它们分别是ANSI和UNICODE两种版本的输入法文件。文件名部分以A结尾的文件适用于Windows 9x,以W结尾的文件适用于NT系列Windows系统。 提取了输入法文件后必须让安装程序针对不同版本的操作系统将它们拷贝到正确的目录,以便调用API来进行输入法安装。笔者分别在安装了Office XP中自带的“王码五笔型输入法”的Windows 98SE和Windows XP操作系统中查找以上文件,发现帮助文件都存放在WINDOWSHELP目录中(这里假设Windows系统都安装在WINDOWS目录)。而主要的输入法文件(*.IME)和码表文件(*.MB)在Windows 9x下存放于WINDOWSSYSTEM目录中,在NT系列Windows系统中存放于WINDOWSSYSTEM32目录中。 二、相关API函数 素材的准备工作已经完成,现在我们来看一下代码编写过程中需要用到的4个主要的API函数。 2.1 GetVersion 函数原型:

API接口调用要求

1.客户登录验证和信息获取:VerifyCustomerValid 输入:客户用户名(member_name) 、密码(member_password)、邮箱(comm_email)、手机(mobile_phonel),返回:1-成功;0-失败,信息内容:客户的种子、名称、种类、地址、电话、手机、邮箱、积分等相关自定义启用的息。 例子程序: http://localhost:8888/crm/apidemo/customer/VerifyCustomerValid.htm is_success 1 成功0 失败!返回那些字段请参考用户自定义界面。 客户具体字段信息请参考客户附录 2.客户注册登记:RegisterCustomer 输入:客户相关字段信息、客户类型(公共客户:默认、潜在客户、渠道客户。。。。。),结果:将客户的相关注册信息在CRM中做登记,并返回:1-成功,0-失败,失败原因例子程序:http:// localhost:8888/crm/apidemo/customer/RegisterCustomer.htm 客户具体字段信息请参考客户附录 3.客户信息唯一性检查:VerifyCustomerUnique 输入:可按客户用户名(member_name)、邮箱(comm_email)、手机(mobile_phonel) 输出:如果已存在,返回:1;如果不存在,返回:0:例子程序: http://localhost:8888/crm/apidemo/customer/VerifyCustomerUnique.htm is_success 存在1 , 不存在0! 客户具体字段信息请参考客户附录 4.客户下单:SubmitOrder 输入:订单的明细(产品名称、数量、单价、金额等),订单金额、客户名称、及订单其它字段; 例子程序:http:// localhost:8888/crm/ apidemo / order/SubmitOrder.htm 1成功,-1 找不到客户,-2产品信息出错,找不到产品。-3 新增订单时失败!(可能是某些字段过长或者查看CRM系统日志) 5.订单查询:InquireOrder 输入:客户编号或客户种子、客户名称,订单时间范围,订单主题,订单号 输出:客户订单列表 例子程序:http://localhost:8888/crm/apidemo/order/InqueryOrder.htm 6.订单明细查询:InquireOrderDetail 输入:订单种子、订单编号 输出:订单产品明细列表 例子程序:http://localhost:8888/crm/apidemo/order/InqueryOrderDetail.htm 7.产品列表查询:InquireProduct

API函数手册

POSTEK PPLⅠAPI函数手册 G Series 条码标签打印机 Version 2.00 深圳市博思得通信发展有限公司 二○○四年

API函数库文件说明 名称:CDFPSK.dll 中文版本编号:1.X.X.X 英文版本编号:2.X.X.X 版权所有:?2004深圳市博思得通信发展有限公司。保留所有权利。 用途 本API函数库为深圳市博思得通信发展有限公司条码标签打印机的用户提供一组命令,为他们编写基于Windows9X,NT,2000,XP等操作系统的应用程序提供便利。 本API函数库仅支持本公司产品。 缩略语对照 PPLⅠ:深圳市博思得通信发展有限公司的第一套打印机编程语言(Printer Porgram Language Ⅰ)。 API:应用程序编程接口(Application Program Interface)。 Dots:像素(pixel)是一种计算机科学技术尺寸单位,原指电视图像成像的最小单位,在打印机领域表示打印机的最小打印成像单位:1dot等于一英寸除以打印机的最大分辨率。 - 对于203DPI的打印机来说, 1dot = 25.4mm/203 = 0.125mm(1dot = 1000 / 203 = 5mil); - 对于300DPI的打印机来说, 1dot = 25.4mm/300 = 0.085mm(1dot = 1000 / 300 = 3mil)。 TrueType Font:是基于Windows操作系统使用,可装卸的字体。 - 已经安装的TrueType Font,都可以被本函数使用。 使用前须知 字符串 * 字符串以双引号(“)作为起始和结束标记; *

基于C#的免费新闻api接口调用代码实例

基于C#的免费新闻api接口调用代码实例 代码描述:基于C#的免费新闻api接口调用代码实例 代码平台:聚合数据 using System; using System.Collections.Generic; using System.Linq; using System.Text; using https://www.wendangku.net/doc/da8065682.html,; using System.IO; using https://www.wendangku.net/doc/da8065682.html,; using System.Diagnostics; using System.Web; //---------------------------------- // 新闻调用示例代码-聚合数据 // 在线接口文档:https://www.wendangku.net/doc/da8065682.html,/docs/138 // 代码中JsonObject类下载地址:https://www.wendangku.net/doc/da8065682.html,/download/gcm32060 21155665/7458439 //---------------------------------- namespace ConsoleAPI { class Program { static void Main(string[] args) { string appkey = "*******************"; //配置您申请的appkey //1.新闻检索 string url1 = "https://www.wendangku.net/doc/da8065682.html,/onebox/news/query"; var parameters1 = new Dictionary(); parameters1.Add("q", ""); //需要检索的关键字,请UTF8 URLENCOD E parameters1.Add("key", appkey);//你申请的key

API函数大全

? 1. API之网络函数 ? ?WNetAddConnection 创建同一个网络资源的永久性连接 ? ?WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC (统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 ? ? 2. API之消息函数 ?BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条消息投递给应用程序 RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 ? 3. API之文件处理函数 ?CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件 DeviceIoControl 对设备执行指定的操作

API接口文档

API接口文档 最后更新日期:2013-05-16 一、添加域名接口 (6) 1、接口调用地址 (6) 2、传入参数 (6) 3、输出数据 (6) 二、删除域名接口 (7) 1、接口调用地址 (7) 2、传入参数 (7) 3、输出数据 (7) 三、添加用户接口 (8) 1、接口调用地址 (8) 2、传入参数 (8) 3、输出数据 (8) 四、获取用户信息接口 (9) 1、接口调用地址 (9) 2、传入参数 (9) 3、输出数据 (9) 五、搜索用户接口 (10) 1、接口调用地址 (10) 2、传入参数 (10) 3、输出数据 (10) 六、修改用户接口 (11) 1、接口调用地址 (11) 2、传入参数 (11) 3、输出数据 (12) 七、删除用户接口 (13) 1、接口调用地址 (13) 2、传入参数 (13) 3、输出数据 (13) 八、获取邮箱别名接口 (14) 1、接口调用地址 (14) 2、传入参数 (14) 3、输出数据 (14) 九、获取部门列表接口 (15) 1、接口调用地址 (15) 2、传入参数 (15) 3、输出数据 (15) 十、添加部门接口 (17) 1、接口调用地址 (17)

3、输出数据 (17) 十一、修改部门接口 (18) 1、接口调用地址 (18) 2、传入参数 (18) 3、输出数据 (18) 十二、删除部门接口 (19) 1、接口调用地址 (19) 2、传入参数 (19) 3、输出数据 (19) 十三、获取部门成员接口 (20) 1、接口调用地址 (20) 2、传入参数 (20) 3、输出数据 (20) 十四、添加部门成员接口 (21) 1、接口调用地址 (21) 2、传入参数 (21) 3、输出数据 (21) 十五、删除部门成员接口 (22) 1、接口调用地址 (22) 2、传入参数 (22) 3、输出数据 (22) 十六、添加别名接口 (23) 1、接口调用地址 (23) 2、传入参数 (23) 3、输出数据 (23) 十七、修改别名接口 (24) 1、接口调用地址 (24) 2、传入参数 (24) 3、输出数据 (24) 十八、删除别名接口 (25) 1、接口调用地址 (25) 2、传入参数 (25) 3、输出数据 (25) 十九、获取POP接收邮件接口 (26) 1、接口调用地址 (26) 2、传入参数 (26) 3、输出数据 (26) 二十、添加POP接收邮件接口 (27) 1、接口调用地址 (27) 2、传入参数 (27) 3、输出数据 (27) 二十一、修改POP接收邮件接口 (28) 1、接口调用地址 (28)

api接口文档

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API除了有应用“应用程序接口”的意思外,还特指API的说明文档,也称为帮助文档。 API:应用程序接口(API:Application Program Interface) 应用程序接口(是一组定义、程序及协议的集合,通过API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过调用API 函数对应用程序进行开发,可以减轻编程任务。API 同时也是一种中间件,为各种不同平台提供数据共享。 根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将API 分为四种类型: 远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。 标准查询语言(SQL):是标准的访问数据的查询语言,通过数据库实现应用程序间的数据共享。 文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。

信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。 当前应用于API 的标准包括ANSI 标准SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API 可以应用于所有计算机平台和操作系统。这些API 以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架)。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种API 只处理一种信息格式,所以该情形下的信息交付API 只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付API 类型是比较理想的选择。 API 与图形用户接口(GUI)或命令接口有着鲜明的差别:API 接口属于一种操作系统或程序接口,而后两者都属于直接用户接口。 有时公司会将API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。

WebApi系列~通过HttpClient来调用WebApi接口

回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api的方法,基于api项目的特殊性,它需要有一个完全安全的环境,所以,你的api控制器看起来有点特别,只有5个方法,而且都是标准的http方法,我觉得这种设计很不错,很清晰,而且为了实现安全性,它不支持使用传统的表单数据,取而代之的是FromBody参数,它指拿HttpRequestMessage里参数,而不是所有的Request数据,这是基于安全方面的考虑。一Api接口参数的标准性 Get方式,可以有多个重载,有多个参数 POST方式,只能有一个参数,并且用[FromBody]约束,如果有多个参数,需要以对象的方式进行传递 Put方式,只能有两个参数,其中一个是通过Request.QueryString方式进行传递的,作为要更新对象的主键,别一个是[FromBody]字段,也是一个字段,如果多个字段需要把它封装成对象 标准接口如图 二调用方,参数的标准性 在客户端进行接口调用时,我们以网页端为例,看一下网页端进行ajax跨域请求的代码

Get方式 $.ajax({ url: "http://localhost:52824/api/register", type: "GET", success: function (data) { console.log("json:" + data); } }); Post方式 $.ajax({ url: "http://localhost:52824/api/register", type: "POST", data: { '': '1' },//这里键名称必须为空,多个参数请传对象,api端参数名必须为value success: function (data) { console.log("post:" + data); } }); 三在控制台中实现Get方式获取接口数据(只有异步实现) ///

/// HttpClient实现Get请求 /// static async void dooGet() { string url = "http://localhost:52824/api/register?id=1&leval=5"; //创建HttpClient(注意传入HttpClientHandler) var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }; using (var http = new HttpClient(handler)) { //await异步等待回应 var response = await http.GetAsync(url);

常用API

转:OpenGL API 简介 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。它采用C语言风格,提供大量的函数来进行图形的处理和显示。OpenGL库函数的命名方式非常有规律。所有 OpenGL函数采用了以下格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有gl、glu、aux、glut、wgl、glx、agl等等,分别表示该函数属于OpenGL那个开发库,从函数名后面中还可以看出需要多少个参数以及参数的类型。I代表int型,f代表float型,d代表double型,u代表无符号整型。例如glVertex3fv()表示了该函数属于gl 库,参数是三个float型参数指针。我们用glVertex*() 来表示这一类函数。 OpenGL函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glx、agl、wgl)和扩展函数库等。从图可以看出,gl是核心,glu是对gl的部分封装。 glx、agl、wgl 是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。下面逐一对这些库进行详细介绍。 1.OpenGL核心库 核心库包含有115个函数,函数名的前缀为gl。这部分函数用于常规的、核心的图形处理。此函数由gl.dll来负责解释执行。由于许多函数可以接收不同数以下几类。据类型的参数,因此派生出来的函数原形多达300多个。核心库中的函数主要可以分为以下几类函数: ?绘制基本几何图元的函数:glBegain()、glEnd()、glNormal*()、glVertex*(); ?矩阵操作、几何变换和投影变换的函数:如矩阵入栈函数glPushMatrix(),矩阵出栈函数glPopMatrix(),装载矩阵函数glLoadMatrix(),矩阵相乘函数glMultMatrix(),当前矩阵函数glMatrixMode()和矩阵标准化函数glLoadIdentity(),几何变换函数glTranslate*()、glRotate*()和glScale*(),投影变换函数glOrtho()、glFrustum()和视口变换函数glViewport();?颜色、光照和材质的函数:如设置颜色模式函数glColor*()、glIndex*(),设置光照效果的函数glLight*() 、glLightModel*()和设置材质效果函数glMaterial(); ?显示列表函数:主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、glEndList()、glGenLists()、glCallList()和glDeleteLists(); ?纹理映射函数:主要有一维纹理函数glTexImage1D()、二维纹理函数glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、 glTexEnv*()和glTetCoord*(); ?特殊效果函数:融合函数glBlendFunc()、反走样函数glHint()和雾化效果glFog*();?光栅化、象素操作函数:如象素位置glRasterPos*()、线型宽度glLineWidth()、多边形绘制模式glPolygonMode(),读取象素glReadPixel()、复制象素glCopyPixel(); ?选择与反馈函数:主要有渲染模式glRenderMode()、选择缓冲区glSelectBuffer()和反馈缓冲区glFeedbackBuffer(); ?曲线与曲面的绘制函数:生成曲线或曲面的函数glMap*()、glMapGrid*(),求值器的函数glEvalCoord*() glEvalMesh*(); ?状态设置与查询函数:glGet*()、glEnable()、glGetError()。 2.OpenGL实用库The OpenGL Utility Library (GLU) 包含有43个函数,函数名的前缀为glu。OpenGL提供了强大的但是为数不多的绘图命令,所有较复杂的绘图都必须从点、线、面开始。Glu 为了减轻繁重的编程工作,封装了OpenGL函数,Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现

Place API http接口使用说明

PlaceAPI http 接口使用说明 1.1 Place API http 接口简介 Place API http 接口(以下简称http 接口)是一个供程序员调用的、http 形式的地图检索服务接口,且只向百度合作伙伴开放。 目前http 接口提供的功能包括:矩形区域关键字检索、周边区域关键字检索(也称:圆形区域检索)和城市内关键字检索。http 接口主要服务那些非网页程序的调用,例如:C# 、C++、Java 等开发的应用程序,这些开发语言都能发送http 请求且能接收返回数据。http 接口可以返回xml 和json 两种不同形式的的地理数据。 目前提供的功能不是很多、以后随着用户需求的收集和总结,会不断完善http 接口。 1.2 Place API http 接口使用说明 http 接口使用分为3个步骤:第一步,申请注册key ;第二步,拼写http 请求发送的url ,url 中附带上第一步申请的key 值;第三步,接收http 请求返回的数据(json 或xml 格式),如下图示意: 1.2.1申请注册key 说明 用户打开https://www.wendangku.net/doc/da8065682.html,/wiki/static/mapws/placeapikey/页面,在此页面中申请注册key 值。该key 主要目的是判断用户请求的url 是否合法,且限制用户1天发送的http 请求数不能超过1000次。注册页面如下图:

填写好信息后,点击生成API密钥按钮就获取到所需的key值了,申请的key值和应用程序名称相关联,既相同的应用程序名称返回的key值是一样的。 特别注意:申请key之前会提示用户首先注册百度账号,只有拥有了百度账号,才能顺利的申请key值。 1.2.2 http接口请求参数说明 http接口请求参数主要包括:检索关键字、检索区域(3种选择形式)、输出结果类型(xml或json),如下表:

API函数大全

waveInAddBuffer 向波形输入设备添加一个输入缓冲区 WaveInClose 关闭指定的波形输入设置 waveInGetDevCaps 查询指定的波形输入设备以确定其性能 waveInGetErrorText 检取由指定的错误代码标识的文本说明 waveInGetID 获取指定的波形输入设备的标识符 waveInGetNumDevs 返回系统中存在的波形输入设备的数量 waveInGetPosition 检取指定波形输入设备的当前位置 waveInMessage 发送一条消息给波形输入设备的驱动器 waveInOpen 为录音而打开一个波形输入设备 waveInPrepareHeader 为波形输入准备一个输入缓冲区 waveInReset 停止给定的波形输入设备的输入,且将当前位置清零 waveInStart 启动在指定的波形输入设备的输入 waveInStop 停止在指定的波形输入设备上的输入 waveInUnprepareHeader 清除由waveInPrepareHeader函数实现的准备 waveOutBreakLoop 中断给定的波形输出设备上一个循环,并允许播放驱动器列表中的下一个块waveOutClose 关闭指定的波形输出设备 waveOutGetDevCaps 查询一个指定的波形输出设备以确定其性能 waveOutGetErrorText 检取由指定的错误代码标识的文本说明 waveOutGetID 检取指定的波形输出设备的标识符 waveOutGetNumDevs 检取系统中存在的波形输出设备的数量 waveOutGetPitch 查询一个波形输出设备的当前音调设置 waveOutGetPlaybackRate 查询一个波形输出设备当前播放的速度 waveOutGetPosition 检取指定波形输出设备的当前播放位置 waveOutGetV olume 查询指定波形输出设备的当前音量设置 waveOutMessage 发送一条消息给一个波形输出设备的驱动器 waveOutOpen 为播放打开一个波形输出设备 waveOutPause 暂停指定波形输出设备上的播放 waveOutPrepareHeader 为播放准备一个波形缓冲区 waveOutRestart 重新启动一个被暂停的波形输出设备 waveOutSetPitch 设置一个波形输出设备的音调 waveOutSetPlaybackRate 设置指定波形输出设备的速度 waveOutSetV olume 设置指定的波形输出设备的音量 waveOutUnprepareHeader 清除由waveOutPrepareHeader函数实现的准备 waveOutWrite 向指定的波形输出设备发送一个数据块

API函数参考手册

《API函数参考手册》 收集:小红帽 https://www.wendangku.net/doc/da8065682.html, Copyright by vortex 1999.1 ================================================================================= ============== Api函数名函数说明WIN16可用WIN95可用WINNT可用 --------------------------------------------------------------------------------------------------------------- AbortDoc 终止一项打印作业是是是 AbortPath 终止或取消DC中的一切路径否是是 AbortPrinter 删除打印机缓冲文件否是是 AbortSystemShutdowna 停止系统工作否是是 AccessCheck 检验客户访问权限否是是 AccessCheckAndAuditAlarm 检验访问,产生声音或警报否是是 ActivateKeyboardLayout 激活一个新的键盘设备否是是 AddAccessAllowedAce 将ACCESS_ALLOWED_ACE加入ACL 否是是 AddAccessDeniedAce 将ACCESS_DENIED_ACE加入ACL 否是是 AddAce 将ACE加入一个已存在的ACL 否是是 AddAtom 将一个字符串加入本地原子表是是是 AddAuditAccessAce 将SYSTEM_AUDIT_ACE加入ACL 否是是 AddFontResource 将一种字体加入字体表是是是 AddForm 加入一个打印机窗体否是是 AddJob 启动一个打印作业否是是 AddMonitor 加入一个打印机管理器否是是 AddPort 加入一个打印机端口否是是 AddPrintProcessor 将打印处理器复制到打印机服务器中否是是 AddPrintProvidor 加入一个打印机支持器否是是 AddPrinter 在打印机服务器上建立一个打印机否是是 AddPrinterConnection 为当前用户建立与打印机的联系否是是 AddPrinterDriver 将打印机驱动程序复制到打印机服务器中否是是 AdjustTokenGroups 使能/取消令牌中的群否是是 AdjustTokenPrivileges 使能/取消令牌特权否是是 AdjustWindowRect 计算所需窗口矩形的大小是是是 AdjustWindowRectEx 计算所需窗口矩形的大小是是是 AdvancedDocumentProperties 进行打印机高级设置否是是 AllocConsole 为当前进程建立控制台否是是 AllocateAndInitializeSid 分配和初始化SID 否是是 AllocateLocallyUniqueId 分配LUID 否是是 AngleArc 按指定角度画弧否是是 AnimatePalette 替换逻辑调色板中的项目是是是 AnyPopup 标识弹出式窗口是否存在是是是 AppendMenu 在菜单中加入新的项目是是是

相关文档