O conjunto de trabalho de uma aplicação é cortado quando a janela de nível superior é minimizada

Traduções de Artigos Traduções de Artigos
Artigo: 293215 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando a janela de nível superior de uma aplicação é minimizada através do comando Minimizar do respectivo menu de sistema ou um clique no respectivo botão Minimizar , o sistema operativo irá cortar o conjunto de trabalho para o processo. Isto é feito para libertar memória RAM para aplicações de primeiro plano. Como resultado deste recortes, um processo pode ocorrer significativamente o desempenho é inferior uma vez que as páginas de memória estão a ser falhou na RAM.

Mais Informação

Se uma aplicação minimiza a janela de nível superior programaticamente ao chamar a API ShowWindow() com o comando SW_MINIMIZE, o conjunto de trabalho do processo será recortado. No entanto, o trabalho definir irá não ser recortada quando a janela está minimizada programaticamente através da utilização de ShowWindow() com o comando SW_SHOWMINIMIZED.

O conjunto de trabalho de um processo é o conjunto de páginas de memória visíveis actualmente para o processo em RAM física. O acesso a esta memória é muito rápido uma vez que as páginas são residentes e disponíveis para utilização sem accionar uma falha de página por uma aplicação.

Um processo explicitamente pode cortar as suas trabalhar ao chamar a API SetProcessWorkingSetSize() ao passar "-1" para os parâmetros de dwMinimumWorkingSetSize e dwMaximumWorkingSetSize . Trata-se essencialmente como o sistema limita o processo quando a janela de nível superior é minimizada. Isto não significa que as páginas de memória utilizadas pelo processo imediatamente são eliminadas da RAM. De facto, estas páginas poderão permanecer residentes para bastante tempo. Estes são sinalizados simplesmente para que o sistema pode utilizá-los para outros processos conforme necessário. Este é significativamente mais rápida do que a aguardar pelo algoritmo de recortes padrão do sistema.

Quando uma janela está minimizada através do comando Minimizar de respectivo menu de sistema ou no botão Minimizar , a janela é enviada uma mensagem WM_SYSCOMMAND com o comando SC_MINIMIZE. Se o procedimento de janela passar esta mensagem no procedimento de janela predefinido do sistema por DefWindowProc() chamada, o procedimento predefinido processará a mensagem por ShowWindow() chamada com o comando SW_MINIMIZE. Como mencionado anteriormente, neste caso, o processo funcionar definido para ser recortada.

Pode escrever uma aplicação que pode ser minimizada sem ter o conjunto de trabalho recortado. Para efectuar este procedimento, o procedimento de janela para a janela de nível superior deve interceptar mensagens WM_SYSCOMMAND e responder ao comando SC_MINIMIZE por chamada ShowWindow() directamente com o comando SW_SHOWMINIMIZED. -Não deve passar o comando SC_MINIMIZE para DefWindowProc().

Código de exemplo

O seguinte código demonstra como escrever um procedimento de janela que intercepta a mensagem WM_SYSCOMMAND para ignorar o procedimento de janela predefinido e impedir que o conjunto de trabalho do processo a ser recortada:
LRESULT CALLBACK WndProc (HWND hWnd, UINT iMsg, WPARAM wParam, 
      LPARAM lParam) {

   switch (iMsg) {

      case WM_SYSCOMMAND:
         if (wParam == SC_MINIMIZE) {

            // programmatically minimize the window
            ShowWindow(hWnd, SW_SHOWMINIMIZED);

            // do not pass the minimize command on to the system's
            // default window procedure
            return 0;
         }

         // allow other system commands to be passed on to the
         // default window procedure
         break; 

      // handle other window messages here...
      case WM_WHATEVER:
         break;
   }

   return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
				

Propriedades

Artigo: 293215 - Última revisão: 21 de novembro de 2006 - Revisão: 5.1
A informação contida neste artigo aplica-se a:
  • Microsoft Win32 Application Programming Interface nas seguintes plataformas
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
Palavras-chave: 
kbmt kbapi kbkernbase kbmemory kbprb KB293215 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 293215

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