状況を想像してください。 当社の製品
は、 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 )
;varS
: 文字列 ;始める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、
NULL 、
NULL 、SW_SHOW);
}
...
OpenURL(
"mailto:support@microolap.com?Subject = PgMDD:%20Support Request" );
OpenURL(
"http://microolap.com/products/database/postgresql-designer/help/" );
...