API函数

API函数
API函数

一、p B中控制由Run运行的程序

在PB程序设计中,可以用Run()来运行一些程序。比如用户按了F1,就运行一个chm 文件。但Run程序无法与PB主程序协调工作,若用户按了多次F1,就会启动Run程序的多个实例,主程序退出时,Run程序依然运行。可以用如下函数来使它们协调工作:Function Ulong FindWindowA(Ulong classname, String windowname)

Library ″user32.dll″

Function Long SetParent(L ong childwin,Long parentwin) Library ″user32.dll″

⑴使Run程序只运行一个实例

handle=FindWindowA(nul,wtitle)

//查找Run程序是否已经运行,wtitle为Run程序的标题

IF handle〉0 Then Return

//若已经在运行就返回

Run(″C:\Program Files\Joint\Joint.chm″)

//否则运行Run程序

⑵PB主程序退出时,Run程序也关闭

handle=FindWindowA(nul,wtitle)

SetParent(handle,Handle(w—main))

//使Run程序窗口成为PB主程序的子窗口

一、PB提供了一个运行外部程序的函数Run,其调用格式为Run(String{,WindowState})。其中String 为要运行的应用程序文件名及其所需参数。WindowState为应用程序运行的窗口的状态,例如Run(“D:\Fli\ Aaplay.exe WaveLogo.fli”,Maximized)。但是如果我们想通过文件对话框选择所需运行的程序,例如我们想通过对话框来选取一个.FLI文件,然后用Aaplay.exe来播放它,这时,由于Run函数只能运行指定的程序,因而用上述方式就无法实现。不过,我们可以用下述方法来实现:

首先定义一个字符串型变量Getfile,用它来表示通过文件对话框打开的文件名,然后再定义一个字符串变量Isthisfile,再令Isthisfile=“Aaplay.exe”+Getfile。最后用函数Run(Isthisfile,Maximized)即可。

上述方法的原理是由于Run函数内不能传递参数,所以只能运行指定的程序,因而不能直接运行通过对话框选择的程序,在上述方法中,我们通过字符串型变量的赋值,使通过对话框选取的文件名成为指定的文件名,从而可以调用Run函数来运行它。

API函数和PB编程

2002-07-19 14:22作者:出处:Yesky责任编辑:

1. 如何使PB窗口总在最上层

通过SetWindowPos函数吧窗口的显示层次修改为HWND_TOPMOST,就可以使指定窗

口永远不会被其他窗口覆盖,该函数声明为:

Function Long SetWindowPos(Long hwnd, Long ord, Long x, Long y, Long dx, Long dy, Long uflag) Library “user32.dll”

参数1为要顶层显示的窗口句柄,参数2指定显示的层次,参数7为附加选项,其余参数指定窗口位置和大小,均可忽略。在窗口的Open或Activate事件中加入如下函数调用:

SetWindowPos(Handle(This),-1,0,0,0,0,3)

参数2取-1表示在最顶层显示窗口,取1表示在最底层显示;最后一个参数若取1,表示窗口大小保持不变,取2表示保持位置不变,因此,取3(=1+2)表示大小和位置均保持不变,取0表示将窗口的大小和位置改变为指定值。

2. 在PB中如何获得光盘盘符

通过GetDriveType函数可以获取驱动器(如:软驱、硬盘、光驱、网络映射驱动器等)的信息,该函数声明为:

Function Unit GetDriveTypeA(String drive) Library “kernel32.dll”

参数为一个盘符(如“C:”),返回值:1表示未知,2表示软驱,3表示本地硬盘,4表示网络驱动器,5表示光驱。因此如下代码可以获得光盘的盘符:

For I=Asc(‘D’) to Asc(‘Z’)

//列举所有可能的CDROM的驱动器

If GetDriveTypeA(Char(i)+”:”) = 5 Then

//若找到CDROM

Messagebox(“CDROM”,Char(i)+”:”)

//显示光盘盘符

Exit //退出循环

End if

Next

3. 在PB中如何获取目录信息

(1)获取当前目录。通过GetCurrentDirectory函数可以获取当前目录,该函数声明为:

Function Ulong GetCurrentDirectory(Ulong buflen,ref String dir)

Library “kernel32.dll”

参数2为接受当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指定字符缓冲区的长度。调用过程为:

String curdir

Curdir=Space(256)

//为字符缓冲区开辟内存空间

GetCurrentDirectory(256,curdir)

MessageBox(“当前路径”,curdir)

(2)获取Windows及系统目录。要用到GetWindowsDirectory和GetSystemDirec

tory两个函数,须作如下声明:

Function Uint GetWindowsDirectoryA(ref String dir,Uint buflen)

Library kernel32.dll”

Function Uint GetSystemDirectoryA(ref String dir,Uint buflen)

Library "kernel32.dll”

4. 在PB中如何注销当前用户、关闭计算机、重启计算机

通过ExitWindowsEx函数可实现这三个功能,首先作如下声明:

Function Long E xitWindowsEx(Long uflag, Long nouse) Library "user32.dll”参数2保留不用,可取0;参数1取0可以注销当前用户,取1可以关闭计算机,取2可以重启计算机,其值再加4表示强制结束“未响应”的进程。

5. 控制由Run运行的程序(简称Run程序)

在PB程序设计中,可以用Run()来运行一些程序。但Run程序无法与PB主程序协调工作,若用户多次调用,就会启动Run程序的多个实例,主程序退出时,Run程序依然运行。可以用如下函数使它们协调工作:

Function Ulong FindWindowA(Ulong classname, String windowname)

Library "user32.dll”

Function Long SetParent(Long childwin, Long parentwin) Library "use r32.dll” (1)使Run程序只运行一个实例

handle = FindWindowsA(nul,wtitle)

//查找Run程序是否已经运行,wtitle为Run程序的窗口标题

If handle > 0 Then Return

//若已经在运行就返回

Run(“c:\luhan.chm”)

//否则运行Run程序

(2) PB主程序退出时,Run程序也关闭

Handle = FindWindowA(nul,wtitle)

SetParent(handle,Handle(w_main))

//使Run程序窗口成为PB主程序的子窗口

6. 映射网络驱动器

若要在程序中把远程主机的资源映射到本地驱动器,可以用如下函数:

