想在我的程序退出时给另外一台机器发送一个关机命令(两台win98),请给个例子说明一下,谢谢!

解决方案 »

  1.   

    1.首先要求另一台机器的主板支持远程启动,可以启动另一台机器;2.在win98下关机可太容易了,在另一台机器上运行一个TCP/IP的客户端或
    服务器端,具有收到某消息就关机的功能,即可!!!!!!!!!!
    Good Luck
      

  2.   

    我现在不要求远程启动,现在就是希望可以远程关机,win98下用哪些函数可以实现关机?
      

  3.   

    用系统命令,执行rundll32.exe user.exe,exitwindows
      

  4.   

    API函数:ExitWindows()或InitalizeSystemShutDown()
      

  5.   

    98下不用第三方软件不行。NT可以看看。
    http://vip.6to23.com/NowCan1/tech/netshutd.htm
      

  6.   

    使用ExitWindows()或InitalizeSystemShutDown()这两个函数都不能把计算机的电源关掉,有什么办法可以把电源也关掉?
      

  7.   

    98下可用system("rundll32.exe user.exe,exitwindows");
      

  8.   

    经常遇到用ExitWindowsEx在Windows2000下无法关机的情况,其实这是由于权限不够造成的,提高权限就可解决问题。HANDLE hToken;
    TOKEN_PRIVILEGES tkp,tkpNew;
    LUID int64LpUid;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)
    LookupPrivilegeValue(NULL,"SeShutdownPrivilege",&int64LpUid);
    tkp.PrivilegeCount=1;
    tkp.Privileges[0].Liud=int64LpUid;
    tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(tkp),&tkpNew,&dwSize);然后应该可以用ExitWindowsEx关机了
      

  9.   

    可以通过Socket 先发给远程机一个信号,如 BYTE signal = 0xff;
    远程机接到后,辨认出为关机命令则执行关机操作: // get system version: osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&osver);
    VersionInfo = osver.dwPlatformId;
    if ( osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
    bIsNt = FALSE;
    else if( osver.dwPlatformId == VER_PLATFORM_WIN32_NT )
    bIsNt = TRUE; if (bIsNt )
    {
    HANDLE hToken; 
    TOKEN_PRIVILEGES tkp; 

    // Get a token for this process. 
    if (!OpenProcessToken(GetCurrentProcess(), 
    TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
    AfxMessageBox("OpenProcessToken"); 

    // Get the LUID for the shutdown privilege. 

    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
    &tkp.Privileges[0].Luid); 

    tkp.PrivilegeCount = 1;  // one privilege to set    
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 

    // Get the shutdown privilege for this process. 

    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
    (PTOKEN_PRIVILEGES)NULL, 0); 

    // Cannot test the return value of AdjustTokenPrivileges. 

    if (GetLastError() != ERROR_SUCCESS) 
    AfxMessageBox("AdjustTokenPrivileges"); 
    }
    //now  we  can reboot;
    ExitWindowsEx(EWX_LOGOFF|EWX_REBOOT,0);
      

  10.   

    应该是
    ExitWindowsEx(EWX_POWEROFF,0);