さて、この機能は難しいことではありません、いくつかの機能を使用することです。それは私にちょうどデルファイ数日の学習を、完了するまでに数時間を要し、常にAPI関数の使用を探して、後でシャットダウン特典カードで..が消去/ 。..
InternetGetConnectedState(nil, 0) //这个函数需要调用winInet头文件,此函数返回本地系统的网络连接状态。
関数のパラメータと戻り値
BOOL InternetGetConnectedState(
__out LPDWORD lpdwFlags、 DWORD dwReserved __in );lpdwFlags [出]
それを指す 変数 の記述を受け取る変数に接続され、。関数がFLASE返すとき、このパラメータは、まだ有効フラグを返すことができます。パラメータは、次の値の一つ以上であってもよいです。値 | 意味 |
---|---|
INTERNET_CONNECTION_CONFIGURED0x40 | ローカルシステムは、インターネットへの有効な接続を持っていますが、それは可能性がありますか、現在接続されていない可能性があります。 |
INTERNET_CONNECTION_LANが0x02 | ローカルシステムは、インターネットに接続するローカルエリアネットワークを使用しています。 |
INTERNET_CONNECTION_MODEM0x01 | ローカルシステムは、インターネットに接続するモデムを使用しています。 |
INTERNET_CONNECTION_MODEM_BUSY0x08 | 現在使用されていません。 |
INTERNET_CONNECTION_OFFLINEは0x20 | ローカルシステムがオフラインモードです。 |
INTERNET_CONNECTION_PROXY0x04 | ローカルシステムは、インターネットに接続するためにプロキシサーバーを使用しています。 |
INTERNET_RAS_INSTALLED0x10 | ローカルシステムは、RASがインストールされています。 |
返却値
モデムまたはLAN接続がある場合はそこにはインターネット接続がされていないか、現在の接続のすべてが活性化されていない、falseを返すとき、それは、TRUEを返します。 関数がfalseを返した場合、プログラムが呼び出すことができるのGetLastErrorを受信するエラーコードを。-------------------------------------------------- ----------------- --------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------
関数がTRUEを返した場合、少なくとも接続が有効であることを示します。これは、特定のも、有効な接続であることを保証するものではありませんホスト。常にAPI接続を使用してサーバーへのリターンを確認する必要があり、エラーコードを、接続状態を決定するために使用されます。使用InternetCheckConnectionの機能は、ホストが指定した接続の確立に接続されたか否かを判断することができます。
また、それは戻り値はTRUEアクティブなモデム接続やLAN接続がアクティブであることを示しています。接続状態にFALSEないモデムとLANの代表。それはFALSEを返した場合、INTERNET_CONNECTION_CONFIGUREDアイデンティティは自動ダイヤルが「常にダイヤル」に設定されていることを示すために設定されますが、現在はアクティブではありませんされます。自動ダイヤルが設定されていない場合、この関数はFALSEを返します。 他の追加機能のWinInet APIとして、この関数はのDLLMainまたはグローバルからのものではないコンストラクタ、デストラクタセキュアコール。注意を払います
WinINet不支持实现服务器。另外,它也不应该用来作为服务。实现服务器或者服务可用Microsoft Windows HTTP Services (WinHTTP)。---------------------------------------------------------------------------------- 下面是对窗口进行提权(SE_SHUTDOWN_NAME )关机权限---------------------------------------------------------------
var
hToken:Thandle;
tp:TOKEN_PRIVILEGES;
buf:Cardinal;
aLuid:Int64;
begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,hToken);
tp.PrivilegeCount:=1;
LookupPrivilegeValue(nil,'SeShutdownPrivilege',aLuid);
tp.Privileges[0].Luid:=aLuid;
tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,false,tp,SizeOf(tp),nil,buf);
CloseHandle(hToken);
end;
代码也是我复制过来,以后有时间在解释一下吧!!
-----------------------------------------------------------------------------------------------这个是关机函数ExitWindowsEx---------------------------------------------------------------------------------------------
参数
ExitWindowsEX()函数用来退出、重启或注销系统。
函数原型: BOOL ExitWindowsEx( UINT uFlags, // 关闭参数 DWORD dwReserved // 系统保留,一般取0 );参数uFlag
参数:uFlags 指定关闭的类型。此参数必须有下列值的组合:EWX_FORCE
EWX_FORCE 强制终止进程。当此标志设置,Windows不会发送消息WM_QUERYENDSESSION和WM_ENDSESSION的消息给目前在系统中运行的程序。这可能会导致应用程序丢失数据。因此,你应该只在紧急情况下使用此标志。EWX_LOGOFF
EWX_LOGOFF 关闭所有进程,然后注销用户。EWX_POWEROFF
EWX_POWEROFF 关闭系统并关闭电源。该系统必须支持断电。 Windows要求: Windows NT中调用进程必须有 SE_SHUTDOWN_NAME 特权。 Windows 9X中:可以直接调用。EWX_REBOOT
EWX_REBOOT 关闭系统,然后重新启动系统。 Windows要求: Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。 Windows 9X中:可以直接调用。EWX_SHUTDOWN
EWX_SHUTDOWN 关闭系统,安全地关闭电源。所有文件缓冲区已经刷新到磁盘上,所有正在运行的进程已经停止。 Windows要求: Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。 Windows 9X中:可以直接调用。