Pull to refresh

Под Wine иль не под Wine?

Website developmentDelphi
Tutorial

Прелюдия



В жизни каждого Windows разработчика может наступить момент, когда кровь из носу необходимо понять, под управлением WineHQ работает программа или нет. Почему? Потому что мир не идеален, и необходимо помочь Wine переварить приложение корректно. Разумеется, если разработчика волнует фидбек от ребят по ту сторону баррикад (Mac, Linux и т.д.).



Мотивы



Назову несолько причин по которым это понадобилось нашей комманде:
  • CHM хелпы отвратно отображаются под Wine;
  • на голом Wine отсутствуют MS Jet 4.0 и MS MDAC 2.8;
  • и как выяснилось, наши приложения (одно и второе) лучше выглядят, когда используются Microsoft Core Fonts (Arial, Courier, Times и т.д.).


Уверен, список можно дополнить, но это не является целью данной статьи.

Реализация



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

Реализация для С:

bool GetWineAvail()
{
HMODULE h = LoadLibrary("ntdll.dll");
bool r = false;

if(h != NULL)
{
r = GetProcAddress(h, "wine_get_version") != NULL;
FreeLibrary(h);
}

return r;
}

//использование
if (GetWineAvail())
{
ShowMessage("Кругом вино, кэп!");
}
else
{
ShowMessage("Не видывал окна прозрачней.");
}

Реализация для Delphi:
function GetWineAvail: boolean;
var H: cardinal;
begin
Result := False;
H := LoadLibrary('ntdll.dll');
if H > 0 then
begin
Result := Assigned(GetProcAddress(H, 'wine_get_version'));
FreeLibrary(H);
end;
end;

//использование
if GetWineAvail() then
ShowMessage('Ура! Мы под Винищем!')
else
ShowMessage('Чистейший Виндовз, сэр!');
end;

Удачи!
Tags:winecdelphienvironment
Hubs: Website development Delphi
Total votes 72: ↑66 and ↓6+60
Views2.6K
Comments Comments 123

Popular right now

Top of the last 24 hours