Windows Shutdown API

if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
      return 0;
      LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
      tkp.PrivilegeCount=1;
      tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
      AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);

 
  InitiateSystemShutdown(
    NULL,
    NULL,
    0,
    TRUE,
    FALSE      
    );

---------------

.386p
.model flat,stdcall
option casemap:none
include C:/masm32/bin/ALLDLL

DlgProc proto :dword,:dword,:dword,:dword
.data
hInstance dd ?
privilege db "SeShutdownPrivilege",0
.code
AdjustToken proc
   local    hdlProcessHandle
   local    hdlTokenHandle
   local    @tp:TOKEN_PRIVILEGES
   local    lBufferNeeded
   local    @os:OSVERSIONINFO
   mov    @os.dwOSVersionInfoSize,sizeof OSVERSIONINFO
   invoke    GetVersionExA,addr @os
   cmp    @os.dwPlatformId,VER_PLATFORM_WIN32_NT
   jne    @F
   invoke    GetCurrentProcess
   mov    hdlProcessHandle,eax
   invoke    OpenProcessToken,hdlProcessHandle,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,addr hdlTokenHandle
   invoke    LookupPrivilegeValue,0,addr privilege,addr @tp.Privileges.Luid
   mov    @tp.PrivilegeCount,1
   mov    @tp.Privileges.Attributes,SE_PRIVILEGE_ENABLED
   invoke    AdjustTokenPrivileges,hdlTokenHandle,FALSE,addr @tp,sizeof TOKEN_PRIVILEGES,addr @tp,addr lBufferNeeded
  @@:    ret
AdjustToken endp
;===========================================
ResetNow proc iCode
   local buf[256],pClose,pAdjust,hNtDll
   invoke LoadLibrary,CTXT("NtDll.dll")
   .if eax
       mov hNtDll,eax
       invoke GetProcAddress,hNtDll,CTXT("ZwShutdownSystem")
       mov pClose,eax
       invoke GetProcAddress,hNtDll,CTXT("RtlAdjustPrivilege")
       mov pAdjust,eax
       .if eax && pClose
           lea eax,buf
           push eax
           push 1
           push 1
           push 13H
           mov eax,pAdjust
           call eax
           .if eax==0C000007CH
               lea eax,buf
               push eax
               push 0
               push 1
               push 13H
               mov eax,pAdjust
               call eax
           .endif
           push iCode
           mov eax,pClose
           call eax
       .endif
   .endif
   ret
ResetNow endp
;===============关机========================
Close_Click proc
   invoke ResetNow,0
   ret
Close_Click endp
;===============注销========================
Relog_Click proc
   invoke    AdjustToken
   invoke    ExitWindowsEx,EWX_LOGOFF or EWX_FORCE,0FFFFh
   ret
Relog_Click endp
;===============重新启动====================
cq_Click proc
   invoke ResetNow,1
   ret
cq_Click endp
;===============待机========================
Standby_Click proc
   invoke    AdjustToken

   invoke    SetSystemPowerState,1,1
   ret
Standby_Click endp

;===============休眠========================
xm_Click proc
   invoke    AdjustToken
   invoke    SetSystemPowerState,0,1
   ret
xm_Click endp
;-----------------------------------------------------------------------------------------------------------------
start: ;程序入口
   invoke GetModuleHandle,0
   mov hInstance,eax
    invoke DialogBoxParam,hInstance,9999,0,addr DlgProc,0
   invoke ExitProcess,eax
;-----------------------------------------------------------------------------------------------------------------
DlgProc proc hWnd,uMsg,wParam,lParam
mov eax,uMsg
.IF eax==WM_INITDIALOG
    invoke LoadIcon,hInstance,1001
    invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
.ELSEIF uMsg==WM_CLOSE
    MsgBox 0,"欢迎下次在来,谢谢光临。","关于",48
   invoke EndDialog,hWnd,0    
.ELSEIF eax==WM_COMMAND
    mov edx,hWnd
   mov eax,wParam
   .if eax==1009
       invoke Close_Click
   .elseif eax==1010
       invoke Relog_Click
   .elseif eax==1011
       invoke Standby_Click
   .elseif eax==1012
          invoke xm_Click
   .elseif eax==1013
        invoke cq_Click
    .elseif eax==1014
        invoke Sleep,1000
        invoke SendMessage,hWnd,WM_SYSCOMMAND,SC_MONITORPOWER,2

   .endif

.ELSE
   xor eax,eax
   ret
.ENDIF
mov eax,TRUE
ret
DlgProc endp
;-----------------------------------------------------------------------------------------------------------------
end start

.386
.model flat, stdcall ;32 bit memory model
option casemap :none ;case sensitive

include res/shutdown.inc
.data
  szMutex db "_Me?",0
.data?
   g_hInst           dd ?
   g_hDatePicker    dd ?
   g_hTimePicker    dd ?
   g_hCombobar       dd ?
   g_hTime           dd ?
   g_hFont           dd ?
   g_systime    SYSTEMTIME <?>        ;保存设定关机的时间
   g_nid        NOTIFYICONDATA <?>
   g_bTiming       dd ?            ;标志是否开始定时
   g_bSysNT       dd ?            ;是不是 NT 系统
   g_iCount       dd ?
   icex        INITCOMMONCONTROLSEX <?>
   g_buf           db 128 dup (?)
   
   g_hIconMain         dd ?
   g_hIconStart     dd ?
   hMutex         dd ?
   WM_TASKBARCREATE dd ?

.code

start:

  invoke GetModuleHandle,NULL
  mov    g_hInst,eax
  invoke CreateMutex,NULL,TRUE,offset szMutex
  mov hMutex,eax
  invoke GetLastError         ; 获得最后发生的错误编号
  cmp eax,ERROR_ALREADY_EXISTS   ;已经存在
  jz @F
    invoke    RtlZeroMemory, addr icex, sizeof INITCOMMONCONTROLSEX
    mov    icex.dwSize, sizeof INITCOMMONCONTROLSEX
    mov    icex.dwICC, ICC_DATE_CLASSES
    invoke    InitCommonControlsEx, addr icex
    invoke    DialogBoxParam,g_hInst,DLG_MAIN,NULL,addr MainDlgProc,NULL
  @@:
   invoke    ExitProcess,0

;########################################################################

MainDlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
   LOCAL    systime : SYSTEMTIME

   mov    eax,uMsg
   .if eax==WM_INITDIALOG
       invoke    _Init, hWnd

   .elseif eax==WM_COMMAND
       mov    eax, wParam
       and    eax, 0ffffh
       .if eax==IDC_APPLY    ;“应用”按钮
           mov    g_bTiming, TRUE

           ;定时,每隔 1000 毫秒产生一个 WM_TIMER 消息
           invoke    SetTimer, hWnd, ID_TIMER1, 1000, NULL

           invoke    SendMessage, g_hDatePicker, DTM_GETSYSTEMTIME, 0, addr systime
           invoke    SendMessage, g_hTimePicker, DTM_GETSYSTEMTIME, 0, addr g_systime
           m2m    g_systime.wYear, systime.wYear
           m2m    g_systime.wMonth, systime.wMonth
           m2m    g_systime.wDay, systime.wDay
           pushad    ;保存寄存器
           movzx    eax, g_systime.wYear
           movzx    ebx, g_systime.wMonth
           movzx    ecx, g_systime.wDay
           movzx    edx, g_systime.wHour
           movzx    esi, g_systime.wMinute
           movzx    edi, g_systime.wSecond
           invoke    wsprintf, addr g_buf, CTXT(" [%d-%d-%d %d:%d:%d]"), eax, ebx, ecx, edx, esi, edi
           popad
           invoke    SetWindowText, g_hTime, addr g_buf
           invoke    _ModifyTrayIcon, hWnd, 1
       .elseif eax==IDC_MINIMIZE    ;“最小化”按钮
           invoke    ShowWindow, hWnd, SW_HIDE
       .endif
   
   ;每隔一秒就判断一次是否到了时间关机
   .elseif eax==WM_TIMER
       invoke    GetLocalTime, addr systime
       .if !g_bTiming
           jmp    lexit
       .endif
       movzx    eax, g_systime.wYear
       .if ax != systime.wYear        ;比较年
           jmp    lexit
       .endif
       movzx    eax, g_systime.wMonth
       .if ax != systime.wMonth    ;比较月
           jmp    lexit
       .endif
       movzx    eax, g_systime.wDay
       .if ax != systime.wDay        ;比较日
           jmp    lexit
       .endif
       movzx    eax, g_systime.wHour
       .if ax != systime.wHour        ;比较小时
           jmp    lexit
       .endif
       movzx    eax, g_systime.wMinute
       .if ax != systime.wMinute    ;比较分钟
           jmp    lexit
       .endif
       
       invoke    KillTimer, hWnd, ID_TIMER1
       invoke    DialogBoxParam,g_hInst,DLG_COUNT,NULL,addr CountDlgProc,NULL
       .if eax==0
           jmp    lkill
       .endif

       invoke    SendMessage, g_hCombobar, CB_GETCURSEL, 0, 0
       .if eax==0
           invoke    _ShutDown, 0    ;关机
       .elseif eax==1
           invoke    _ShutDown, 1    ;休眠
       .endif
   lkill:
       invoke    RtlZeroMemory, addr g_systime, sizeof SYSTEMTIME
       mov    g_bTiming, FALSE
       invoke    RtlZeroMemory, addr g_buf, 128
       invoke    SetWindowText, g_hTime, addr g_buf
       invoke    _ModifyTrayIcon, hWnd, 2
   lexit:
   
   ;每次激活窗口时获得正确的时间,填充到时间框
   .elseif eax==WM_ACTIVATE
       invoke    GetLocalTime, addr systime
       invoke    SendMessage, g_hDatePicker, DTM_SETSYSTEMTIME, 0, addr systime
       invoke    SendMessage, g_hTimePicker, DTM_SETSYSTEMTIME, 0, addr systime

   .elseif eax==WM_PAINT
       invoke    _Paint, hWnd

   .elseif uMsg==WM_CTLCOLORSTATIC
       invoke GetDlgCtrlID, lParam
       .if eax==IDC_TIME
           invoke    SetTextColor, wParam, COLOR(255,0,0)
           invoke    GetSysColor, COLOR_BTNFACE
           push    eax
           invoke    SetBkColor, wParam, eax
           call    CreateSolidBrush
           ret
       .else
           mov   eax,FALSE
           ret
       .endif

   .elseif eax==WM_ICONNOTIFY
       mov    eax, lParam
       .if eax==WM_LBUTTONDOWN
           invoke    ShowWindow, hWnd, SW_SHOW
           invoke    SetForegroundWindow, hWnd
       .endif
   
   .elseif eax==WM_TASKBARCREATE
       invoke    _ModifyTrayIcon, hWnd, 2

   .elseif eax==WM_CLOSE
       invoke    Shell_NotifyIcon, NIM_DELETE, addr g_nid
       invoke    KillTimer, hWnd, ID_TIMER1
       invoke    EndDialog, hWnd, 0
   .else
       mov    eax, FALSE
       ret
   .endif
   mov    eax, TRUE
   ret
MainDlgProc endp

