OpenProcess возвращает разные handle запущенного др. приложения - C#

Узнай цену своей работы

Формулировка задачи:

привет. Вопрос такой - хочу получить handle процесса для использования в функциях VirtualAllocEx и WriteProcessMemory делаю так
Листинг программы
  1. MainWindow.GetWindowThreadProcessId(hndlWindow, out idProcess); //получаю id процесса по hndl-у окна
  2. HANDLE hProcess = MainWindow.OpenProcess(0x001F0FFF, false, idProcess); //открываем существующий процесс, получаем хендл процесса
при этом каждый раз (при запуске моего кода) хэндл процесса разный, а хэндл окна и id процесса не меняется. похожий код на с++ работает и хэндл процесса там не изменяется. почему такая разница? как в шарпе получить хэндл процесса от окна и он будет рабочим, а не прыгать в зависимости от запуска?
Листинг программы
  1. //взято с pinvoke.net
  2. [DllImport("kernel32.dll")]
  3. public static extern IntPtr OpenProcess(uint processAccess, bool bInheritHandle, int processId );

Решение задачи: «OpenProcess возвращает разные handle запущенного др. приложения»

textual
Листинг программы
  1. IntPtr handle = Process.GetCurrentProcess().Handle;
  2. IntPtr handle = Process.GetProcessById(pid).Handle;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы