Como modificar a prioridade do processo de um aplicativo em shell com Visual FoxPro

Traduções deste artigo Traduções deste artigo
ID do artigo: 193846 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Prioridade de um processo determina como sua execução é programada pelo kernel Win32. Processos com uma prioridade mais alta executar mais rapidamente do que processos com uma prioridade mais baixa. Este artigo descreve como modificar a prioridade do processo de um aplicativo em shell.

Mais Informações

Win32 dá suporte as seguintes classes quatro prioridade:
  • Ocioso
  • Normal
  • Alta
  • Em tempo real
Ocioso é a prioridade correta para aplicativos de monitoramento do sistema ou proteções de tela.

Classe de prioridade normal é o padrão, que indica um processo com sem necessidades especiais de agendamento.

Alta prioridade indica um processo que executa tarefas de tempo críticas que requerem execução imediata para ele seja executado corretamente. Os segmentos de um processo de classe de alta prioridade capturam os segmentos de processos de classe de prioridade normal ou ociosa. Um exemplo é a lista de tarefas do Windows, que deve responder rapidamente quando chamado pelo usuário, independentemente da carga no sistema operacional. Use muito cuidado ao usar a classe de alta prioridade, porque uma classe de alta prioridade ligados a CPU aplicativo pode usar quase todos disponíveis ciclos.

A prioridade em tempo real indica um processo que tem a prioridade mais alta possível. Os segmentos de um processo de classe de prioridade em tempo real capturam os segmentos de todos os outros processos, incluindo processos do sistema operacional executar tarefas importantes. Por exemplo, um processo em tempo real que executa para mais de um breve intervalo pode causar caches de disco não liberar ou fazer com que o mouse para ser responder. Essa prioridade quase nunca deve ser usada.

Prioridade o processo é definida, atribuindo um dos parâmetros da chamada de API de CreateProcess.

O exemplo a seguir demonstra como executar o aplicativo bloco de notas do Windows em Windows NT 4.0 e posteriores sistemas operacionais do Windows usando uma prioridade ociosa. A prioridade do processo é controlada pela variável 'dwCreationFlags' passada para CreateProcess(). DEFINEs para as quatro classes de prioridade com suporte são listados na parte superior do programa de exemplo.

Uma vez Notepad.exe está em execução, para examinar a prioridade, iniciar o o Gerenciador de tarefas do Windows, selecione a guia processos, clique com o botão direito do mouse em Notepad.exe e selecionar 'Definir prioridade' no menu pop-up.

O nome do caminho totalmente qualificado para Notepad.exe pode ser necessário modificação na instrução de atribuição de variável 'File2Run'.

Código de exemplo

   #DEFINE NORMAL_PRIORITY_CLASS 32
   #DEFINE IDLE_PRIORITY_CLASS 64
   #DEFINE HIGH_PRIORITY_CLASS 128
   #DEFINE REALTIME_PRIORITY_CLASS 1600

   DECLARE INTEGER CreateProcess IN kernel32.DLL ;
      INTEGER lpApplicationName, ;
      STRING lpCommandLine, ;
      INTEGER lpProcessAttributes, ;
      INTEGER lpThreadAttributes, ;
      INTEGER bInheritHandles, ;
      INTEGER dwCreationFlags, ;
      INTEGER lpEnvironment, ;
      INTEGER lpCurrentDirectory, ;
      STRING @lpStartupInfo, ;
      STRING @lpProcessInformation

   DECLARE INTEGER GetLastError IN kernel32.DLL

   * Startup info is 68 bytes, of which we need to
   * initially populate the 'cb' or Count of Bytes member
   * with the overall length of the structure.
   * The remainder should be 0-filled.
   START = long2str(68) + REPLICATE(CHR(0), 64)

   * PROCESS_INFORMATION structure is 4 longs,
   * or 4*4 bytes = 16 bytes, which we'll initially zero.
   process_info = REPLICATE(CHR(0), 16)

   * Start a copy of NOTEPAD (EXE name must be null-terminated)
   File2Run = "C:\WINNT\NOTEPAD.EXE" + CHR(0)

   * Call CreateProcess, obtain a process handle. Treat the
   * application to run as the 'command line' argument, accept
   * all other defaults. Important to pass the start and
   * process_info by reference.
   RetCode = CreateProcess(0, File2Run, 0, 0, 1, ;
      IDLE_PRIORITY_CLASS, 0, 0, @START, @process_info)

   * Unable to run, exit now.
   IF RetCode = 0
      =MESSAGEBOX("Error occurred. Error code: ", GetLastError())
      RETURN
   ENDIF

   ********************
   FUNCTION long2str
   ********************
   * passed : 32-bit non-negative numeric value (m.longval)
   * returns : ascii character representation of passed
   *    value in low-high format (m.retstr)
   * example :
   *   m.long = 999999
   *   m.longstr = long2str(m.long)
   PARAMETERS m.longval

   PRIVATE i, m.retstr

   m.retstr = ""
   FOR i = 24 TO 0 STEP -8
      m.retstr = CHR(INT(m.longval/(2^i))) + m.retstr
      m.longval = MOD(m.longval, (2^i))
   NEXT
   RETURN m.retstr
						

Referências

"Windows Avançado", páginas de Jeffrey Richter, Microsoft Press, 92-103, terceira edição 1997, ISBN: 1-57231-548-2

Propriedades

ID do artigo: 193846 - Última revisão: quinta-feira, 27 de janeiro de 2005 - Revisão: 3.4
A informação contida neste artigo aplica-se a:
  • Microsoft Visual FoxPro 3.0b Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
Palavras-chave: 
kbmt kbhowto KB193846 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 193846

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com