Ir para conteúdo


Foto

ProcessWait


Melhor Resposta Orve, 12 abril 2017 - 09:54

sim, mas ele só funciona com handle, classe e titulo. Eu só psso usar o pid e o processo. Acho que não tem como mesmo, nunca vi algo do tipo.

Se processo existir e ter pelo menos 1 janela referente a ela aberta, entao executar uma função.

 Bom, você pode verificar se o processo existe usando o ProcessList, e verificar se tem janelas abertas usando o WinList, e para comparar se a janela pertence ao processo você usa a Handle de retorno do WinList nessa função:

  1.  
  2. Func _GetHwndFromPID($PID)
  3. $hWnd = 0
  4. $winlist = WinList()
  5. Do
  6. For $i = 1 To $winlist[0][0]
  7. If $winlist[$i][0] <> "" Then
  8. $iPID2 = WinGetProcess($winlist[$i][1])
  9. If $iPID2 = $PID Then
  10. $hWnd = $winlist[$i][1]
  11. ExitLoop
  12. EndIf
  13. EndIf
  14. Until $hWnd <> 0
  15. Return $hWnd
  16. EndFunc ;==>_GetHwndFromPID
  17.  

 

Visualizar todo o conteúdo do post


  • Por favor, faça o login para responder
4 respostas neste tópico

#1 Pedro Pinheiro

Pedro Pinheiro

    Membro Nível 1

  • Membros
  • PipPip
  • 185 posts
  • LocationBrazil

Postado 12 abril 2017 - 07:37

Bom dia pessoal. Queria saber se existe alguma forma de capturar um processo caso ele tenha alguma Gui ativa. Tipo o WinWaitActive, mas eu não posso colocar a classe da janela do programa já que a função tera uma articulação de processos. Eu só posso pegar o nome do executavel ou o PID. É porque eu só posso executar algo nesse programa se a janela dele estiver aberta e o ProcessWait não irá funcionar nesse caso.

Escrevi meio rapido pq estou do celular carroça.

Editado por Pedro Pinheiro, 12 abril 2017 - 07:40 .


#2 mutleey

mutleey

    AutoIt MVP

  • AutoIt MVPs (MVP)
  • PipPipPip
  • 277 posts
  • LocationSão José do Rio Preto-SP

Postado 12 abril 2017 - 08:03

Não entendi muito bem o que vc quer fazer.. mais talvez o que vc procura seja o 

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido



#3 Pedro Pinheiro

Pedro Pinheiro

    Membro Nível 1

  • Membros
  • PipPip
  • 185 posts
  • LocationBrazil

Postado 12 abril 2017 - 08:30

Não entendi muito bem o que vc quer fazer.. mais talvez o que vc procura seja o 

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido


sim, mas ele só funciona com handle, classe e titulo. Eu só psso usar o pid e o processo. Acho que não tem como mesmo, nunca vi algo do tipo.

Se processo existir e ter pelo menos 1 janela referente a ela aberta, entao executar uma função.

#4 Orve

Orve

    Membro Nível 1

  • Membros
  • PipPip
  • 136 posts
  • LocationGoias

Postado 12 abril 2017 - 09:54   Melhor Resposta

sim, mas ele só funciona com handle, classe e titulo. Eu só psso usar o pid e o processo. Acho que não tem como mesmo, nunca vi algo do tipo.

Se processo existir e ter pelo menos 1 janela referente a ela aberta, entao executar uma função.

 Bom, você pode verificar se o processo existe usando o ProcessList, e verificar se tem janelas abertas usando o WinList, e para comparar se a janela pertence ao processo você usa a Handle de retorno do WinList nessa função:

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido

 



#5 Pedro Pinheiro

Pedro Pinheiro

    Membro Nível 1

  • Membros
  • PipPip
  • 185 posts
  • LocationBrazil

Postado 14 abril 2017 - 02:17

Velho. Eu não conhecia winlist. Valeu mesmo.




0 usuário(s) está(ão) lendo este tópico

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Documentação OnLine de referência