Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Как распознать запуск в Wine?


Автор: DSJ 25.3.2011, 23:06
98% функционала моей проги на Delphi замечательно работает на Linux под Wine, остальные 2% абсолютно не существенны и хотелось бы их просто отключить, если прога запускается в Wine.
Не хочется делать специальную версию, оптимизированную под Wine.

Автор: Qu1nt 25.3.2011, 23:42
http://habrahabr.ru/blogs/development/76131/

Автор: DSJ 25.3.2011, 23:59
Спасибо, похоже то что надо! Буду пробовать  smile 

Автор: 500mhz 26.3.2011, 00:58
непохек ) предлогаю так
Цитата

Module    Address    Debug info    Name (15 modules)
PE   400000-  402000    Export          main
ELF    68000000-6801f000    Deferred        ld-linux.so.2
ELF    6801f000-68162000    Dwarf           libwine.so.1
ELF    68162000-6817d000    Deferred        libpthread.so.0
ELF    6817d000-68182000    Deferred        libdl.so.2
ELF    68182000-681ac000    Deferred        libm.so.6
ELF    681ac000-681b9000    Deferred        libnss_files.so.2
ELF    681b9000-681dd000    Deferred        libncurses.so.5
ELF    6d528000-6d6b2000    Deferred        libc.so.6
ELF    70005000-70025000    Deferred        libtinfo.so.5
ELF    7b800000-7b99f000    Dwarf           kernel32<elf>
  \-PE    7b810000-7b99f000    \               kernel32
ELF    7bc00000-7bcc9000    Dwarf           ntdll<elf>
  \-PE    7bc10000-7bcc9000    \               ntdll
ELF    7bf00000-7bf03000    Deferred        <wine-loader>

Threads:
process  tid      prio (all id:s are in hex)
00000008 (D) main.exe
    00000009    0 <==
0000000e services.exe
    0000001c    0
    00000016    0
    00000015    0
    00000014    0
    00000010    0
    0000000f    0
00000011 winedevice.exe
    00000018    0
    00000017    0
    00000013    0
    00000012    0
00000019 plugplay.exe
    0000001d    0
    0000001b    0
    0000001a    0
0000001e explorer.exe
    0000001f    0



как видно из листинга 
1) в процессах болтается winedevice.exe - можно палить его 
2) тут интересней. помотрите на подгруженые модули, в винде таких не бывает

Автор: 500mhz 26.3.2011, 01:22
вот самы простой способ, проверено (5 минут назад), в винде ниче не будет в wine будет ексцепшн
делаем GetModuleHandle("несушествуюший модуль")

и все

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)