;对话框初始化过程
_Init proc hWnd:HWND
   LOCAL    systime : SYSTEMTIME
   LOCAL    osvi : OSVERSIONINFO
   
   pushad
   
   invoke    LoadIcon, g_hInst, IDI_START
   mov    g_hIconStart, eax
   invoke    LoadIcon, g_hInst, IDI_MAIN
   mov    g_hIconMain, eax
   invoke    SendMessage, hWnd, WM_SETICON, ICON_SMALL, eax
   invoke SetWindowPos, hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE
   
   ;判断操作系统
   invoke    RtlZeroMemory, addr osvi, sizeof OSVERSIONINFO
   mov    osvi.dwOSVersionInfoSize, sizeof OSVERSIONINFO
   invoke    GetVersionEx, addr osvi
   .if osvi.dwPlatformId==VER_PLATFORM_WIN32_NT
       mov    g_bSysNT, TRUE
   .else
       mov    g_bSysNT, FALSE
   .endif
   
   invoke    _ModifyTrayIcon, hWnd, 0

   invoke    GetDlgItem, hWnd, IDC_DATEPICKER
   mov    g_hDatePicker, eax
   invoke    GetDlgItem, hWnd, IDC_TIMEPICKER
   mov    g_hTimePicker, eax
   invoke    GetDlgItem, hWnd, IDC_TIME
   mov    g_hTime, eax
   
   ;取得当前时间,设置时间框
   invoke    GetLocalTime, addr systime
   invoke    SendMessage, g_hDatePicker, DTM_SETSYSTEMTIME, 0, addr systime
   invoke    SendMessage, g_hTimePicker, DTM_SETSYSTEMTIME, 0, addr systime
   invoke    RtlZeroMemory, addr g_systime, sizeof SYSTEMTIME
   
   ;创建一个字体,后面绘制左下角的标志时用到
   invoke    CreateFont, 16, 6, 0, 0, FW_NORMAL, FALSE, FALSE, 0, 0, 0, 0, 0, 0, CTXT("新宋体")
   mov    g_hFont, eax
   
   ;填充组合框,设定“休眠”和“关机”两个选项
   invoke    GetDlgItem, hWnd, IDC_SHUTDOWNTYPE
   mov    g_hCombobar, eax
   invoke    SendMessage, g_hCombobar, CB_ADDSTRING, 0, CTXT("关机")
   .if g_bSysNT
       invoke    SendMessage, g_hCombobar, CB_ADDSTRING, 0, CTXT("休眠")
   .endif
   invoke    SendMessage, g_hCombobar, CB_SETCURSEL, 0, 0

   ;没有设定时间
   mov    g_bTiming, FALSE
   
   ;Shell 在创建 Taskbar 时会发出 TaskbarCreated 消息
   invoke    RegisterWindowMessage, CTXT("TaskbarCreated")
   mov    WM_TASKBARCREATE, eax
   
   popad
   ret
_Init endp

;在左下角画一个标志
_Paint proc hWnd:HWND
   LOCAL    hdc : HDC
   LOCAL    ps : PAINTSTRUCT
   LOCAL    rect : RECT
   LOCAL    pt : POINT
   
   pushad
   ;根据最左边的一个控件和最下边的一个控件来计算左下角的位置
   invoke    BeginPaint, hWnd, addr ps
   mov    hdc, eax
   invoke    GetDlgItem, hWnd, IDC_GROUP
   mov    ebx, eax
   invoke    GetWindowRect, ebx, addr rect
   mov    ebx, rect.left
   invoke    GetDlgItem, hWnd, IDC_MINIMIZE
   mov    esi, eax
   invoke    GetWindowRect, esi, addr rect
   m2m    pt.x, rect.left
   m2m    pt.y, rect.bottom
   invoke    ScreenToClient, hWnd, addr pt
   m2m    rect.right, pt.x
   m2m    rect.bottom, pt.y
   m2m    pt.x, ebx
   m2m    pt.y, rect.top
   invoke    ScreenToClient, hWnd, addr pt
   m2m    rect.left, pt.x
   m2m    rect.top, pt.y
   
   ;画上标志,用不同的颜色画两次,产生立体效果
   invoke    SetBkMode, hdc, TRANSPARENT
   invoke    SelectObject, hdc, g_hFont
   invoke    GetSysColor, COLOR_3DHILIGHT
   invoke    SetTextColor, hdc, eax
   invoke    DrawText, hdc, CTXT("版权所有 (C) 2000-2005 水手"), 27, addr rect, DT_VCENTER or DT_LEFT or DT_SINGLELINE
   invoke    GetSysColor, COLOR_3DSHADOW
   invoke    SetTextColor, hdc, eax
   invoke    OffsetRect, addr rect, -1, -1
   invoke    DrawText, hdc, CTXT("版权所有 (C) 2000-2005 水手"), 27, addr rect, DT_VCENTER or DT_LEFT or DT_SINGLELINE
   
   invoke    EndPaint, hWnd, addr ps
   popad
   ret
_Paint endp

;关机判断函数
_ShutDown proc iflag:DWORD
   pushad
   .if g_bSysNT    ;Windows NT/2000/XP
       .if iflag==0
           ;关机
        invoke ResetNow,6
       .else   ;休眠
           invoke ResetNow,3            
       .endif

   .else        ;Windows 98/95;关机
       invoke    ExitWindowsEx, EWX_SHUTDOWN+EWX_FORCE+EWX_POWEROFF, 0    
   .endif

   popad
   ret
_ShutDown endp

CountDlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
   mov    eax, uMsg
   .if eax==WM_INITDIALOG
       invoke SetWindowPos, hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE
       mov    g_iCount, 15
       invoke    SetTimer, hWnd, ID_TIMER2, 1000, NULL
       invoke    SetDlgItemInt, hWnd, IDC_COUNT, g_iCount, FALSE
   
   .elseif eax==WM_COMMAND
       mov    eax, wParam
       and    eax, 0ffffh
       .if eax==IDC_START
           invoke    KillTimer, hWnd, ID_TIMER2
           invoke    EndDialog, hWnd, 1
       .elseif eax==IDC_CANCEL
           invoke    KillTimer, hWnd, ID_TIMER2
           invoke    EndDialog, hWnd, 0
       .endif
   
   .elseif eax==WM_TIMER
       dec    g_iCount
       invoke    SetDlgItemInt, hWnd, IDC_COUNT, g_iCount, FALSE
       .if g_iCount==0
           invoke    KillTimer, hWnd, ID_TIMER2
           invoke    EndDialog, hWnd, 1
       .endif
   
   .elseif eax==WM_CTLCOLORSTATIC
       invoke GetDlgCtrlID, lParam
       .if eax==IDC_COUNT
           invoke    SetTextColor, wParam, COLOR(255,0,0)
           invoke    GetSysColor, COLOR_BTNFACE
           push    eax
           invoke    SetBkColor, wParam, eax
           call    CreateSolidBrush
           ret
       .else
           mov   eax,FALSE
           ret
       .endif
   .elseif eax==WM_CLOSE
       invoke    KillTimer, hWnd, ID_TIMER2
       invoke    EndDialog, hWnd, 1
   .else
       mov    eax, FALSE
       ret
   .endif
   mov    eax, TRUE
   ret
CountDlgProc endp

;添加程序图标到系统托盘中
_ModifyTrayIcon proc hWnd:HWND, iFlag:DWORD
   mov    g_nid.cbSize, sizeof NOTIFYICONDATA
   m2m    g_nid.hwnd, hWnd
   mov    g_nid.uID, 0
   mov    g_nid.uFlags, NIF_ICON+NIF_MESSAGE+NIF_TIP
   mov    g_nid.uCallbackMessage, WM_ICONNOTIFY
   
   .if iFlag==0   ;添加图标
       .if g_bTiming
           m2m    g_nid.hIcon, g_hIconStart
           invoke    lstrcpy, addr g_nid.szTip, CTXT("定时关机小工具 ")
           invoke    lstrcat, addr g_nid.szTip, addr g_buf
       .else
           m2m    g_nid.hIcon, g_hIconMain
           invoke    lstrcpy, addr g_nid.szTip, CTXT("定时关机小工具")
       .endif
       invoke    Shell_NotifyIcon, NIM_ADD, addr g_nid
   .elseif iFlag==1 ;修改图标,标志已定时
       m2m    g_nid.hIcon, g_hIconStart
       invoke    lstrcpy, addr g_nid.szTip, CTXT("定时关机小工具 ")
       invoke    lstrcat, addr g_nid.szTip, addr g_buf
       invoke    Shell_NotifyIcon, NIM_MODIFY, addr g_nid
   .elseif iFlag==2 ;修改图标,标志未定时
       m2m    g_nid.hIcon, g_hIconMain
       invoke    lstrcpy, addr g_nid.szTip, CTXT("定时关机小工具")
       invoke    Shell_NotifyIcon, NIM_MODIFY, addr g_nid
   .endif
   ret
_ModifyTrayIcon endp
;关机函数
ResetNow proc iCode
   local buf[256],pClose,pAdjust,hNtDll
   invoke LoadLibrary,CTXT("NtDll.dll")
   .if eax
       mov hNtDll,eax
       invoke GetProcAddress,hNtDll,CTXT("ZwInitiatePowerAction")
       mov pClose,eax
       invoke GetProcAddress,hNtDll,CTXT("RtlAdjustPrivilege")
       mov pAdjust,eax
       .if eax && pClose
           lea eax,buf
           push eax
           push 1
           push 1
           push 13H
           mov eax,pAdjust
           call eax
           .if eax==0C000007CH
               lea eax,buf
               push eax
               push 0
               push 1
               push 13H
               mov eax,pAdjust
               call eax
           .endif
                push 0
              push 0
              push 5
           push iCode   ;关机方式:3 - 休眠, 6 - 关机
           mov eax,pClose
           call eax
       .endif
   .endif
   ret
