·求肋:在运行中,点击一个按钮退出系统和关闭WIN2000的代码? 点击:1501 | 回复:14



NNWGL

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 39回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2005年3月30日
发表于:2006-09-19 10:31:00
楼主
·求肋:在运行中,点击一个按钮退出系统和关闭WIN2000的代码?



NNWGL

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 39回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2005年3月30日
发表于:2006-09-19 10:33:00
1楼
是IFIX3.5的版本,同时请问一下哪里有IFIX3.5的SP1下载呀??

pqsh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 291回
  • 年度积分:0
  • 历史总积分:432
  • 注册:2006年9月20日
发表于:2006-09-19 15:05:00
2楼
试试脚本:shell("shutdown -s")
具体忘了ifix执行系统命令是不是shell,还是system,你自己找找.但shutdown在XP有是有效的,不知2000怎么样.


-------------------------------------------------------------网络自由乃兄弟我所独创--大佬:pqshpqsh@gmail.com

NNWGL

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 39回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2005年3月30日
发表于:2006-09-20 16:42:00
3楼
试了一下,不行呀!不知道有谁指点一下!

NNWGL

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 39回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2005年3月30日
发表于:2006-09-20 17:10:00
4楼
to:pqsh
试过了,不行!有谁知道?能公开一下吗?

lostcity.blog.zj.com

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 246回
  • 年度积分:0
  • 历史总积分:350
  • 注册:2005年7月11日
发表于:2006-09-21 23:47:00
5楼
1、到xp系统拷贝C:\WINDOWS\system32\shutdown.exe到win2k的C:\WINNT\system32\中。调用上面兄台的shell("shutdown -s")。

2、使用api
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long 
Private Const EWX_LOGOFF = 0 
Private Const EWX_SHUTDOWN = 1 
Private Const EWX_REBOOT = 2 
Private Const EWX_FORCE = 4 

Private Sub Command1_Click() 

Dim iAns As Integer 
Dim rVal As Long 

' Ask if the user is sure they want to exit. 
iAns = MsgBox("Are you sure you want to exit windows?", vbQuestion Or vbYesNo, "Exit Windows") 
If iAns = vbYes Then 
rVal = ExitWindowsEx(EWX_SHUTDOWN, 0&) 
End If 

End Sub

疯了

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 121回
  • 年度积分:0
  • 历史总积分:981
  • 注册:2005年11月05日
发表于:2006-09-22 13:25:00
6楼
麻烦,如果在紫金桥软件中就是简单的脚本函数
exit(4);
就搞定了.
具体函数用法如下:
Exit

格式

Exit(Flag)

说明

关闭RealInfo系统,或Windows系统。

参数

Flag:整型,退出标志。取值如下:

0:退出画面程序。

1:画面窗口最小化。

2:退出所有RealInfo程序。

3:重新启动Windows系统。

4:关闭Windows系统。

示例

Exit(2); 退出所有RealInfo程序。

昆仑摩勒

  • 精华:1帖
  • 求助:1帖
  • 帖子:32帖 | 446回
  • 年度积分:0
  • 历史总积分:1058
  • 注册:2004年11月22日
发表于:2006-09-25 15:53:00
7楼
好关闭不了2000呢

昆仑摩勒

  • 精华:1帖
  • 求助:1帖
  • 帖子:32帖 | 446回
  • 年度积分:0
  • 历史总积分:1058
  • 注册:2004年11月22日
发表于:2006-09-25 15:56:00
8楼
发一个一键退出ifix的脚本
Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal _
hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As _
Any)

Private Declare Function Findwindow& Lib "user32" Alias "FindWindowA" (ByVal _
lpClassName As String, ByVal lpWindowName As String)

Private Sub cmdShutdowniFix_Click()

    Dim lResult As Long
    Dim iResult
    Dim hw&, cnt&
    hw& = Findwindow(vbNullString, "iFix Startup - 演示方式")
    cnt& = SendMessage(hw&, &H10, 0, 0&)

End Sub

昆仑摩勒

  • 精华:1帖
  • 求助:1帖
  • 帖子:32帖 | 446回
  • 年度积分:0
  • 历史总积分:1058
  • 注册:2004年11月22日
发表于:2006-09-28 09:26:00
9楼
发一个退出windows2000的代码  这下你该满足了吧 嘿嘿 
Option Explicit