Function Long WNetAddConnectionA(String path, String pwd, String drv) Library “mpr.dll”

如下代码可以把远程主机Alexander上的共享文件夹My Documents映射到本地的J盘:

WnetAddConnectionA(“\\ Alexander\ My Documents”,””,”J:”) //参数2为访问口令它的作用相当于在DOS提示符下执行:Net Use J: \\ Alexander\ My Documents

7. 显示或隐藏Windows的任务栏

要显示或隐藏任务栏,首先要得到它的窗口句柄。任务栏是一个特殊的窗口,它的窗口类为:Shell_TrayWnd,没有标题,故只能用FindWindowEx函数来取得它的句柄:

Function Long FindWindowEx(Long ph, Long ch, ref String cn, ref

String wn) Library “user32.dll”

Function Long ShowWindow(Long hWnd, Long nCmdShow) Library “user32.dll”

用ShowWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示:

handle = FindWindowEx(0,0,” Shell_TrayWnd”,wn) //wn为空串

ShowWindow(handle,0) //隐藏任务栏

8. 如何将长文件名转换为短文件名

通过GetShortPathName函数可以把上文件名转换为8.3格式,其声明为:

Function Long GetShortPathNameA(String lf, ref String sf, Long

buflen)

Library “kernel32.dll”

参数1为长文件名,参数2为保存短文件名的缓冲区,参数3为缓冲区长度。例如:

GetShortPathNameA(“C:\My Document\Powerbuilder编程实践.Doc”,sf,256) \

//sf = Spcace(256)

9. 如何在PB中实现延时

延时函数很有用,PB虽然没有提供,但可以通过Wind32的Sleep函数来扩展:Function Long Sleep(Long ms) Library “kernel32.dll”

调用:Sleep(1000) //延时1秒

10. 如何在PB中播放音乐

PB没有提供任何多媒体函数,要播放音乐只能通过Win32 API的PlaySound来实现:

Function Long PlaySound(String Filename, Int Mod, Int Flags) Library “ winmm.dll”

参数1为wav文件名,参数2必须取0,参数3取1表示后台播放,取8表示循环播放,因此取9(=1+8)表示在后台循环播放。

一、什么是Windows API?

1.什么是Windows API?

Windows 这个多作业系统除了协调应用程式的执行、分配内存、管理系统资源…之外,她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备…等目的,由於这些函数服务的对象是应用程式(Application),所

以便称之为Application Programming Interface,简称API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。

凡是在Windows 工作环境底下执行的应用程式,都可以调用Windows API。

2.Windows API的历史与现状

当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。

但是,没有合适的Windows编程平台,程序员想编写具有Windows风格的软件,必须借助API,API 也因此被赋予至高无上的地位。那时的WINDOWS程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在WINDOWS平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。

这些优秀可视化编程环境操作简单、界面友好(诸如VB、VC++、DELPHI等),在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32 API 函数基础之上的,是封装了的API函数的集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。

实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。

这也是API函数使用的场合,所以我们对待API函数不必刻意去研究每一个函数的用法,那也是不现实的(能用得到的API函数有几千个呢)。正如某位大虾所说:API不要去学,在需要的时候去查API 帮助就足够了。但是,许多API函数令人难以理解,易于误用,还会导致出错,这一切都阻碍了它的推广。本专题就是想帮助那些想快速掌握API函数用法的同志们。通过对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 对设备执行指定的操作

DosDateTimeToFileTime 将DOS日期和时间值转换成一个win32 FILETIME 值FileTimeToDosDateTime 将一个win32 FILETIME 值转换成DOS日期和时间值FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间

FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构

FindClose 关闭由FindFirstFile函数创建的一个搜索句柄

FindFirstFile 根据文件名查找文件

FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件

FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区

FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘

GetBinaryType 判断文件是否可以执行

GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数

GetCurrentDirectory 在一个缓冲区中装载当前目录

GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息

GetDriveType 判断一个磁盘驱动器的类型

GetExpandedName 取得一个压缩文件的全名

GetFileAttributes 判断指定文件的属性

GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制

GetFileSize 判断文件长度

GetFileTime 取得指定文件的时间信息

GetFileType 在给出文件句柄的前提下,判断文件类型

GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息

GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区

GetFullPathName 获取指定文件的完整路径名

GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母

GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径GetOverlappedResult 判断一个重叠操作当前的状态

GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表GetPrivateProfileString 为初始化文件中指定的条目取得字串

GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值

GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表

GetProfileString 为win.ini初始化文件中指定的条目取得字串

GetShortPathName 获取指定文件的短路径名

GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名

GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用

GetTempPath 获取为临时文件指定的路径

GetVolumeInformation 获取与一个磁盘卷有关的信息

GetWindowsDirectory 获取Windows目录的完整路径名

hread 参考lread

hwrite 参考lwrite函数

lclose 关闭指定的文件

lcreat 创建一个文件

llseek 设置文件中进行读写的当前位置

LockFile 锁定文件的某一部分,使其不与其他应用程序共享

LockFileEx 与LockFile相似,只是它提供了更多的功能

lopen 以二进制模式打开指定的文件

lread 将文件中的数据读入内存缓冲区

lwrite 将数据从内存缓冲区写入一个文件

LZClose 关闭由LZOpenFile 或LZInit函数打开的一个文件

LZCopy 复制一个文件

LZInit 这个函数用于初始化内部缓冲区

LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件

LZRead 将数据从文件读入内存缓冲区

LZSeek 设置一个文件中进行读写的当前位置

MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间

MoveFile 移动文件

OpenFile 这个函数能执行大量不同的文件操作

OpenFileMapping 打开一个现成的文件映射对象

QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况

ReadFile 从文件中读出数据

ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调RegCloseKey 关闭系统注册表中的一个项(或键)

RegConnectRegistry 访问远程系统的部分注册表

RegCreateKey 在指定的项下创建或打开一个项

RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数RegDeleteKey 删除现有项下方一个指定的子项

RegDeleteValue 删除指定项下方的一个值

RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx

RegEnumKeyEx 枚举指定项下方的子项

RegEnumValue 枚举指定项的值

RegFlushKey 将对项和它的子项作出的改动实际写入磁盘

RegGetKeySecurity 获取与一个注册表项有关的安全信息

RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制RegOpenKey 打开一个现有的注册表项

RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数

RegQueryInfoKey 获取与一个项有关的信息

RegQueryValue 取得指定项或子项的默认(未命名)值

RegQueryValueEx 获取一个项的设置值

RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息

RegRestoreKey 从一个磁盘文件恢复注册表信息

RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件

RegSetKeySecurity 设置指定项的安全特性

RegSetValue 设置指定项或子项的默认值

RegSetValueEx 设置指定项的值

RegUnLoadKey 卸载指定的项以及它的所有子项

RemoveDirectory 删除指定目录

SearchPath 查找指定文件

SetCurrentDirectory 设置当前目录

SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾

SetFileAttributes 设置文件属性

SetFilePointer 在一个文件中设置当前的读写位置

SetFileTime 设置文件的创建、访问及上次修改时间

SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果

SetVolumeLabel 设置一个磁盘的卷标(Label)

SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构

UnlockFile 解除对一个文件的锁定

UnlockFileEx 解除对一个文件的锁定

UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射

VerFindFile 用这个函数决定一个文件应安装到哪里

VerInstallFile 用这个函数安装一个文件

VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称

VerQueryValue 这个函数用于从版本资源中获取信息

WriteFile 将数据写入一个文件

WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值WritePrivateProfileString 在初始化文件指定小节内设置一个字串

WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值

WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串

4. API之打印函数

AbortDoc 取消一份文档的打印

AbortPrinter 删除与一台打印机关联在一起的缓冲文件

AddForm 为打印机的表单列表添加一个新表单

AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号

AddMonitor 为系统添加一个打印机监视器

AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口

AddPrinter 在系统中添加一台新打印机

AddPrinterConnection 连接指定的打印机

AddPrinterDriver 为指定的系统添加一个打印驱动程序

AddPrintProcessor 为指定的系统添加一个打印处理器

AddPrintProvidor 为系统添加一个打印供应商

AdvancedDocumentProperties 启动打印机文档设置对话框

ClosePrinter 关闭一个打开的打印机对象

ConfigurePort 针对指定的端口,启动一个端口配置对话框

ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接

DeleteForm 从打印机可用表单列表中删除一个表单

DeleteMonitor 删除指定的打印监视器

DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口

DeletePrinter 将指定的打印机标志为从系统中删除

DeletePrinterConnection 删除与指定打印机的连接

DeletePrinterDriver 从系统删除一个打印机驱动程序

DeletePrintProcessor 从指定系统删除一个打印处理器

DeletePrintProvidor 从系统中删除一个打印供应商

DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息

DocumentProperties 打印机配置控制函数

EndDocAPI 结束一个成功的打印作业

EndDocPrinter 在后台打印程序的级别指定一个文档的结束

EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页

EndPagePrinter 指定一个页在打印作业中的结尾

EnumForms 枚举一台打印机可用的表单

EnumJobs 枚举打印队列中的作业

EnumMonitors 枚举可用的打印监视器

EnumPorts 枚举一个系统可用的端口

EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序

EnumPrinters 枚举系统中安装的打印机

EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型

EnumPrintProcessors 枚举系统中可用的打印处理器

Escape 设备控制函数

FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象

FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区

GetForm 取得与指定表单有关的信息

GetJob 获取与指定作业有关的信息

GetPrinter 取得与指定打印机有关的信息

GetPrinterData 为打印机设置注册表配置信息

GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录

OpenPrinter 打开指定的打印机,并获取打印机的句柄

PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框

PrinterProperties 启动打印机属性对话框,以便对打印机进行配置

ReadPrinter 从打印机读入数据

ResetDC 重设一个设备场景

ResetPrinter 改变指定打印机的默认数据类型及文档设置

ScheduleJob 提交一个要打印的作业

SetAbortProc 为Windows指定取消函数的地址

SetForm 为指定的表单设置信息

SetJob 对一个打印作业的状态进行控制

SetPrinter 对一台打印机的状态进行控制

SetPrinterData 设置打印机的注册表配置信息

StartDoc 开始一个打印作业

StartDocPrinter 在后台打印的级别启动一个新文档

StartPage 打印一个新页前要先调用这个函数

StartPagePrinter 在打印作业中指定一个新页的开始

WritePrinter 将发送目录中的数据写入打印机

5. API之文本和字体函数

AddFontResource 在Windows系统中添加一种字体资源

CreateFont 用指定的属性创建一种逻辑字体

CreateFontIndirect 用指定的属性创建一种逻辑字体

CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数

AddFontResource

二﹑什么是DLL

什么是DLL呢?

DLL(动态连接库),既然是动态,那么就是有静态连接库,我想如果这么说大家会更明白:

也许有的人在DOS下编写过程序都明白这么一件事情,我写了一个程序,里面有一个功能就是把屏幕的内容翻转在转90°打印出来,那么我需要把整个程序写好放到我的所有代码中,但是如果我写另外一个程序的时候也有相通的功能,我可以调用以前的程序这个功能吗?当然是不可以的了,所以我就要重新的写一次,如果有5个需要调用这个功能的程序,我的这个功能函数需要20K的地方,那么我的硬盘就有80K的垃圾出现(20k*5 - 20k),这仅仅是一个函数,大家是否可以数清除WINDOWS如果这样来写,需要多少函数吗?你看看所有的按钮、滚动条、

Listbox\Textbox\checkBox\窗体、打印对话框、颜色对话框、打开、保存、另存、字体对话框、文件的排列、拷贝、粘贴...... 这一切的一切是不是都需要在所有的程序中都要写出来呢?如果真的是这个样子,那么我们的windows应该按TB来计算了(1TB=1024GB),也许你说你的硬盘很大,那么他们还要在运行的时候占用相同大下的内容呢!所以发展出来了,动态连接库(dll)这个感念:动态连接,就是把这些相通的功能、函数都放到一种特殊形式的windwos可执行文

