PID, необходимый для OpenProcess (), обычно не так просто заполучить. Если все, что у вас есть, это имя процесса, то вам нужно выполнить итерации запущенных процессов на компьютере. Сделайте это с CreateToolhelp32Snapshot, затем Process32First и выполните цикл с Process32Next. PROCESSENTRY32.szExeFile дает вам имя процесса (не путь!), Th32ProcessID дает вам PID.
Следующее соображение заключается в том, что процесс может появляться более одного раза. И есть вероятность, что одно и то же имя процесса используется для самых разных программ. Вроде «Настройка». Если вы не хотите просто убить их всех, вам нужно попытаться получить от них некоторую информацию во время выполнения. Текст строки заголовка окна, возможно. GetProcessImageFileName () может дать вам путь к .exe. Он использует собственный формат ядра, вам понадобится QueryDosDevice, чтобы сопоставить имя устройства дисковода с буквой диска.
Следующее рассмотрение - это права, которые вы запрашиваете в OpenProcess (). Вы вряд ли получите PROCESS_ALL_ACCESS
, все, что вам нужно, это PROCESS_TERMINATE
. Хотя это и привилегия. Убедитесь, что учетная запись, которую вы используете для запуска своей программы, может получить это право.