Private  Declare  Function  SetPriorityClass  Lib    "kernel32  "  (ByVal  hProcess  As  Long,  ByVal  dwPriorityClass  As  Long)  As  Long  
       Const  NORMAL_PRIORITY_CLASS  =  &H20  '正常优先级  
       Const  IDLE_PRIORITY_CLASS  =  &H40  '优先级  
       Const  HIGH_PRIORITY_CLASS  =  &H80  '高优先级  
       Const  REALTIME_PRIORITY_CLASS  =  &H100  '实时优先级  
 
Private Sub Command1_Click()
  Dim ret As Long, hnd As Long
  hnd = GetCurrentProcessId()
  txtPassword.Text = hnd
  ret = SetPriorityClass(hnd, HIGH_PRIORITY_CLASS)
  Text3.Text = ret
End Sub这ret里返回的总是0,在任务管理器里面查看进程也没有被改变优先级,不知道哪里出错了。  
 
2楼兄弟的方法不能用,我是在2000和xp里面都要用的。

解决方案 »

  1.   

    ret = GetPriorityClass(hProcess)
    连这个也用不成功,奇怪。
      

  2.   

    // hnd = GetCurrentProcessId()
      txtPassword.Text = hnd
      ret = SetPriorityClass(hnd, HIGH_PRIORITY_CLASS)你的程序中hnd为进程id,而SetPriorityClass要求它的第一个参数为进程句柄,修改为:
    hnd = GetCurrentProcess()
      txtPassword.Text = hnd
      ret = SetPriorityClass(hnd, HIGH_PRIORITY_CLASS)
    SetPriorityClass的说明:
    【VB声明】
      Private Declare Function SetPriorityClass Lib "kernel32" Alias "SetPriorityClass" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long【说明】
        设置一个进程的优先级别 【返回值】
      Long,进程的优先级,零表示失败。会设置GetLastError 【参数表】
      hProcess -------  Long,指定一个进程句柄  dwPriorityClass -  Long,指定一个新优先级类的一个常数,请参考CreateProcess函数
      

  3.   

    Option ExplicitConst NORMAL_PRIORITY_CLASS = &H20     '正常优先级
    Const IDLE_PRIORITY_CLASS = &H40     '优先级
    Const HIGH_PRIORITY_CLASS = &H80     '高优先级
    Const REALTIME_PRIORITY_CLASS = &H100     '实时优先级
    Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long
    Private Declare Function GetPriorityClass Lib "kernel32" (ByVal hProcess As Long) As Long
    Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
    Private Sub Form_Load()
        Dim hProcess As Long
        hProcess = GetCurrentProcess
        Dim ret As Long
        ret = SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)
        MsgBox ret
        MsgBox "Current Priority Class:" + Str$(GetPriorityClass(hProcess))
    End Sub
      

  4.   

    晕,我也想过这个进程ID和进程句柄是不是同一个东西的问题,可是搞来搞去没搞明白,多谢 rainstormmaster(暴风雨 v2.0)  兄弟教我。再一个问题,如何用已知进程ID得到进程句柄????
      

  5.   

    //再一个问题,如何用已知进程ID得到进程句柄????
    用OpenProcess这个api函数即可