件中(dll),生成一个DLL的时候,程序员需要写出,其中包含那些函数需由其他程序来访问。这个过程叫做对函数的“导出”创建windows程序的时候,专门的连接程序对程序的对象文件进行扫描,并生成一个列表,列出那些调用的函数在那个DLL那个位置,指定各个函数所在位置的过程叫做对函数的“导入”,当程序运行的时候,一旦要求用到执行文件内部没有的函数,windows就会自动装载动态连接库,使应用程序可以访问这些函数。此时,每个函数的地址都会解析出来,并且以动态的方式连接到程序里--这便是术语“动态连接”的由来。另外还有一个好处,就是当你更新你的这个函数的版本和功能的时候,静态连接所需要做的工作是多少(假设按windwos来说他有上千个这样的函数,一共有100 多个程序来使用,那静态连接需要100000次的更新,动态连接只需要1000次)﹐从而也节省了内存的空间。动态连接库不一定是DLL扩展名的,也可以是ocx、vbx、exe、drv 等等的大家可以发现在调用WIN32 api的时候里面都会有说明是来自于那个dll等宿主文件的现在我就在这里讲讲一些标准的dll用途:

看下面这个API声明:

Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) A s Long

看见kernel32了吗,其实这个就是kernel32.dll的名字,你可以在你的硬盘里找到他,这就是说GetWindowsDirectory这个函数是在kernel32.dll里面,他的别名是GetWindowsDirectoryA,()中是他的参数,有两个一个是字符型,一个是长整型,返回值也是长整型。lpBuffer ------- S tring,指定一个字串缓冲区,用于装载Windows目录名。除非是根目录,否则目录中不会有一个中止用的“\” 字符nSize

---------- L ong,lpBuffer字串的最大长度,返回值为Long,复制到lpBuffer的一个字串的长度。如lpBuffer 不够大,不能容下整个字串,就会返回lpBuffer要求的长度。零表示失败。这就是API声明的意义所在!

DLL的说明

KERNEL32.DLL ----低级内核函数。使用他可以完成内存管理、任务管理、资源控制等。USER32.DLL------于windows管理有关的函数。消息、菜单、光标、计时器、通信和其他大多数非现实函数都可以从这里找到

GDI32.DLL-------图形设备接口库。于设备输出有关的函数:大多数绘图、显示场景、图元文件、坐标及其字体函数都可以从这梨找到。

COMDLG32.DLL\LZ32.DLL\VERSION.DLL\---这都是提供一些附加函数的库,包括通用对话框、文

件压缩、版本控制的支持。

COMCTL32.DLL --------一个新的windows控件集合,比如TreeView和RichTextBox 等等,最初这个好像是为了win95而制作的,但是现在也使用与NT下MAPI32.DLL---------提供了一套电子邮件的专用函数NETAPI32.DLL--------提供了一套访问和控制网络的函数

ODBC32.DLL--------(不用我再说了吧)ODBC功能的DLL之一

WINMM.DLL------(这可不是WINDOWS的MM)是多媒体控制访问函数集合

windows api正在快速发展和变化,是你我任何单个人都追赶不上的速度发展,幸

运的是我们不用掌握所有的windows API,只是掌握需要经常使用的WINDOWs api

和他的常规结构、基本感念就可以了,这亮点很重要。

四﹑PB外部函數調用狀況﹐如

1.PB中调用API函数限制程序多次运行

定义外部函数

Function ULong CreateMutexA(ULong lpsa, Boolean fInitialOwner, String lpszMutexName) Library 'kernel32.dll' function long GetLastError () library "kernel32.dll"

/* ======================================================== */

// 函数名称:uf_app_isrun

// 参数解释:无

// 功能描述:判断本应用是否已经运行

// 调用举例:uf_app_isrun

// 最初作者:*******

// 编写日期:

// 返回值:boolean

// 变量情况:

// 修改人:

// 修改日期:

// 修改原因:

/* ======================================================== */

string ls_AppName

IF Handle(GetApplication())>0 THEN

ls_AppName=GetApplication().AppName

CreateMutexA(0,TRUE,ls_AppName)

IF GetLastError()=183 THEN RETURN TRUE

END IF

RETURN FALSE

判断应用是否已运行的。在应用的open事件中调用:

w_logon1024.Title ="计算器"

if uf_app_isrun()=true then

messagebox("","重复打开")

halt close

else

messagebox("","没有重复")

end if

可以吗

还有,在PB下,我怎么测试是否重复打开程序

另一种方法:

1.声明全局外部函数

FUNCTION ulong FindWindowA(ulong classname,string windowname) LIBRARY "user32.dll"

2.在application的open事件中

/*防止本系统多次运行*/

ulong l_handle, lu_class

setnull(lu_class)

ls_name="???"//mdi主窗体的标题

l_handle = FindWindowA(lu_class, ls_name)

if l_handle > 0 then

MessageBox("应用程序多次运行", "本应用程序已经运行,你不能多次启动!")

Halt Close

end if

如何获得窗口微帮助的当前内容?

第一步:声明全局外部函数:

Function ulong FindWindowEx(ulong hWnd1,ulong hWnd2,ref string lpsz1,ref string lpsz2) LIBRARY "user32.dll" ALIAS FOR "FindWindowExA"

Function ulong GetWindowText(ulong hwnd,ref string lpString,ulong cch) LIBRARY "user32. dll" ALIAS FOR "GetWindowTextA"

Function ulong GetWindowTextLength(ulong hwnd) LIBRARY "user32.dll" ALIAS FOR "Get WindowTextLengthA"

第二步:你在一个按钮或MENU里面写如下代码:

string ls_p1,wn,mystr

long handle

ls_p1 = "FNHELP60"

setnull(wn)

handle = FindWindowEx(handle(w_genapp_frame),0,ls_p1,wn)

MyStr = Space(GetWindowTextLength(handle(w_genapp_frame)) + 1)

GetWindowText(handle, MyStr, Len(MyStr))

messagebox("Microhelp",Mystr)

//这里假设你的主FRAME窗体叫做w_genapp_frame,你可以改名为你自己的窗体名

//这样点击按钮或MENU后即可弹出当前MICROHELP内容

一﹑API函数:GetFullPathName如何使用?

函数声明如下:

Function ulong GetFullPathName(ref string lpFileName,ulong nBufferLength,ref string lpBuffer,ref string lpFilePart) LIBRARY "kernel32.dll"

ALIAS FOR "GetFullPathNameA"

GetFullPathName( LPCTSTR lpFileName, // file name // 文件的名字,可以加相对的路径DWORD nBufferLength, // size of path buffer // 输出buf的长度

LPTSTR lpBuffer, // path buffer // 输出全路经

LPTSTR *lpFilePart // address of file name in path // NULL 就可以了

);

