ワインの下かどうか

前戯



すべてのWindows開発者の生活の中で、鼻からの血がWineHQがプログラムを実行しているかどうかを理解する必要があるときが来るかもしれません。 なんで? 世界は完璧ではないので、Wineがアプリケーションを正しく消化できるようにする必要があります。 もちろん、バリケードの反対側(Mac、Linuxなど)からのフィードバックを開発者が気にかけている場合は。



動機



たちのチームがそれを必要とした理由をいくつか挙げます


リストは補足できると確信していますが、これはこの記事の目的ではありません。

実装



この方法はエレガントでシンプルです。 健全な開発者なら誰でも、これを自分の好きな言語に適応させることができると思います。

Cの実装:

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( "ワインの周り、キャップ!" );
}
他に
{
ShowMessage( "ウィンドウがより透明に見えませんでした。" );
}

Delphiの実装:
関数 GetWineAvail boolean ;
var H 枢機inal ;
始める
結果 := False ;
H := LoadLibrary( 'ntdll.dll';
H > 0の 場合
始める
結果 := Assigned (GetProcAddress(H 'wine_get_version' )) ;
FreeLibrary(H) ;
終わり ;
終わり ;

//使用する
GetWineAvail()の場合
ShowMessage( '大丈夫!私たちは Winishにいます!'
他に
ShowMessage( 'Pure Windows、sir!';
終わり ;

頑張って

Source: https://habr.com/ru/post/J76131/


All Articles