Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

На Дельфи OpenProcess() возвращает другое значение [D6, Win2k, WinXP]


AbrosimovA ©   (2005-06-14 12:22:00) 

На Дельфи:
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 почему-то разный.
Есть у кого-нибудь мысли на этот счёт? Спасибо.


AbrosimovA   (2005-06-15 10:21:00) [1]

Ладно. Всем спасибо.


Digitman   (2005-06-15 08:56:00) [2]


> AbrosimovA   (15.06.05 08:39) [9]


а отладчик на что ?


AbrosimovA   (2005-06-15 08:39:00) [3]

Digitman ©   (15.06.05 08:32) [7]
>в VB-коде присутствует некорректность

Тем не менее VB-код работает, а мой - нет.


Virgo_Style   (2005-06-15 08:33:00) [4]

AbrosimovA   (15.06.05 8:14) [6]

Все уже сказано в [1]


Digitman   (2005-06-15 08:32:00) [5]


> Не совсем понятно про какие домыслы идёт речь


домыслом дан.случае является ожидание тобой одинаковых значений хэндла одного и того же процесса


> Ведь переводом из VB в Паскаль занимаюсь я и здесь же сам
> себя и проверяю


переводить-то тоже с умом нужно !

в VB-коде присутствует некорректность, и ты ее тащишь один-в-один в свой код

некорректность заключается в отсутствии проверки значений, возвращаемых WinAPI-ф-циями, на предмет успешного или неуспешного выполнения


AbrosimovA   (2005-06-15 08:14:00) [6]

Не совсем понятно про какие домыслы идёт речь. Ведь переводом из VB в Паскаль занимаюсь я и здесь же сам себя и проверяю.
У меня есть пример на VB, который выдаёт список всего, что находится в трее, а я пытаюсь этот пример перевести на Паскаль.


Digitman   (2005-06-14 13:23:00) [7]


> Дельфи-вариант выдаёт всё время хэндл = 92


ну и пусть себе выдает !
хоть 92 , хоть 65876546354635 ..

лишь бы не 0 !

ибо 0 означает отказ ф-ции по тем или иным причинам, которые всегда можно уточнить, тут же вызвав GetLastError


> нужно для контроля правильности перевода VB-кода на Дельфи


странный "способ" - опираться на домыслы, а не на документацию


-=XP=-   (2005-06-14 13:22:00) [8]

Дельфи-вариант выдаёт всё время хэндл = 92

Случайность. Не следует на это обращать внимание. Выделение  дескрипторов - прерогатива ОС. В разных процессах они имеют совершенно разный смысл. Лично Вам что-то число 92 говорит? :)


AbrosimovA   (2005-06-14 13:16:00) [9]

Я же запускаю два варианта на одной машине почти одновременно, но Дельфи-вариант выдаёт всё время хэндл = 92.
Мне это нужно для контроля правильности перевода VB-кода на Дельфи.


-=XP=-   (2005-06-14 12:26:00) [10]

А почему он должен быть одинаковым?


Digitman   (2005-06-14 12:25:00) [11]


> hProcess почему-то разный


а почему он д.б. одинаковый ?

хэндл процесса - локальноуникален, в то время как Id процесса глобальноуникален.


Наверх

Титульная страница Поиск, карта сайта Написать письмо