使用方法:

ulong x01=128

string a01,b01,c01

a01 = "pb7ping.exe"

GetFullPathName(a01,x01,b01,c01)

//b01=全文件名,c01无实际意义

技术文章——PB中可使用的Windows API调用简介(2005-6-4 12:29:00)(原自:sybase ) 关闭

Arc GetCurrentDirectoryA Mouse_Event

Beep GetCurrentThread MoveToEx

BringWindowToTop GetCursor MoveWindow

Chord GetCursorPos Pie

CloseHandle GetDC Polygon

CloseWindow GetKeyboardState PostMessageA

CopyFileA GetKeyState Rectangle

CreateDirectoryA GetModuleHandleA ReleaseCapture

DeleteFileA GetParent SetCapture

DeleteMenu GetPixel SetComputerNameA

DestroyWindow GetSystemTime SetCurrentDirectoryA

DllRegisterServer GetSystemMenu SetCursorPos

Ellipse GetSystemMetrics SetFocus

ExitWindowsEx GetThreadPriority SetKeyboardState

FatalExit GetUserNameA SetPixel

FindWindowA GetWindowsDirectory Sleep

FreeLibrary GlobalMemoryStatus SndPlaySoundA

GetBkColor LineTo SwapMouseButton

GetCapture LoadLibraryA WaveOutGetNumDevs

GetComputerNameA mciSendStringA WinExec

GetClassNameA MessageBoxA ...

ADDITIONS: GetVolumnInformationA ...

Arc( )

This function draws an arc based on the coordinates the function receives. There is no PowerBuilder equivalent.

Global External Function:

FUNCTION boolean Arc(ulong hwnd, long r1, long r2, long r3, long r4, long a1, long a2, long a3, long a4) LIBRARY "Gdi32.dll" Function ulong GetDC(ulong hwnd) library "user32.dll"

Script:

Boolean rtn

ulong l_handle, l_device

long lv[8]

l_handle = handle(w_main) // 'w_main' is the name of the sample window.

l_device = GetDC(l_handle)

lv[ ] = {10,40,300,220,0,0,180,0}

rtn = Arc(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])

Beep( )

The Beep function causes the system to make an internal beep sound. This is identical to the PowerBuilder function Beep( ).

Global External Function:

FUNCTION boolean Beep(long freq,long dur) LIBRARY "Kernel32.dll"

Script:

Boolean rtn

Long ll_freq, ll_dur

ll_freq = 500

ll_dur = 20

rtn = Beep(ll_freq, ll_dur)

BringWindowToTop( )

The BringWindowToTop function sends a message to the target window telling it to come to the foreground. The PowerBuilder equivalent is limited to PowerBuilder Windows only, the script is as follows: .bringtotop = true

Global External Function:

FUNCTION boolean BringWindowToTop(ulong w_handle) LIBRARY "User32.dll"

Script:

Boolean rtn

ulong l_handle

l_handle = handle(w_win2)

rtn = BringWindowToTop(l_handle)

Chord( )

A Chord is a region bounded by the intersection of an ellipse and a line segment. This function draws a chord based on the coordinates the function receives. There are no PowerBuilder equivalents.

Global External Function:

FUNCTION boolean Chord(ulong hwnd,long x1,long y1,long x2,long y2,long r1, long r2, long r3, long r4) LIBRARY "Gdi32.dll"

Script:

boolean rtn

ulong l_handle, l_device

long lv[8]

l_handle = handle(w_main)

l_device = GetDC(l_handle)

// This can be done in one line: i.e. l_device = GetDC(handle(w_main))

lv[ ] = {5,5,200,200,0,0,200,300}

rtn = Chord(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])

CloseHandle( )

The CloseHandle function releases an open object handle. The closest PowerBuilder equivalent is the function Destroy, but it is only used with PowerBuilder created objects.

Global External Function:

FUNCTION boolean CloseHandle(ulong w_handle) LIBRARY "Kernel32.dll"

FUNCTION ulong FindWindowA(ulong classname,string windowname) LIBRARY "User32.dll"

Script:

boolean rtn

ulong l_handle

string ls_wname

ls_wname = ""

l_handle = FindWindowA(0, ls_wname) // Usually you would already have the handle.

rtn = CloseHandle(l_handle)

CloseWindow( )

This function does not close a window as one might think. CloseWindow minimizes the window that is targeted. The closest PowerBuilder equivalent is the WindowState command, but this is limited to PB windows only. The syntax in PowerBuilder

is as follows: .WindowState = Minimized!

Global External Function:

FUNCTION boolean CloseWindow(ulong w_handle) LIBRARY "User32.dll"

FUNCTION ulong FindWindowA(ulong classname,string windowname) LIBRARY "User32.dll"

Script:

boolean rtn

ulong l_handle

string ls_wname

ls_wname = ""

l_handle = FindWindowA(0, ls_wname) // Be sure to use the exact title of the window you are targeting.

rtn = CloseWindow(l_handle)

CopyFileA( )

This function copies a file by taking the source and destination names as a string by reference. If the flag is set to true the file will not overwrite an existing file, if set to false it will overwrite an existing file. There is no PowerBuilder equivalent.

Global External Function:

FUNCTION boolean CopyFileA(ref string cfrom, ref string cto, boolean flag) LIBRARY "Kernel32.dll"

Script:

string l_from, l_to

boolean l_flag, rtn

l_flag = false

l_from = "c:\program files\sybase\readme.txt"

l_to = "c:\new_readme.txt"

rtn = CopyFileA(l_from, l_to, l_flag)

MessageBox("CopyFile", string(rtn))

CreateDirectoryA( )

This function create a new directory folder under the current directory.The second argument is exclusively used by NT and can be ignored under Win95. There is no PowerBuilder equivalent.

Global External Function:

FUNCTION boolean CreateDirectoryA(ref string pathname, int sa) LIBRARY "Kernel32.dll"

Script:

boolean rtn

string l_dir

l_dir = " c:\API Demo"

rtn = CreateDirectoryA(l_dir, 0)

If rtn then

MessageBox("New Directory Created", "API Demo directory is located under current directory.")

else

MessageBox("CreateDirectory", "Failed")

end if

DeleteFileA( )

This function receives a string by reference containing a fully path qualified filename and deletes that file. There is no PowerBuilder equivalent.

Global External Function:

FUNCTION boolean DeleteFileA(ref string filename) LIBRARY "Kernel32.dll"

Script:

string l_file

boolean rtn

l_file = string("c:\test.txt")

rtn = DeleteFileA(l_file)

MessageBox("DeleteFile", string(rtn))

DeleteMenu( )

The DeleteMenu function deletes an item from the specified menu. If the menu item opens a menu or submenu, this function destroys the handle to the menu or submenu and frees the memory used by the menu or submenu.

Global External Function:

FUNCTION boolean DeleteMenu(ulong mhand, uint upos, uint flag) LIBRARY "user32.dll"

FUNCTION boolean GetSystemMenu(ulong mhandle, boolean flag) LIBRARY "user32.dll"

Script:

ulong m_handle

boolean rtn

m_handle = handle(w_main)

rtn = GetSystemMenu(handle(w_main), false) // Need to get the handle of the system menu first.

rtn = DeleteMenu(m_handle, 1, 0) // The second argument, the '1', refers to the position in the menu. Messagebox("Return Code", string(m_handle))

Messagebox("Return Code", string(rtn))

DestroyWindow( )

This function sends a destroy message to the targeted window. The closest PowerBuilder equivalent is Close(), but this is limited to PB windows only.

Global External Function:

FUNCTION boolean DestroyWindow(ulong w_handle) LIBRARY "USER32.DLL"

Script:

boolean rtn

ulong l_handle

open(w_win2) // Open a test window

l_handle = handle(w_win2)

rtn = DestroyWindow(l_handle)

DllRegisterServer( )

This function triggers an OCX to self-register. This function when called from the constructor event of an application allows a PB application to dynamically register an OCX on the machine it is run on. There is no PowerBuilder equivalent.

Global External Function:

FUNCTION long DllRegisterServer() LIBRARY "c:\windows\ocxname.ocx"

Script:

Long ll_rtn

ll_rtn = DllRegisterServer()

//Note: A return code of zero most likely means the OCX is already registered.

Ellipse( )

An Ellipse function draws a circular object based on the coordinates the function receives. There is no PowerBuilder equivalent.

Global External Function:

FUNCTION boolean Ellipse(ulong hwnd,long x1,long y1,long x2,long y2) LIBRARY "Gdi32.dll"

Function ulong GetDC(ulong hwnd) library "user32.dll"

Script:

Boolean rtn

ulong l_handle, l_device

long lv[4]

l_handle = handle(w_main)

l_device = GetDC(l_handle)

lv[ ] = {5,5,300,300}

rtn = Ellipse(l_device, lv[1], lv[2], lv[3], lv[4])

ExitWindowsEx( )

This function sends a call to the Windows OS telling it to shut down. This function is especially good for increasing the security of your application. There is no PowerBuilder equivalent.

Global External Function:

FUNCTION boolean ExitWindowsEx(uint dwReserved, uint uReserved) LIBRARY "User32.dll"

Script:

boolean rtn

rtn = ExitWindowsEx(0,0) // Zero's tell it to shut down immediately.

FatalExit( )

This function abruptly stops an application from running. As a result, nothing gets closed properly and objects are left hanging in memory. This function will produce a GPF the moment it is called and you will need to reboot. FatalExit is meant to be used for debugging purposes and is not recommended otherwise. There is no PowerBuilder equivalent.

Global External Function:

SUBROUTINE FatalExit(int exitcode) LIBRARY "Kernel32.dll"

Script:

int rtn

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

常用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.360docs.net/doc/3311957480.html,T.*、WINWB86.HLP.*、WINWB86A.IME.*、WINWB86A.MB.*、WINWB86W.IME.*、WINWB86W.MB.*、WINWB98.CHM.*、https://www.360docs.net/doc/3311957480.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函数手册

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,都可以被本函数使用。 使用前须知 字符串 * 字符串以双引号(“)作为起始和结束标记; *

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(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。

常用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函数通过调用核心库的函数,为开发者提供相对简单的用法,实现

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.360docs.net/doc/3311957480.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 在菜单中加入新的项目是是是

Xilkernel API函数介绍

Xilkernel是Xilinx公司提供的用于EDK系统的小型、模块化的操作系统,支持MicroBlaze、PowerPC405以及PowerPC440处理器。支持可移植操作系统接口(POSIX)。 Xilkernel功能函数包括:线程管理、信号量、消息队列、共享内存、互斥锁、动态内存管理、软件定时、用户层中断处理API等几个方面。 ------------------------------------------------------------- 1、线程管理包括如下API函数 Xilkernel支持基本的POSIX线程操作,需要配合线程设置共同作用。使用该类函数需要包含头文件pthread.h。 int pthread_create(pthread_t thread, pthread_attr_t* att, void*(*start_func)(void*),void* param) 参数:thread是存储线程ID的地址,attr存储线程属性结构体的地址, start_func线程函数名,param线程函数参数指针。 返回:0创建成功,-1线程ID无效,EINVAL无效属性,EAGAIN资源不足 创建线程并执行。 void pthread_exit(void *value_ptr) 参数:线程返回值的指针 结束一个线程,但这个函数并不是必须的。需要用到返回值时才使用。 int pthread_join(pthread_t thread, void **value_ptr) 参数:thread线程ID,value_ptr线程返回值地址指针 返回:0成功,ESRCH无效线程,EINVAL线程返回值已经被使用 停止当前线程等待目标线程执行完成并返回值。 pthread_t pthread_self(void) 返回:本线程ID int pthread_detach(pthread_t target) 返回:0成功,ESRCH线程未创建 回收线程存储资源,但并不会结束线程。 int pthread_equal(pthread_t t1, pthread_t t2) 参数:t1和t2两个待比较线程的ID 返回:1两线程是同一线程,0其它情况 int pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param) 参数:thread线程ID,policy全局调度策略指针,param调度策略结构体地址

外挂编程常用API函数

