当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·我的qq在linux下用不了    »显示摘要«
    摘要: 我在linux9.0下安装料gaim0.59,加上qq插件,但是出现以下的错误: glib-critical **: file gmain.c: line 500 (g_source_remove): assertion `tag > 0 failed. 登录不上,请教什么问题? ......
    摘要: 我服务器用的是weblogic,我下载了mssql sever的jdbc,用java写了一个简单的程序,连接数据库成功了。 我用jsp写了一个连接的例子,可是老在语句: statement stmt=conn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable); 处报告"sqlex......


高分求教,高手请进,UP有分

1、如何用Delphi程序实现修改Windows用户名、机器的TCP/IP地址、子网掩码、网关和DNS服务的IP地址?  
  2、如何用Delphi程序实现重新启动?  
  谢谢大家支持!

NO.1   作者: comerliang

up  
 

NO.2   作者: comerliang

去看看这个帖子:  
  http://expert.csdn.net/Expert/topic/1149/1149863.xml?temp=.2511408

NO.3   作者: tpmao

POSTMESSAGE

NO.4   作者: ruihuahan

up

NO.5   作者: brotherxiao

function   TerminateAllProcesses:Boolean;    
  begin    
  ExecuteFile(C:\Windows\Rundll32.exe,user,exitwindows,,0);    
  Application.Terminate;    
  end;   //关机  
 

NO.6   作者: brotherxiao

退出系统  
      function   GetWinVersion:   String;  
   
      var  
   
      VersionInfo   :   TOSVersionInfo;  
   
      OSName   :   String;  
   
      begin  
   
      //   set   the   size   of   the   record  
   
      VersionInfo.dwOSVersionInfoSize   :=   SizeOf(   TOSVersionInfo   );  
   
   
      if   Windows.GetVersionEx(   VersionInfo   )   then  
   
      begin  
   
      with   VersionInfo   do  
   
      begin  
   
      case   dwPlatformId   of  
   
      VER_PLATFORM_WIN32s   :   OSName   :=   Win32s;  
   
      VER_PLATFORM_WIN32_WINDOWS   :   OSName   :=   Windows   95;  
   
      VER_PLATFORM_WIN32_NT   :   OSName   :=   Windows   NT;  
   
      end;   //   case   dwPlatformId  
   
      Result   :=   OSName   +     Version     +   IntToStr(   dwMajorVersion   )   +   .   +   IntToStr(   dwMinorVersion   )   +  
   
      #13#10   (Build     +   IntToStr(   dwBuildNumber   )   +   :     +   szCSDVersion   +   );  
   
      end;   //   with   VersionInfo  
   
      end   //   if   GetVersionEx  
   
      else  
   
      Result   :=   ;  
   
      end;  
   
   
      procedure   ShutDown;  
   
      const  
   
      SE_SHUTDOWN_NAME   =   SeShutdownPrivilege;   //   Borland   forgot   this   declaration  
   
      var  
   
      hToken   :   THandle;  
   
      tkp   :   TTokenPrivileges;  
   
      tkpo   :   TTokenPrivileges;  
   
      zero   :   DWORD;  
   
      begin  
   
      if   Pos(   Windows   NT,   GetWinVersion)   =   1   then   //   weve   got   to   do   a   whole   buch   of   things  
   
      begin  
   
      zero   :=   0;  
   
      if   not   OpenProcessToken(   GetCurrentProcess(),   TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,   hToken)   then  
   
      begin  
   
      MessageBox(   0,   Exit   Error,   OpenProcessToken()   Failed,   MB_OK   );  
   
      Exit;  
   
      end;   //   if   not   OpenProcessToken(   GetCurrentProcess(),   TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,   hToken)  
   
      if   not   OpenProcessToken(   GetCurrentProcess(),   TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,   hToken)   then  
   
      begin  
   
      MessageBox(   0,   Exit   Error,   OpenProcessToken()   Failed,   MB_OK   );  
   
      Exit;  
   
      end;   //   if   not   OpenProcessToken(   GetCurrentProcess(),   TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,   hToken)  
   
   
   
      //   SE_SHUTDOWN_NAME  
   
      if   not   LookupPrivilegeValue(   nil,   SeShutdownPrivilege   ,   tkp.Privileges[   0   ].Luid   )   then  
   
      begin  
   
      MessageBox(   0,   Exit   Error,   LookupPrivilegeValue()   Failed,   MB_OK   );  
   
      Exit;  
   
      end;   //   if   not   LookupPrivilegeValue(   nil,   SeShutdownPrivilege   ,   tkp.Privileges[0].Luid   )  
   
      tkp.PrivilegeCount   :=   1;  
   
      tkp.Privileges[   0   ].Attributes   :=   SE_PRIVILEGE_ENABLED;  
   
   
      AdjustTokenPrivileges(   hToken,   False,   tkp,   SizeOf(   TTokenPrivileges   ),   tkpo,   zero   );  
   
      if   Boolean(   GetLastError()   )   then  
   
      begin  
   
      MessageBox(   0,   Exit   Error,   AdjustTokenPrivileges()   Failed,   MB_OK   );  
   
      Exit;  
   
      end   //   if   Boolean(   GetLastError()   )  
   
      else  
   
      ExitWindowsEx(   EWX_FORCE   or   EWX_SHUTDOWN,   0   );  
   
      end   //   if   OSVersion   =   Windows   NT  
   
      else  
   
      begin   //   just   shut   the   machine   down  
   
      ExitWindowsEx(   EWX_FORCE   or   EWX_SHUTDOWN,   0   );  
   
      end;   //   else  
   
      end;  
   
  这个程序适用于所有Windows版本    
 

NO.7   作者: Wally_wu

function   TFrmChat.GetHostName:   String;  
  var  
      Buf:   Array[0..255]   of   char;  
      GInitData:   TWSADATA;  
      wVerReq:   Word;  
  begin  
      wVerReq   :=   MakeWord(2,   0);  
      WSAStartup(wVerReq,   GInitData);  
      Result   :=   ;  
      GetHostName(Buf,   Sizeof(Buf));  
      Result   :=   StrPas(Buf);  
      WSACleanup;  
  end;  
   
  procedure   TFrmChat.Button2Click(Sender:   TObject);  
  begin  
      showmessage(HostName);  
      showmessage(LocalIP);  
  end;  
   
  function   TFrmChat.LocalIP:   String;  
  Type  
      TaPInAddr=array   [0..10]   of   PInAddr;  
      PaPInAddr   =   ^TaPInAddr;  
  var  
      phe:   PHostEnt;  
      pptr:   PaPInAddr;  
      Buffer:   array   [0..63]   of   char;  
      i:   integer;  
      GInitData:   TWSADATA;  
  begin  
      WSAStartup(MakeWord(2,0),   GInitData);  
      Result   :=   ;  
      GetHostName(Buffer,   Sizeof(Buffer));  
      phe   :=   GetHostByName(buffer);  
      if   phe   =   nil   then   exit;  
      pptr   :=   PaPInAddr(phe^.h_addr_list);  
      i   :=   0;  
      while   pptr^[i]   <>   nil   do  
      begin  
          result   :=   StrPas(inet_ntoa(pptr^[i]^));  
          Inc(i);  
      end;  
      WSACleanup;  
  end;  
 

NO.8   作者: sblsongdongf

楼主会用google/baidu来搜索文章么?如果会,你就不必到这里来问问题,如果不会那还不赶快去试试

NO.9   作者: lion_lh

unit   USock;  
   
  interface  
   
  uses   Windows,   Winsock;  
  {  
      使用到WinSock2。  
      这是一个完整的Delphi单元,将它加入到你的工程中,你可以调用:  
      EnumInterfaces(var   s   string):   Boolean;  
      来返回所有IP地址、网络掩码、广播地址和连接状态。  
   
      此函数列举出所有的TCP/IP连接,并返回一个由回车换行(CRLF)符分隔的字符串,包含以下信息:  
      IP,   NetMask,   BroadCast-Address,   Up/Down   status,  
      Broadcast   support,   Loopback  
      如果你将这个字符串赋给TMemo(它的Memo.Lines.Text属性),你可以看到更清晰的结果。  
      使用此函数,你需要Win98/ME/2K,   95   OSR   2   或者NT   service   pack   #3,  
      因为程序会使用到WinSock   2(WS2_32.DLL)。}  
   
  function   EnumInterfaces(var   sInt:   string):   Boolean;  
   
  {从Winsock   2.0导入函数WSAIOCtl   --   在Win98/ME/2K   and   95   OSR2,   NT   srv   pack   #3下才有Winsock   2}  
  function   WSAIoctl(s:   TSocket;   cmd:   DWORD;   lpInBuffer:   PCHAR;   dwInBufferLen:   DWORD;  
      lpOutBuffer:   PCHAR;   dwOutBufferLen:   DWORD;  
      lpdwOutBytesReturned:   LPDWORD;  
      lpOverLapped:   POINTER;  
      lpOverLappedRoutine:   POINTER):   Integer;   stdcall;   external   WS2_32.DLL;  
   
  {Constants   taken   from   C   header   files}  
  const  
      SIO_GET_INTERFACE_LIST   =   $4004747F;  
      IFF_UP   =   $00000001;  
      IFF_BROADCAST   =   $00000002;  
      IFF_LOOPBACK   =   $00000004;  
      IFF_POINTTOPOINT   =   $00000008;  
      IFF_MULTICAST   =   $00000010;  
   
  type  
      sockaddr_gen   =   packed   record  
          AddressIn:   sockaddr_in;  
          filler:   packed   array[0..7]   of   char;  
      end;  
   
  type  
      INTERFACE_INFO   =   packed   record  
          iiFlags:   u_long;                                                                                 //   Interface   flags  
          iiAddress:   sockaddr_gen;                                                                 //   Interface   address  
          iiBroadcastAddress:   sockaddr_gen;                                               //   Broadcast   address  
          iiNetmask:   sockaddr_gen;                                                                 //   Network   mask  
      end;  
   
  implementation  
   
  {  
      1.   打开Winsock  
      2.   创建一个socket  
      3.   调用WSAIOCtl获取网络连接  
      4.   对每个连接,获取它的IP、掩码、广播地址、状态  
      5.   将信息填充到一个由CDLF分隔的字符串中  
      6.   结束}  
   
   
   
  function   EnumInterfaces(var   sInt:   string):   Boolean;  
  var  
      s:   TSocket;  
      wsaD:   WSADATA;  
      NumInterfaces:   Integer;  
      BytesReturned,   SetFlags:   u_long;  
      pAddrInet:   SOCKADDR_IN;  
      pAddrString:   PCHAR;  
      PtrA:   pointer;  
      Buffer:   array[0..20]   of   INTERFACE_INFO;  
      i:   Integer;  
  begin  
      result   :=   true;                                                                                       //   Initialize  
      sInt   :=   ;  
      WSAStartup($0101,   wsaD);                                                                     //   Start   WinSock  
      //   You   should   normally   check  
      //   for   errors   here   :)  
      s   :=   Socket(AF_INET,   SOCK_STREAM,   0);                                           //   Open   a   socket  
      if   (s   =   INVALID_SOCKET)   then   exit;  
   
      try                                                                                                               //   Call   WSAIoCtl  
          PtrA   :=   @bytesReturned;  
          if   (WSAIoCtl(s,   SIO_GET_INTERFACE_LIST,   nil,   0,   @Buffer,   1024,   PtrA,   nil,  
              nil)  
              <>   SOCKET_ERROR)   then  
          begin                                                                                                       //   If   ok,   find   out   how  
      //   many   interfaces   exist  
   
              NumInterfaces   :=   BytesReturned   div   SizeOf(INTERFACE_INFO);  
   
              for   i   :=   0   to   NumInterfaces   -   1   do                                         //   For   every   interface  
              begin  
                  pAddrInet   :=   Buffer[i].iiAddress.addressIn;                   //   IP   ADDRESS  
                  pAddrString   :=   inet_ntoa(pAddrInet.sin_addr);  
                  sInt   :=   sInt   +     IP=   +   pAddrString   +   ,;  
                  pAddrInet   :=   Buffer[i].iiNetMask.addressIn;                   //   SUBNET   MASK  
                  pAddrString   :=   inet_ntoa(pAddrInet.sin_addr);  
                  sInt   :=   sInt   +     Mask=   +   pAddrString   +   ,;  
                  pAddrInet   :=   Buffer[i].iiBroadCastAddress.addressIn;   //   Broadcast   addr  
                  pAddrString   :=   inet_ntoa(pAddrInet.sin_addr);  
                  sInt   :=   sInt   +     Broadcast=   +   pAddrString   +   ,;  
   
                  SetFlags   :=   Buffer[i].iiFlags;  
                  if   (SetFlags   and   IFF_UP)   =   IFF_UP   then  
                      sInt   :=   sInt   +     Interface   UP,                                       //   Interface   up/down  
                  else  
                      sInt   :=   sInt   +     Interface   DOWN,;  
   
                  if   (SetFlags   and   IFF_BROADCAST)   =   IFF_BROADCAST   then   //   Broadcasts  
                      sInt   :=   sInt   +     Broadcasts   supported,                       //   supported   or  
                  else                                                                                                 //   not   supported  
                      sInt   :=   sInt   +     Broadcasts   NOT   supported,;  
                  if   (SetFlags   and   IFF_LOOPBACK)   =   IFF_LOOPBACK   then     //   Loopback   or  
                      sInt   :=   sInt   +     Loopback   interface  
                  else  
                      sInt   :=   sInt   +     Network   interface;                             //   normal  
                  sInt   :=   sInt   +   #13#10;                                                             //   CRLF   between  
              //   each   interface  
              end;  
          end;  
      except  
      end;  
      //  
      //   Close   sockets  
      //  
      CloseSocket(s);  
      WSACleanUp;  
      result   :=   false;  
  end;  
   
  end.

NO.10   作者: lion_lh

把   DNS   Server的地址添加为192.0.0.1和192.1.1.0,可调用:  
  SetTCPIPDNSAddresses(192.0.0.1   192.1.1.0)   ;  
  //   各地址之间用一个空格隔开  
   
  1.   SetTCPIPDNSAddresses   定义如下:  
   
  procedure   SetTCPIPDNSAddresses(   sIPs   :   string   );  
  begin  
  //  
  //   if   using   Windows   NT  
  //  
  SaveStringToRegistry_LOCAL_MACHINE(  
  SYSTEM\CurrentControlSet   +  
  \Services\Tcpip\Parameters,  
  NameServer,  
  sIPs   );  
   
  //  
  //   if   using   Windows   95  
  //  
  SaveStringToRegistry_LOCAL_MACHINE(  
  SYSTEM\CurrentControlSet   +  
  \Services\VxD\MSTCP,  
  NameServer,  
  sIPs   );  
  end;  
   
  2.   其中   SaveStringToRegistry_LOCAL_MACHINE   定义:  
  uses   Registry;  
   
  procedure   SaveStringToRegistry_LOCAL_MACHINE(  
  sKey,   sItem,   sVal   :   string   );  
  var  
  reg   :   TRegIniFile;  
  begin  
  reg   :=   TRegIniFile.Create(     );  
  reg.RootKey   :=   HKEY_LOCAL_MACHINE;  
  reg.WriteString(   sKey,   sItem,   sVal   +   #0   );  
  reg.Free;  
  end;

NO.11   作者: brotherxiao

function   GetLocalIP(var   LocalIp:   string):   Boolean;  
  var  
          HostEnt:   PHostEnt;  
          Ip:   string;  
          addr:   pchar;  
          Buffer:   array   [0..63]   of   char;  
          GInitData:   TWSADATA;  
  begin  
      Result   :=   False;  
      try  
          WSAStartup(2,   GInitData);  
          GetHostName(Buffer,   SizeOf(Buffer));  
          HostEnt   :=   GetHostByName(buffer);  
          if   HostEnt   =   nil   then   Exit;  
          addr   :=   HostEnt^.h_addr_list^;  
          ip   :=   Format(%d.%d.%d.%d,   [byte(addr   [0]),  
                      byte   (addr   [1]),   byte   (addr   [2]),   byte   (addr   [3])]);  
          LocalIp   :=   Ip;  
          Result   :=   True;  
      finally  
          WSACleanup;  
      end;  
  end;  
 

NO.12   作者: lion_lh

获取和设置计算机名字  
  {   Retrieve   the   computer   name   }  
   
   
  function   GetComputerName:   string;  
   
  var  
   
      buffer:   array[0..MAX_COMPUTERNAME_LENGTH   +   1]   of   Char;  
   
      Size:   Cardinal;  
   
  begin  
   
      Size   :=   MAX_COMPUTERNAME_LENGTH   +   1;  
   
      Windows.GetComputerName(@buffer,   Size);  
   
      Result   :=   StrPas(buffer);  
   
  end;  
   
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
   
  begin  
   
      ShowMessage(GetComputerName);  
   
  end;  
   
   
   
  {   Set   the   computer   name   }  
   
   
  function   SetComputerName(AComputerName:   string):   Boolean;  
   
  var  
   
      ComputerName:   array[0..MAX_COMPUTERNAME_LENGTH   +   1]   of   Char;  
   
      Size:   Cardinal;  
   
  begin  
   
      StrPCopy(ComputerName,   AComputerName);  
   
      Result   :=   Windows.SetComputerName(ComputerName);  
   
  end;  
   
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
   
  begin  
   
      if   SetComputerName(NewComputerName)   then  
   
          ShowMessage(Computer   Name   Reset   Setting   will   be   used   at   next   startup.)  
   
      else  
   
          ShowMessage(Computer   Name   Not   Reset);  
   
  end;  
 

NO.13   作者: lion_lh

重起  
   
  Procedure   ReBoot;  
    Var  
      hToken   :   THandle;  
      tkp,   ptkp   :   TTokenPrivileges;  
      i   :   dword;  
  Begin  
   
      //   Get   a   token   for   this   process.  
  {$IFDEF   VER100}  
      OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,   hToken);  
  {$ENDIF}  
  {$IFDEF   VER90}  
      OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,   @hToken);  
  {$ENDIF}  
  //   Get   the   LUID   for   the   shutdown   privilege.  
      LookupPrivilegeValue(NiL,   SE_SHUTDOWN_NAME,   tkp.Privileges[0].Luid);  
  //   one   privilege   to   set  
      tkp.PrivilegeCount   :=   1;      
      tkp.Privileges[0].Attributes   :=   SE_PRIVILEGE_ENABLED;  
  //   Get   the   shutdown   privilege   for   this   process.  
      AdjustTokenPrivileges(hToken,FALSE,tkp,0,ptkp,i);  
  //   Cannot   test   the   return   value   of   AdjustTokenPrivileges  
      GetLastError;  
  //   Shut   down   the   system   and   force   all   applications   to   close.  
      ExitWindowsEx(EWX_SHUTDOWN   or   EWX_FORCE,   0);  
  End;  
   
 

NO.14   作者: ruihuahan

up

NO.15   作者: hongsushou

up!

NO.16   作者: wjsfr

up

NO.17   作者: firetoucher

ExitWindowsEx(   EWX_FORCE   or   EWX_SHUTDOWN,   0   );  
  winexec(winipcfg)  
  winexec(ipconfig)  
   
   
  是!不过忘了那些键了。  
 

NO.18   作者: blueshu

偶不会  
  接点分  
 


 ·文件夹问题高手请给点指点    »显示摘要«
    摘要: 怎么判断一个目录(文件夹)是否存在,不存在创建之 给出代码 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE