Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7

    VB6 applicazione che imposta la priorita dei processi

    ciao a tutti ho queste righe di codice

    Option Explicit
    Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessId As Long) As Long
    Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
    Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) 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 SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

    Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
    Const TH32CS_SNAPPROCESS = 2
    Const MAX_PATH = 260


    Private Const NORMAL_PRIORITY_CLASS = &H20
    Private Const BELOW_NORMAL_PRIORITY_CLASS = 16384
    Private Const ABOVE_NORMAL_PRIORITY_CLASS = 32768
    Private Const IDLE_PRIORITY_CLASS = &H40
    Private Const HIGH_PRIORITY_CLASS = &H80
    Private Const REALTIME_PRIORITY_CLASS = &H100

    Private Const PROCESS_QUERY_INFORMATION As Long = &H400
    Private Const PROCESS_SET_INFORMATION As Long = &H200
    Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF

    Private Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
    End Type


    Function GetProcessId(Process As String) As Long
    Dim hSnapShot As Long, pe32 As PROCESSENTRY32
    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, ByVal 0)
    pe32.dwSize = Len(pe32)
    ProcessFirst hSnapShot, pe32
    Do
    If InStr(1, pe32.szExeFile, Process & vbNullChar, vbTextCompare) = 1 Then
    GetProcessId = pe32.th32ProcessID
    Exit Do
    End If
    Loop While ProcessNext(hSnapShot, pe32)
    CloseHandle hSnapShot
    End Function

    Sub Main()
    On Error GoTo errore
    Const fdwAccess1 As Long = PROCESS_QUERY_INFORMATION Or PROCESS_SET_INFORMATION
    Const fdwAccess2 As Long = PROCESS_ALL_ACCESS

    Dim strProcess As String
    Dim intPriority As Integer
    Dim a() As String
    Dim ProcessId As Long, hProcess As Long
    Dim lExitCode As Long, AppKill As Boolean
    a = Split(Command, " ")
    If IsNumeric(a(1)) And Len(a(0)) > 0 Then
    ProcessId = GetProcessId(a(0))

    If CInt(a(1)) <> -1 Then
    hProcess = OpenProcess(fdwAccess1, 0&, ProcessId)
    Else
    hProcess = OpenProcess(fdwAccess2, 0&, ProcessId)
    End If

    If hProcess Then
    Select Case CInt(a(1))
    Case -1
    AppKill = TerminateProcess(hProcess, lExitCode)
    Case 0
    Call SetPriorityClass(hProcess, IDLE_PRIORITY_CLASS)
    Case 1
    Call SetPriorityClass(hProcess, BELOW_NORMAL_PRIORITY_CLASS)
    Case 2
    Call SetPriorityClass(hProcess, NORMAL_PRIORITY_CLASS)
    Case 3
    Call SetPriorityClass(hProcess, ABOVE_NORMAL_PRIORITY_CLASS)
    Case 4
    Call SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)
    Case 5
    Call SetPriorityClass(hProcess, REALTIME_PRIORITY_CLASS)
    End Select
    Else
    hProcess = OpenProcess(fdwAccess2, 0&, ProcessId)
    End If

    Call CloseHandle(hProcess)
    Else
    MsgBox "ImpostaPrioritaProcesso.exe <nomeprocesso.exe> <priorità>" & vbCrLf & " 5 - Tempo Reale, ..., 2 - Normale, ..., 0 - Bassa"
    End If
    Exit Sub
    errore:
    MsgBox "ImpostaPrioritaProcesso.exe <nomeprocesso.exe> <priorità>" & vbCrLf & " 5 - Tempo Reale, ..., 2 - Normale, ..., 0 - Bassa"
    End Sub

    vorrei fare un'applicazione con questo codice come potrei fare si può creare un form?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma

    "vorrei fare un'applicazione con questo codice come potrei fare si può creare un form?"

    che vuol dire?

    E cosa c'entrano le priorita' dei processi?

    Il problema qual e'?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7

    VB6 priorità dei processi

    Prende come parametri il nome del processo, ovvero l'eseguibile che vogliamo modificare o chiudere ed un secondo parametro che rappresenta il nuovo grado di priorità o -1 se vogliamo fare il kill dell'applicazione.
    non so lanciarlo

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7

    [VB6] priorita dei processi

    Il programma una volta compilato può anche essere lanciato in modo batch dalla linea di comando, es. inserire in un file .bat il comando in moda da lanciarlo con un doppio click, invece di aprire il task manager. cosa significa ?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: VB6 priorità dei processi

    Originariamente inviato da titty75
    Prende come parametri il nome del processo, ovvero l'eseguibile che vogliamo modificare o chiudere ed un secondo parametro che rappresenta il nuovo grado di priorità o -1 se vogliamo fare il kill dell'applicazione.
    non so lanciarlo

    Non sai lanciarlo?

    Ma l'hai compilato? Tu programmi in VB?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [VB6] priorita dei processi

    Originariamente inviato da titty75
    Il programma una volta compilato può anche essere lanciato in modo batch dalla linea di comando, es. inserire in un file .bat il comando in moda da lanciarlo con un doppio click, invece di aprire il task manager. cosa significa ?
    Significa quello che hai scritto ... come si fa a spiegarti cosa e' un batch in un post di un forum di programmazione ....?

    Hai mai usato il DOS? Sai cosa e' una finestra DOS e come si forniscono i comandi in tale finestra? Sai come automatizzare l'esecuzione di comandi in tale finestra ...?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.