Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2018, 18:06   #1
firstoxe
Пользователь
 
Регистрация: 24.11.2011
Сообщений: 11
По умолчанию DuplicateHandle помогите разобраться с параметрами

Нужно выполнить задание:
1. Используя функцию GetCurrentProcessId определяет идентификатор текущего процесса.
2. Используя функцию GetCurrentProcess определяет псевдодескриптор текущего процесса.
3. Используя функцию DuplicateHandle и значение псевдодескриптора определяет дескриптора текущего процесса.
4. Используя функцию OpenProcess определяет копию дескриптора текущего процесса.
5. Закрывает дескриптор, полученный функцией DuplicateHandl.
6. Закрывает дескриптор, полученный функцией OpenProcess.

Код:
procedure TForm1.NxButton62Click(Sender: TObject);
var
HWnd :Phandle;
HWnd1: Thandle;
begin
   HWnd1 :=GetCurrentProcessID;

  NxMemo61.Lines.Add('идентификатор текущего процесса: ' +
    GetCurrentProcessId.ToString);
  NxMemo61.Lines.Add('псевдодескриптор текущего процесса: ' +
    GetCurrentProcess.ToString);
  NxMemo61.Lines.Add('псевдодескриптор текущего процесса: ' +
    DuplicateHandle(HWnd1,HWnd1,HWnd1, HWnd , 0, false, DUPLICATE_SAME_ACCESS).ToString);
end;


Но славливаю ошибку, DuplicateHandle = 0 и бесконечное всплывающее окно

Смотрю аналогичный код на си, и там всё работает...
firstoxe вне форума Ответить с цитированием
Старый 02.04.2018, 18:20   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Phandle - указатель. Память под переменную для хендла, кто будет выделять?
p51x вне форума Ответить с цитированием
Старый 02.04.2018, 18:39   #3
firstoxe
Пользователь
 
Регистрация: 24.11.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Phandle - указатель. Память под переменную для хендла, кто будет выделять?
Не очень понял.
Как выделять под него память?
firstoxe вне форума Ответить с цитированием
Старый 02.04.2018, 20:14   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Сделать HWnd обычным хэндлом, а в функцию передавать адрес @HWnd
p51x вне форума Ответить с цитированием
Старый 02.04.2018, 21:01   #5
firstoxe
Пользователь
 
Регистрация: 24.11.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Сделать HWnd обычным хэндлом, а в функцию передавать адрес @HWnd
Если я правильно понял,
Код:
var
HWnd,HWnd1 :Thandle;

begin
   HWnd1 :=GetCurrentProcessID;

  NxMemo61.Lines.Add('идентификатор текущего процесса: ' +
    GetCurrentProcessId.ToString);
  NxMemo61.Lines.Add('псевдодескриптор текущего процесса: ' +
    GetCurrentProcess.ToString);
    DuplicateHandle(HWnd1,HWnd1,HWnd1, @HWnd , 0, false, DUPLICATE_SAME_ACCESS);
     NxMemo61.Lines.Add('Дескриптор, полученный функцией DuplicateHandle: ' +    HWnd.ToString);
HWnd=0 соответственно DuplicateHandle возвращает false
firstoxe вне форума Ответить с цитированием
Старый 02.04.2018, 21:22   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так вызывайте GetLastError и смотрите.

СТОП. А какого вы вместо хендла процесса в функцию ИД суете?

Последний раз редактировалось p51x; 02.04.2018 в 21:25.
p51x вне форума Ответить с цитированием
Старый 02.04.2018, 21:31   #7
firstoxe
Пользователь
 
Регистрация: 24.11.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну так вызывайте GetLastError и смотрите.

СТОП. А какого вы вместо хендла процесса в функцию ИД суете?
GetLastError выдал, неверный дескриптор
заменил на GetCurrentProcess. получилось. Большое спасибо за помощь
firstoxe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подбор резисторов по их допуску P 90%, для получения резистивного делителя напряжения на 2 с заданными параметрами (очень нужно помогите кто может) skala666 Компьютерное железо 0 30.01.2017 14:55
программа с типизированными параметрами-значениями и параметрами-переменными Kira09 Паскаль, Turbo Pascal, PascalABC.NET 1 20.12.2010 22:23
Помогите разобраться Айат Помощь студентам 4 21.12.2009 13:50