Delphi中调用API函数经验点滴
在Delphi中调用WindowsAPI函数十分方便,只需在单元的uses段加入Windows单元名即可(对于由Delphi自动创建的单元,该项工作已经完成)。单元Windows.pas已经由Delphi编写并直接提供开发者引用。笔者在开发Windows应用时对于几个特别的API函数总结了一些经验供大家参考。以下开发经验均在Windows9x中适用。
一、关闭系统
对于某些特殊的应用程序,可能需要进行关闭系统的操作,可以调用函数ExitWindows或者ExitWindowsEx来实现。
在Delphi中函数ExitWindows的语法如下:
functionExitWindows(dwReserved:Cardinal;Code:Word):LongBool;
如果调用该函数成功,则返回True,否则返回False;成功调用该函数将执行“关闭所有程序并以其他身份登录(Windows95)”或“注销(Windows98)”操作。其中的参数dwReserved和参数Code都必须是0。
例如,要实现注销操作,只需要在适当的位置写入如下语句:
ExitWindows(0,0);
执行关闭计算机或重新启动计算机的操作,可以通过调用函数ExitWindowsEx来实现。
在Delphi中函数ExitWindowsEx的语法如下:
functionExitWindowsEx(uFlags,dwReserved:Cardinal):LongBool;
如果调用该函数成功,则返回True,否则返回False;其中的参数uFlags的不同将决定执行不同的关闭操作:
EWX_FORCE强制终止所有的进程。如果设置了此参数,Windows将不会向正在运行的应用程序发送消息WM_QUERYENDSESSION和WM_ENDSESSION,这将可能导致数据丢失。因此,除非特别紧急或特别的情况(如应用程序死锁或系统资源濒临崩溃等),不要使用该参数。
EWX_LOGOFF关闭所有与当前调用函数ExitWindowsEx相关的进程并注销用户。
EWX_POWEROFF关闭系统并关闭电源。其中,关闭电源要求系统应支持power-off特性。
EWX_REBOOT关闭系统并重新启动计算机。
EWX_SHUTDOWN在安全关闭电源后关闭系统。该操作将所有的缓存刷新到磁盘并停止所有正在运行的进程。
参数dwReserved被函数所忽略,可以是任意值。
例如,要强制注销,可以通过如下语句实现:
ExitWindowsEx(EWX_FORCE,0);
再如,要重新启动计算机,可以通过如下语句实现:
ExitWindowsEx(EWX_REBOOT,0);
需要提醒大家注意的是,在很多情况下,只有参数EWX_SHUTDOWN能够成功关闭计算机电源。
(转自bbs.sendsms.cn)