c# - Mostrando um processo oculto no Windows? - CoreDump.pt
Mostrando um processo oculto no Windows?
Eu tenho um pouco de um problema.
Relacionados às minhas perguntas anteriores sobre Slipstreamed SP3 vs. SP3 corrigida , nós viemos à conclusão de que existe um processo do Internet Explorer que está sendo iniciado, instruído para carregar um arquivo .html simples a partir do disco local, que contém javascript, o que abre o resto de um sistema de chat / reunião maior. Internet Explorer é iniciado a partir de um cliente Lotus Notes.
Infelizmente, tudo o que podemos ver é o processo IExplore.exe aparecendo no Gerenciador de tarefas, e alguns segundos depois, desaparecer novamente.
Se tentar abrir o arquivo .html local, que nós encontramos no disco, ele nos dá essa barra de informações na parte superior, nos dizendo que desativou conteúdo ativo. Isso, no entanto, não é o verdadeiro problema. Nós temos uma outra máquina que tem as mesmas configurações, mas onde tudo funciona, e carregar o arquivo .html nos dá manualmente o mesmo erro lá também.
No entanto, talvez haja outra mensagem de erro que está sendo mostrado quando IExplore é iniciado a partir de notas, mas uma vez que este processo é suposto que apenas alavancar o resto do sistema, e esta janela está escondido, não podemos vê-lo, ou seja, o erro mensagem / problema.
Então, eu pensei, talvez eu deveria tentar criar um pequeno programa que aguarda IExplore.exe para começar, logo em seguida mostra a janela, para que possamos ver a mensagem de erro, ou o que é o problema. Pelo menos, espero que nós vamos ser capazes de ver isso.
Até aí tudo bem, exceto que se eu começar um processo do meu próprio programa, com uma janela oculta, o principal identificador de janela é 0, e, portanto, eu não posso mostrar a janela depois de tudo. Espero que este processo IExplore.exe iniciado a partir do Lotus Notes para ter o mesmo problema.
Meu programa de monitoramento é escrito em C #, e basicamente é executado este loop:
if (process.ProcessName.ToLower() == iexplore)
Isso pega todos os processos iexplore.exe, janelas ou não, e com o IE8, recebo 2 processos para a primeira janela, como esperado. Eu executar este uma e outra vez, e lida com as diferenças em relação às corridas anteriores.
No entanto, o processo brevemente tem uma janela de lidar com 0 no início, então eu mudei para isso:
if (process.ProcessName.ToLower() == iexplore &&
mas agora ele não pegar nada, mesmo depois que a janela tenha obtido uma alça (e sim, process.MainWindowHandle tem um valor de identificador diferente de zero depois que a janela foi mostrado, mas no caso em que a janela é nunca mostrado, ele permanece em 0.)
Assim, a pergunta é: Existe alguma maneira para eu levar este processo IExplore.exe escondido, e instruí-lo a mostrar-se, quando ele não tem um identificador de janela já? Eu duvido, mas talvez alguém pode provar que estou errado.
Se não, o meu plano de backup é criar um programa IExplore.exe calço, que encaminha todos os argumentos de linha de comando para o original, exceto que ele especifica que a janela está a ser mostrado. Isso seria uma solução?
c#processwindowhiddenshow
Publicado 19/05/2009 em 18:51 2009-05-19 18:51
Eu não acredito que haja alguma maneira de forçar uma janela do IE que não tem um identificador de janela para alocar um identificador de janela para si (ou usar um previamente alocado um) e apresentar-se.
Quanto ao seu método de backup: Eu acho que isso iria funcionar, mas você está trabalhando em um território perigoso lá. Eu realmente recomendo escrever seu calço para apenas registrar cada invocação de iexplore.exe e tudo o que vai para ele, e usar isso para caracterizar o seu problema; só depois de caracterizar completamente o seu problema com o registo completamente benignos que eu sugiro, possivelmente, modificar os parâmetros para forçar iexplore.exe para exibir uma janela.