Wineの下からURLを開きます

状況を想像してください。 当社の製品は、 WineHQを実行しているかどうかを判断できます。 また、製品自体には、URLを開かなければならない場所がたくさんあります。 製品情報、アップデートの確認、オンラインヘルプ、テクニカルサポートページなど。 ShellExecuteを真正面から試し、URLパラメーターを渡します。 何も起きていません!



問題は、Wineがすべてを正直にエミュレートして、システムではなく、Wineの下にインストールされたブラウザーを起動したいということです。 ベアワインでは、これは観察されません。 したがって、何も起こりません。



もちろん、ブラウザをインストールすることもできますが、システムのネイティブアプリケーションで必要なドキュメントを開かないでください。 これにより、エミュレータとオペレーティングシステムの相互作用の問題が発生します。



これを行うために、Wineコレクションにはいくつかのコマンドがあります 。 「チーム」という用語は好きではありませんが、文字通り翻訳されています。



その中にはwinebrowserコマンドがあります。これは、オペレーティングシステムセットからネイティブアプリケーションでURLを開きます。 また、URLがファイルを参照できる場合、非常に深刻なメカニズムを手に入れることができます。



winebrowser http://www.winehq.org



winebrowser ftp.winehq.org



winebrowser irc://irc.freenode.net/#winehq



winebrowser ファイル:// c:\\ windows \\ win.ini





たとえば、KDEでは、理論上、最初の2つのURLはKonquerorで、3番目はKonversationで、最後はKWriteで開く必要があります。



その結果、前述のGetWineAvail()関数を使用すると、コードは次のようになります。



// Delphiコード



プロシージャ OpenUrl (url string;

var

S 文字列 ;

始める

GetWineAvail()の場合

S := 'winebrowser' + url

他に

S := url ;

ShellExecute( 0、 'open' PChar (S) nil nil SW_SHOW;

終わり ;



...

OpenURL( 'mailto:support@microolap.com?Subject = PgMDD:%20Support Request';

OpenURL( 'http://microolap.com/products/database/postgresql-designer/help/';

...



または:



// Cコード

void OpenUrl( char * url);

{

char s [ 255 ];

if (GetWineAvail())

{

strcpy(s、 "winebrowser" );

strcat(s、url);

}

他に

{

strcpy(s、url);

}



ShellExecute( NULL"open" 、s、 NULLNULL 、SW_SHOW);

}



...

OpenURL( "mailto:support@microolap.com?Subject = PgMDD:%20Support Request" );

OpenURL( "http://microolap.com/products/database/postgresql-designer/help/" );

...



All Articles