ResetNow endp
end start


#include "c:/masm32/include/resource.h"

;================================================================================
; 常量
;================================================================================

#define   DLG_MAIN         1000
#define   IDC_STATIC       -1
#define   IDC_GROUP       1001
#define   IDC_DATEPICKER     1002
#define   IDC_TIMEPICKER     1003
#define   IDC_SHUTDOWNTYPE   1004
#define   IDC_APPLY       1005
#define   IDC_TIME         1006
#define   IDC_MINIMIZE     1007

#define   DLG_COUNT       1100
#define   IDC_COUNT       1101
#define   IDC_CANCEL       1102
#define   IDC_START       1103

;================================================================================
; 图标资源
;================================================================================

#define   IDI_MAIN     900
#define   IDI_START     901
IDI_MAIN   ICON         "res//main.ico"
IDI_START   ICON         "res//start.ico"

1       24         "res//xptheme.xml"

;================================================================================
; 对话框资源
;================================================================================

DLG_MAIN DIALOG DISCARDABLE 0, 0, 202, 126
STYLE   DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "定时关机 v3.1   QQ:32301665"
FONT   9, "宋体"
BEGIN
  GROUPBOX     "设定关机参数",IDC_GROUP,9,9,184,86
  LTEXT       "日 期:",IDC_STATIC,20,28,28,8
  CONTROL       "DateTimePicker1",IDC_DATEPICKER,"SysDateTimePick32",
            DTS_RIGHTALIGN | DTS_UPDOWN | WS_TABSTOP,60,25,58,13
  LTEXT       "时 间:",IDC_STATIC,20,52,28,8
  CONTROL       "DateTimePicker1",IDC_TIMEPICKER,"SysDateTimePick32",
            DTS_RIGHTALIGN | DTS_UPDOWN | WS_TABSTOP | 0x8,60,50,58,
            13
  COMBOBOX     IDC_SHUTDOWNTYPE,129,25,52,33,CBS_DROPDOWNLIST |
            WS_VSCROLL | WS_TABSTOP
  PUSHBUTTON     "应用(&A)",IDC_APPLY,129,50,52,14
  LTEXT       "已设定:",IDC_STATIC,20,75,28,8
  LTEXT       "",IDC_TIME,62,75,121,8
  DEFPUSHBUTTON   "最小化(&M)",IDC_MINIMIZE,141,104,52,14
END

DLG_COUNT DIALOGEX 0, 0, 181, 85
STYLE   DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
EXSTYLE   WS_EX_TOOLWINDOW
CAPTION   "关机倒计时"
FONT     9, "宋体"
BEGIN
  ICON         IDI_MAIN,IDC_STATIC,11,13,21,21
  LTEXT       "马上就要关机,如果你不想关机的话请按“取消”按钮。",
            IDC_STATIC,51,11,120,17
  LTEXT       "倒计时:",IDC_STATIC,53,35,28,8
  LTEXT       "15",IDC_COUNT,87,35,14,8
  LTEXT       "秒",IDC_STATIC,104,35,10,8
  LTEXT       "",IDC_STATIC,9,52,164,1,SS_SUNKEN
  DEFPUSHBUTTON   "取消",IDC_CANCEL,129,64,44,14
  PUSHBUTTON     "立刻执行",IDC_START,9,64,44,14
END
1 VERSIONINFO
FILEVERSION 3,0,0,1
PRODUCTVERSION 3,0,0,1
FILEOS 0x10004
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
   BLOCK "080404b0"
   {
       VALUE "Comments", "定时关机 v3.1"
       VALUE "FileDescription", "定时关机 v3.1"
          VALUE "InternalName", "定时关机/0"
       VALUE "FileVersion", "3, 0, 0, 1"
       VALUE "LegalCopyright", "版权所有 (c) 2000-2005年 水手 "
          VALUE "ProductName", "定时关机"
          VALUE "LegalTrademarks", "金盾 acactus       QQ:32301665"
   }
}

BLOCK "VarFileInfo"
{
   VALUE "Translation", 0x0804 0x04B0
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值