Вопрос
Как определить что программа запущена в эмуляторе в Virtual PC?
Ответ
Эта функция может быть использована для определения, что ваша программа запущена в Connectrix's Virtual PC
function running_inside_vpc: boolean; assembler;
asm
push ebp
mov ecx, offset @@exception_handler
mov ebp, esp
push ebx
push ecx
push dword ptr fs:[0]
mov dword ptr fs:[0], esp
mov ebx, 0 // флаг
mov eax, 1 // номер функции VPC
// call VPC
db 00Fh, 03Fh, 007h, 00Bh
mov eax, dword ptr ss:[esp]
mov dword ptr fs:[0], eax
add esp, 8
test ebx, ebx
setz al
lea esp, dword ptr ss:[ebp-4]
mov ebx, dword ptr ss:[esp]
mov ebp, dword ptr ss:[esp+4]
add esp, 8
jmp @@ret
@@exception_handler:
mov ecx, [esp+0Ch]
mov dword ptr [ecx+0A4h], -1 // EBX = -1 -> не запущен, ebx = 0 -> запущен
add dword ptr [ecx+0B8h], 4
xor eax, eax
ret
@@ret:
end;
Из конференции Delphi
Copyright 2000-2004 Сообщество Чайников
Контактная информация