Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-1122284113
sarcin
2005-07-25 13:35
2005.08.14
Resize функция для IntraWeb


1-1122057059
Destroyer
2005-07-22 22:30
2005.08.14
Сохранение стиля шрифта в ini фаил


10-1099318222
AlexGof
2004-11-01 17:10
2005.08.14
Надо DCOM регистрировать на всех клиентах ?


4-1118757036
Dr. Genius
2005-06-14 17:50
2005.08.14
Определение доступа к ресурсам компьютера


14-1122007779
Sash
2005-07-22 08:49
2005.08.14
вирус???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский