Delphi World - Определить, что программа запущена в пространстве Virtual PC
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Определить, что программа запущена в пространстве Virtual PC

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  This function can be used to determine whether your program is 
  running from within 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 // flag 
  mov  eax, 1 // VPC function number 

  // 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 -> not running, ebx = 0 -> running 
  add dword ptr [ecx+0B8h], 4 // -> skip past the detection code 
  xor eax, eax // exception is handled 
  ret
   @@ret:
 end;
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования