Текущий архив: 2005.08.14;
Скачать: CL | DM;
Вниз
На Дельфи OpenProcess() возвращает другое значение Найти похожие ветки
← →
AbrosimovA (2005-06-14 12:22) [0]На Дельфи:
Function GetMemSharedNT(pid,memSize,hProcess: Cardinal): Pointer;
Begin
hProcess := OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, pid);
Result := VirtualAllocEx(hProcess, nil, memSize, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE);
End;
На VB:
Public Function GetMemSharedNT(ByVal pid As Long, ByVal memSize As Long, hProcess As Long) As Long
hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, pid)
GetMemSharedNT = VirtualAllocEx(ByVal hProcess, ByVal 0&, ByVal memSize, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)
End Function
pid в обоих случаях равен, но hProcess почему-то разный.
Есть у кого-нибудь мысли на этот счёт? Спасибо.
← →
Digitman © (2005-06-14 12:25) [1]
> hProcess почему-то разный
а почему он д.б. одинаковый ?
хэндл процесса - локально уникален, в то время как Id процесса глобально уникален.
← →
-=XP=- © (2005-06-14 12:26) [2]А почему он должен быть одинаковым?
← →
AbrosimovA (2005-06-14 13:16) [3]Я же запускаю два варианта на одной машине почти одновременно, но Дельфи-вариант выдаёт всё время хэндл = 92.
Мне это нужно для контроля правильности перевода VB-кода на Дельфи.
← →
-=XP=- © (2005-06-14 13:22) [4]Дельфи-вариант выдаёт всё время хэндл = 92
Случайность. Не следует на это обращать внимание. Выделение дескрипторов - прерогатива ОС. В разных процессах они имеют совершенно разный смысл. Лично Вам что-то число 92 говорит? :)
← →
Digitman © (2005-06-14 13:23) [5]
> Дельфи-вариант выдаёт всё время хэндл = 92
ну и пусть себе выдает !
хоть 92 , хоть 65876546354635 ..
лишь бы не 0 !
ибо 0 означает отказ ф-ции по тем или иным причинам, которые всегда можно уточнить, тут же вызвав GetLastError
> нужно для контроля правильности перевода VB-кода на Дельфи
странный "способ" - опираться на домыслы, а не на документацию
← →
AbrosimovA (2005-06-15 08:14) [6]Не совсем понятно про какие домыслы идёт речь. Ведь переводом из VB в Паскаль занимаюсь я и здесь же сам себя и проверяю.
У меня есть пример на VB, который выдаёт список всего, что находится в трее, а я пытаюсь этот пример перевести на Паскаль.
← →
Digitman © (2005-06-15 08:32) [7]
> Не совсем понятно про какие домыслы идёт речь
домыслом дан.случае является ожидание тобой одинаковых значений хэндла одного и того же процесса
> Ведь переводом из VB в Паскаль занимаюсь я и здесь же сам
> себя и проверяю
переводить-то тоже с умом нужно !
в VB-коде присутствует некорректность, и ты ее тащишь один-в-один в свой код
некорректность заключается в отсутствии проверки значений, возвращаемых WinAPI-ф-циями, на предмет успешного или неуспешного выполнения
← →
Virgo_Style © (2005-06-15 08:33) [8]AbrosimovA (15.06.05 8:14) [6]
Все уже сказано в [1]
← →
AbrosimovA (2005-06-15 08:39) [9]Digitman © (15.06.05 08:32) [7]
>в VB-коде присутствует некорректность
Тем не менее VB-код работает, а мой - нет.
← →
Digitman © (2005-06-15 08:56) [10]
> AbrosimovA (15.06.05 08:39) [9]
а отладчик на что ?
← →
AbrosimovA (2005-06-15 10:21) [11]Ладно. Всем спасибо.
Страницы: 1 вся ветка
Текущий архив: 2005.08.14;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.011 c