Suspender o processo do Windows com uma macro

0

Estou trabalhando em algo e preciso "simplificar" uma operação do Windows e estou meio preso, não sei se vocês podem me ajudar a descobrir isso aqui ... então aqui está o meu problema e como eu quero que isso seja resolvido:

Eu preciso suspender um processo específico do Windows por X segundos com o pressionamento de 1 ou 2 botões. Idealmente, um botão para suspendê-lo com um atraso de X segundos antes que ele seja retomado, mas pode ser um botão para suspendê-lo e outro 1 para reiniciá-lo.

O que eu espero que seja (depois pode ser um pouco diferente): crie um arquivo .exe e vincule o atalho de arquivo a um botão programável em um dos botões de macro do meu teclado. Eu preciso de ajuda para descobrir uma maneira de codificar isso em algo .. Eu tentei usar uma ferramenta chamada pssuspend.exe, mas eu não consegui fazê-lo funcionar.

Obrigado pela ajuda!

    
por Pier-Olivier Pellerin 28.12.2017 / 14:46

1 resposta

1

Google search feed for 15 September 2018:

Ferramenta PsSuspend de PsTools (pacote Microsoft sysinternals utilities)

Como essa é uma ferramenta oficial, ela pode ser a melhor escolha para scripts simples e automação.

A execução de PsSuspend com um ID de processo o direciona para suspender ou retomar o processo desse ID no computador local. Se você especificar um nome de processo, o PsSuspend suspenderá ou retomará todos os processos com esse nome. Especifique a opção -r para retomar os processos suspensos.

Uso: pssuspend [- ] [-r] [\computer [-u username] [-p password]] <process name | process id>

Programa simples usando a API do Windows: SuspendThread e ReasumeThread

O Windows tem algumas funções destinadas a suspender e criar threads (assim, processar alguns tipos). A biblioteca kernel32.dll fornece SuspendThread e ReasumeThread . Aviso! Existem também contrapartes de 64 bits para estas funções Wow64SuspendThread e Wow64ResumeThread (que não tem documentação oficial).

Existe aplicativo pequeno e agradável que usa essa técnica também versão em C / C ++ também em CodeProject (código fonte disponível).

Uso: pausep PID [/r] ( /r switch gera o processo).

Existe versão em C # .NET também no CodeProject.

Veja também esta resposta do Stackoverflow

Mais fácil de usar, método de linha de comando (Powershell) a partir dessa resposta:

As I said Windows command line has not any utility to do that but you can invoke a Windows API function from PowerShell. First install Invoke-WindowsApi script then you can write this:

Invoke-WindowsApi "kernel32" ([bool]) "DebugActiveProcess" @([int]) @(process_id_here)

Uma técnica semelhante foi usada para criar este script PowerScript criado para pausar o processo .

    
por 16.09.2018 / 00:01