Xojo запустить/запустить другое приложение (Mac)

Я хочу, чтобы моя программа запускала другое настольное приложение.

Пробовал выполнить оболочку (открыть имя приложения), но это не работает.

Есть ли другой способ?

Заранее спасибо.


person Mitch Match    schedule 08.09.2013    source источник


Ответы (3)


Другая возможность — использовать стандартный Xojo FolderItem и использовать метод Launch.

Dim f as folderitem = specialfolder.applications.child("AppName")
if f <> nil and f.exists then
  f.launch
end

Справочная документация: http://docs.xojo.com/index.php/SpecialFolder http://docs.xojo.com/index.php/FolderItem.Launch

person BKeeney Software    schedule 09.09.2013
comment
Я совершенно забыл о FolderItem.Launch! Это определенно лучший способ, и кроссплатформенный тоже. - person ianmjones; 10.09.2013
comment
Единственная потенциальная проблема, если приложение находится не в стандартном месте, в этом случае вам нужно либо найти или уже знать, где находится приложение, либо переключиться на использование команды open через шелл. - person ianmjones; 10.09.2013

dim s as new Shell
s.Execute("open -a ""Finder""")

' Check error code and do something about it...
if s.ErrorCode <> 0 then
  MsgBox("Error code: " + Str(s.ErrorCode) + EndOfLine + "Output: " + s.Result)
end if

Измените «Finder» на любое приложение, которое вам нужно, или создайте строку и передайте ее s.Execute(). Обязательно используйте экранированные кавычки, особенно если в имени приложения есть пробелы.

person ianmjones    schedule 09.09.2013

Я не знаком с Xojo, однако «запуск» приложения в OS X сложен. Есть много вещей, которые вам нужно учитывать, особенно если он уже запущен.

Я рекомендую вам рассмотреть два возможных варианта: либо использовать возможность Xojo запускать собственный код C для запуска одного из трех методов -[NSWorkspace launchApplication...]: https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/doc/uid/20000391-SW23

В качестве альтернативы используйте инструмент командной строки Apple open:

/usr/bin/open -a "App Name"
/usr/bin/open -a "/Applications/App Name.app"
person Abhi Beckert    schedule 08.09.2013