外挂编程常用API函数 CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用 ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接 CreateEvent 创建一个事件对象 CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人) CreateMutex 创建一个互斥体(MUTEX) CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用 CreatePipe 创建一个匿名管道 CreateProcess 创建一个新进程(比如执行一个程序) CreateSemaphore 创建一个新的信号机 CreateWaitableTimer 创建一个可等待的计时器对象 DisconnectNamedPipe 断开一个客户与一个命名管道的连接 DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄ExitProcess 中止一个进程 FindCloseChangeNotification 关闭一个改动通知对象 FindExecutable 查找与一个指定文件关联在一起的程序的文件名 FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化FindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化 FreeLibrary 释放指定的动态链接库 GetCurrentProcess 获取当前进程的一个伪句柄 GetCurrentProcessId 获取当前进程一个唯一的标识符 GetCurrentThread 获取当前线程的一个伪句柄 GetCurrentThreadId 获取当前线程一个唯一的线程标识符 GetExitCodeProces 获取一个已中断进程的退出代码 GetExitCodeThread 获取一个已中止线程的退出代码 GetHandleInformation 获取与一个系统对象句柄有关的信息 GetMailslotInfo 获取与一个邮路有关的信息 GetModuleFileName 获取一个已装载模板的完整路径名称 GetModuleHandle 获取一个应用程序或动态链接库的模块句柄 GetPriorityClass 获取特定进程的优先级别 GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况

solidworks二次开发常用API函数命令

SolidWorks2003二次开发基础与实例教程

1. 程序语言 1.1 Visual Basic 1.1.1 VB缺点 ①没有多线程 ②没有实现继承和其他面向对象的特性 ③错误处理能力差 ④与其他语言集成性差 2.文件操作 2.1 保存和退出SW文件 P60 ① ModelDoc2::SaveAs4 作用:用不同的名称保存文件 ② ModelDoc::SaveAs2 作用:用新名称保存文件 ③ SldWorks::ExitApp 2.2 查找文件所参考的其他文件 ModelDoc2::GetDependencies2 2.3 获得与配置有关的结构存储区域 P245 SW文件使用Mocrosoft structured storage(微软结构储存)存储Parasolid 体在各个流中。 Cofiguration::GeteStreamName ModelDoc2::GetConfigurationByName

3.1返回草图对象P72 Feature::GetSpecificFeature 3.2草图对象直接添加到到SW数据库 P109 ① ModelDoc2::SetAddToDB //自动推理功能关闭,即关闭网格和实体自动捕捉 ② ModelDoc2::SetDisplayWhenAdded(False); // 关闭新增实体的实时 显示 ③ ModelDoc2::GraphicsRedraw2 // 重画或刷新文档窗口 ④ ModelDoc2::SetDisplayWhenAdded(True); // 恢复默认显示 3.3获得草图实体的线宽 P110 ① SketchSegment.Width // 工程图才支持草图实体线宽 ② https://www.360docs.net/doc/3311957480.html,yerOverride // 判断对象是否正在使用默认线宽 3.4检查草图的有效性 P120 Sketch::CheckFeatureUse 3.5获得草图的永久性标识符 P139 SketchSegment::GetID SketchPoint::GetID 注:草图标识由草图名称和草图ID组成 草图的ID是long的有序数对(a,b) 同一个SketchSegment内的每个实体拥有唯一ID 3.6列出草图中的约束 P140 SketchSegment::GetConstraints 3.7控制曲线的精度 Modeler::SetTolerances 3.8修剪曲线来对其边界 P154 Face2.GetTrimCurves2

delphi常用api函数

Delphi 常用API 函数 [delphi] view plaincopyDelphi 常用API 函数AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小AnyPopup 判断屏幕上是否存在任何弹出式窗口ArrangeIconicWindows 排列一个父窗口的最小化子窗口AttachThreadInput 连接线程输入函数BeginDeferWindowPos 启动构建一系列新窗口位置的过程BringWindowToTop 将指定的窗口带至窗口列表顶部CascadeWindows 以层叠方式排列窗口ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标CloseWindow 最小化指定的窗口CopyRect 矩形内容复制DeferWindowPos 该函数为特定的窗口指定一个新窗口位置DestroyWindow 清除指定的窗口以及它的所有子窗口DrawAnimatedRects 描绘一系列动态矩形EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态EnumChildWindows 为指定的父窗口枚举子窗口EnumThreadWindows 枚举与指定任务相关的窗口EnumWindows 枚举窗口列表中的所有父窗口EqualRect

判断两个矩形结构是否相同FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口FlashWindow 闪烁显示指定窗口GetActiveWindow 获得活动窗口的句柄GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息GetClassLong 取得窗口类的一个Long变量条目GetClassName 为指定的窗口取得类名GetClassWord 为窗口类取得一个整数变量GetClientRect 返回指定窗口客户区矩形的大小GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄GetFocus 获得拥有输入焦点的窗口的句柄GetForegroundWindow 获得前台窗口的句柄GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息GetParent 判断指定窗口的父窗口GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系GetWindowContextHelpId 取得

Java常用API知识测试带答案

Java常用API知识测试带答案 常用API部分测试题 1.String类中的getBytes()方法的作用是(C) A)将整数变成字符串 B)将字符串变成字符数组 C)将字符串变成字节数组 D)获取字符串中字符的个数 2.下列程序的输出结果是(A) class Demo{ publicstaticvoid main(String[]args){ System.out.println("abcd".substring(1,3)); } } A)bc包头不包尾 B)b C)bcd D)abcd 3.对字符串”ababcdabcdefg”使用indexOf(‘a’)和lastIndexOf(‘a’),的运行结果是(B) A)1,1 B)0,6 C)0,0

indexOf从前开始获取,第一位是0 lastIndexOf从后开始获取,但索引还是从前面的第一位0开始4.下面程序的运行结果是什么(A) public static void main(String[]args){ String s1=“abc”; String s2=“xyz”; show(s1,s2); Syst em.out.println(s1+”-----”+s2); } static void show(String s1,String s2){ s1=s2+s1+”Q”; show方法中的s1=“xyzabcQ”但是main函数中s1没有变化. s2=“W”+s1; } String字符串的特性,String应该算是一个特殊的引用类型吧,特殊在它的值不被改变 A)abc-----xyz B)xyzabcQ-----xyzWabc C)xyzabcQ----xyzabcQWabc D)xyzQ----Wabc 5.以下哪个方法可以向StringBuffer对象的指定位置添加数据

Arduino常用函数