'*******************************************************************
'Shut Down Windows
'Free Softwear
'Programed By Sproll
'You Can Communicat Him With E-Mail sproll@163.com
'
'*******************************************************************

Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges AsLong, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As Long, ReturnLength As Long) As Long
Private Declare Function GetTokenInformation Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal TokenInformationClass As Long, TokenInformation As Any, ByVal TokenInformationLength As Long, ReturnLength As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, ByRef lpLuid As LARGE_INTEGER) As Long

Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Const EWX_LOGOFF = 0             '注销当前用户
Private Const EWX_POWEROFF = 8           '关闭系统并关闭电源
Private Const EWX_SHUTDOWN = 1           '关闭系统使之能安全关闭电源
Private Const EWX_REBOOT = 2             '关闭系统并重启
Private Const EWX_FORCE = 4              '应用程序强制关闭
Private Const EWX_FORCEIFHUNG = 16       '如果应用程序已挂起,强制关闭

Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const SE_PRIVILEGE_ENABLED_BY_DEFAULT = &H1
Private Const SE_PRIVILEGE_USED_FOR_ACCESS = &H80000000

Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY_SOURCE = &H10
Private Const TOKEN_QUERY = &H8

Private Const ANYSIZE_ARRAY = 1

Private Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
  
Private Const PROCESS_SET_INFORMATION = &H200
Private Const PROCESS_QUERY_INFORMATION = &H400

Private Type LARGE_INTEGER
    lowpart As Long
    highpart As Long
End Type

Private Type LUID
    lowpart As Long
    highpart As Long
End Type
Private Type LUID_AND_ATTRIBUTES
        pLuid As LUID
        Attributes As Long
End Type
Private Type TOKEN_PRIVILEGES
    PrivilegeCount As Long
    Privileges(0) As LUID_AND_ATTRIBUTES
End Type



Private Sub Command1_Click()
Dim lAPIReturn As Long

Dim tTOKPRI As TOKEN_PRIVILEGES
Dim tLUID As LUID
Dim tLarInt As LARGE_INTEGER
Dim lRequired As Long
Dim hTokHan As Long
Dim hProcess As Long

If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tLarInt) = 0 Then
  MsgBox "Get LUID error!", vbOKOnly, "Error"
  Exit Sub
End If

tLUID.highpart = tLarInt.highpart
tLUID.lowpart = tLarInt.lowpart

tTOKPRI.PrivilegeCount = 1
tTOKPRI.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
tTOKPRI.Privileges(0).pLuid = tLUID

hProcess = GetCurrentProcess()
lAPIReturn = OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hTokHan)
lAPIReturn = AdjustTokenPrivileges(hTokHan, 0, tTOKPRI, Len(tTOKPRI), 0, 0)
' lAPIReturn = ExitWindowsEx(EWX_LOGOFF, 0)
' lAPIReturn = ExitWindowsEx(EWX_SHUTDOWN, 0)
' lAPIReturn = ExitWindowsEx(EWX_POWEROFF, 0)
' lAPIReturn = ExitWindowsEx(EWX_REBOOT, 0)
' lAPIReturn = ExitWindowsEx(EWX_FORCE, 0)
lAPIReturn = ExitWindowsEx(EWX_REBOOT, 0)  '关键之处就在这里了,想要做什么随你便了
If lAPIReturn = 0 Then
  MsgBox "Function calling error!", vbOKOnly, "错误"
End If
  
lAPIReturn = CloseHandle(hTokHan)
End Sub

昆仑摩勒

  • 精华:1帖
  • 求助:1帖
  • 帖子:32帖 | 446回
  • 年度积分:0
  • 历史总积分:1058
  • 注册:2004年11月22日
发表于:2006-09-28 09:27:00
10楼
俺已经测试过了,很好用,感谢Sproll

小龙俺

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 228回
  • 年度积分:0
  • 历史总积分:339
  • 注册:2005年6月16日
发表于:2008-10-30 20:51:17
11楼

既然很不错,那我借用下。哈哈!

死亡骑士

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 1774回
  • 年度积分:0
  • 历史总积分:2630
  • 注册:2006年7月17日
发表于:2008-10-31 13:30:09
12楼
不错

deng_lp

  • 精华:5帖
  • 求助:0帖
  • 帖子:65帖 | 2669回
  • 年度积分:0
  • 历史总积分:2876
  • 注册:2001年6月19日
发表于:2008-11-02 08:44:33
13楼
呵呵,还有Application.exit 函数,见电子书

club

  • 精华:0帖
  • 求助:0帖
  • 帖子:47帖 | 739回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-11-14 14:37:47
14楼
学习中.......................

热门招聘
相关主题

官方公众号

智造工程师