2017-07-02 3 views
0

J'écris un programme Windows et je l'exécuter sur le Mac à l'aide du vin (WineBottler)Comment lancer Finder ou d'autres applications Mac à partir d'un vin (WineBottler) fenêtres programme

Je voudrais pouvoir lancez Finder ou d'autres applications MacOS à partir de mon programme.

Je sais que cela est possible parce que, par exemple, je peux lancer Safari avec cette ligne:

ShellExecute(0, 'open', 'http://www.google.com', nil, nil, 0); 

Je suppose que ce que Safari est l'application par défaut pour le traitement des URL. En fait, même cela va encore réussir à lancer Safari:

ShellExecute(0, nil, 'www', nil, nil, 0); 

D'autre part, en passant d'autres cordes (chemin par exemple dans un fichier texte) lancera les applications par défaut à base de vin pour ces types de fichiers, le cas échéant . Il semble donc que ce qui précède peut lancer soit des applications basées sur guest-os (par exemple Safari), soit des applications basées sur le vin, selon le cas. Maintenant, comment puis-je, par exemple, lancer Finder dans un dossier donné? Ou comment ouvrir un fichier donné, disons un fichier mp3, avec l'application Mac par défaut, plutôt qu'une application vinique (inexistante) pour ce type de fichier?

Remarque: Peut-être la façon dont le vin se lance Safari est à travers l'application "iexplorer.exe" inclus dans le vin - éventuellement l'application enregistrée pour les URLs dans le vin - mais même alors, la question reste la même .exe "appel de programme Safari, ou quelle est l'application par défaut pour les URL? Et comment puis-je faire la même chose pour lancer l'application par défaut pour parcourir les dossiers dans MacOS? Ou l'ouverture de fichiers mp3, et ainsi de suite?

J'ai passé les deux dernières heures à essayer tout ce que je pouvais penser, sans succès. Je ne pouvais pas non plus trouver de solution sur les sites web de vins et de vins-faq. J'utilise Delphi mais toute réponse basée sur l'API Windows est correcte.

Quelqu'un peut-il aider?

Merci!

Répondre

1

La réponse est "winebrowser".

Pour ouvrir, par exemple, un dossier avec l'application native (Finder) je peux appeler:

ShellExecute(0, 'open', 'winebrowser', PChar(PathOfTheFolder), nil, 0); 

De la même manière que je peux passer le chemin d'un fichier texte, être ouvert par TextEdit (application par défaut pour les fichiers * .txt) et ainsi de suite.