(1)pinMode(接口名称,OUTPUT或INPUT),将指定的接口定义为输入或输出接口,用在setup()函数里。 (2)digitalWrite(接口名称,HIGH(高)或LOW(低)),将数字输入输出接口的数值置高或置低。 (3)digitalRead(接口名称),读出数字接口的值,并将该值作为返回值。 (4)analogWrite(接口名称,数值),给一个模拟接口写入模拟值(PWM脉冲)。数值取值0-255。 (5)analogRead(接口名称),从指定的模拟接口读取数值,Arduino对该模拟值进行数字转换,这个方法将输入的0~5V电压值 转换为0~1023间的整数值,并将该整数值作为返回值。 (6)delay(时间),延时一段时间,以毫秒为单位,如1000为1秒。 (7)Serial.begin(波特率),设置串行每秒传输数据的速率(波特率)。在与计算机进行通讯时,可以使用下面这些值:300、1200、2400、4800、9600、14400、19200、28800、38400、57600或115200,一般9600、57600和115200比较常见。除此之外还可以使用其他需要的特定数值,如与0号或1号引脚通信就需要特殊的波特率。该函数用在setup()函数里。 Serial.available() 的意思是:返回串口缓冲区中当前剩余的字符个数。一般用这个函数来判断串口的缓冲区有无数据,当Serial.available()>0时,说明串口接收到了数据,可以读取;

Serial.read()指从串口的缓冲区取出并读取一个Byte的数据,比如有设备通过串口向Arduino发送数据了,我们就可以用Serial.read()来读取发送的数据。 while(Serial.available()>0) { data= Serial.read(); delay(2); } (8)Serial.read(),读取串行端口中持续输入的数据,并将读入的数据作为返回值。 (9)Serial.print(数据,数据的进制),从串行端口输出数据。Serial.print(数据)默认为十进制,相当于Serial.print(数据,十进制)。 (10)Serial.println(数据,数据的进制),从串行端口输出数据,有所不同的是输出数据后跟随一个回车和一个换行符。但是该函数所输出的值与Serial.print()一样。 常用函数 数字I/O类: pinMode(pin,mode)数字IO口输入输出模式定义函数,将接口定义为输入或输出接口。

Win32 API 常用函数

Win32 API 常用函数、消息、结构手册 一、创建和管理窗口的函数和消息: 函数: AdjustWindowRect(LPRECT lprc ,DEORD fdwStyle ,BOOL fMenu )该函数根据所希望的客户矩形大小来计算所要求的窗口矩形大小。然后将该窗口矩形传给CreateWindow函数,以创建一个满足客户区大小的窗口。 参数:lprc :指向一个包含客户矩形坐标的RECT结构。 fdwStyle :指定要计算其所要求的大小的窗口式样。 fMenu :指定此窗口是否有菜单。 返回值:如果函数成功,返回值是TRUE;否则,是FALSE。进一步错误信息,可调用GetLastError函数得到。 AdjustWindowRectEx(LPRECT lprc ,DEORD fdwStyle ,BOOL fMenu ,DWORD fdwExStyle )该函数根据所希望的客户矩形大小来计算具有扩展样式的窗口所需矩形大小。然后将该窗口矩形传给CreateWindow函数,以 创建一个满足客户区大小的窗口。 参数:lprc :指向一个包含客户矩形坐标的RECT结构。 fdwStyle :指定要计算其所要求的大小的窗口式样。 fMenu :指定此窗口是否有菜单。 fdwExStyle :指定要计算其所要求的尺寸的窗口的扩展式样。 返回值:如果函数成功,返回值是TRUE;否则,是FALSE。进一步错误信息,可调用GetLastError函数得到。 ArrangelconicWindows (HWND hwnd)该函数安排给定父窗口的所有最小化(图标化)的子窗口。 参数:hwnd:标示该父窗口。 返回值:如果函数成功,返回值为一图标行的高度;否则为0。进一步错误信息,可调用GetLastError 函数得到。 注释:管理自己的最小化窗口的应用程序可以调用该函数来安排父窗口中的图标。该函数还可以把图标安排在桌面窗口中。可通过使用GetDesktopWindow函数来获取该桌面窗口的窗口句柄。为使 客户窗口安排它自己的图标MDI子窗口,应用程序要给MDI用户窗口发送一个 WM_MDIICONARRANGE消息. BeginDeferWindowPos (int cWindows ) 该函数分配内存来保存一个多窗口位置的数据结构,并为该结构返回一个句柄。 参数:cWindows :为将存储在数据结构中的位置信息指定初始窗口的数目。如果需要,DeferWindowPos 函数将增加该结构的长度。 返回值:如果函数成功,则返回标示该多窗口位置的数据结构句柄;如果系统资源不够分配此结构则返回NULL。进一步错误信息,可调用GetLastError函数得到。 注释:多窗口位置数据结构是一个内部结构;应用程序不能直接访问它。DeferWindowPos函数用待移动窗口的目标位置信息填充该结构。EndDeferWindowPos函数接收该结构的句柄,并根据存放在 该结构中的信息重新为窗口定位。如果此多窗口位置数据结构中的任何窗口设置了 SWP_HIDEWINDOW标志,则所有窗口都不被重定位。如果Windows必须在由cWindows参数指定 的初始大小的基础上增加多窗口位置数据结构的大小,而又不能分配足够的内存来这样做,那 么Windows 使整个窗口定位序列失败。通过指定所需的最大尺寸,应用程序可以尽早检测和处 理失败。 BringWindowToTop (HWND hwnd )该函数将给定的窗口放到Z序的顶部。如果此窗口是一个顶层窗口,则它被激活。如果此窗口是一个子窗口,则与此子窗口相联系的顶层父窗口被激活。 参数:hwnd :标识将放到Z序顶部的窗口。 返回值:如果函数成功,则返回值为TRUE;否则返回FALSE。进一步错误信息,可调用GetLastError函数得到。 注释:调用该函数可露出被其他窗口部分或全部遮住的任何窗口。调用该函数与调用SetWindowPos函数来改变窗口在Z序中的位置类似。BringWindowToTop函数不把窗口变成顶层窗口。 ChildWindowFromPoint (HWND hwndParent ,POINT pt)该函数确定给定的父窗口的哪一个子窗口(如果有)包含了指定的点。

相关主题
相关文档
最新文档