ShellExecute

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

ShellExecute

Сообщение Юстас » 05.01.2004 (Пн) 17:03

Запускаю WinWord.exe через
i = ShellExecute(0, "open", s2, "", "", SW_SHOWMAXIMIZED)
s2 - путь к Ворду. Почему-то при первом вызове функции на экране мельком проскакивает заставка Ворда и исчезает. Программы не видно, хотя в TaskManager процесс отображается. Последующие вызовы функции проходят нормально. Если убить все запущенные процессы Winword.exe в TaskManager' e то опять первый запуск функции не срабатывает. В чем может быть проблема, помогите пожалуйста :cry:

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 05.01.2004 (Пн) 17:17

С exe ShellExecute надо работать хитрее.

Если надо открыть файл, то тут как раз "open" и далее имя файла (file.doc). И редактор doc по-умолчаню откроет файл.

Если надо запустить Word - просто проверь есть ли он и потом используй Shell().
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.01.2004 (Пн) 17:23

Если надо запустить Word, делай так:

Код: Выделить всё
set obj = createobject("Word.Application")
with obj
.visible = true
.documents.open "file.doc"
end with

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 05.01.2004 (Пн) 19:13

CreateObject тоже есть в программе. Это работает нормально. Создаю экземпляр Word.Application без подключенной ссылки на библиотеку, поэтому чтобы не вылетала программа(если не установлен Word), проверяю через FindExecutable наличие Word'a в системе. И как дополнительный прибамбас хочу запуск Word'a из программы сделать. Для разнообразия через ShellExecute, а он упёрся и ни в какую. По совету Гайдара надо тогда создавать файл .doc и запускать его а не Word. Проблема не запустить Word - просто непонятно, почему так странно работает ShellExecute

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 06.01.2004 (Вт) 7:22

Проблема не запустить Word - просто непонятно, почему так странно работает ShellExecute

А что тут странного? Автономный запуск Ворда - он имеет полное право показать Splash Screen (т.е. заставку).

Код: Выделить всё
  Dim obj As Object
  Set obj = CreateObject("Word.Application")
  obj.Visible = True

Запускает Ворд без каких-либо документов.

PS
Если добавить
Код: Выделить всё
  obj.WindowState = wdWindowStateMaximize
  obj.Documents.Add

то еще и с документом как для Шелла.
Последний раз редактировалось Vi 06.01.2004 (Вт) 15:13, всего редактировалось 1 раз.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 06.01.2004 (Вт) 10:52

Вообще-то кроме заставки хотелось бы ещё и саму программу...
Так что VB функция Shell в данном случае оказалась надежней ShellExecute, запускает без проблем.
To gaidar: А если открывать .doc, то надо следить, куда юзер его сохраняет, а то при следующем запуске он вместо чистого документа увидит свой старый сохраненный.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList  
cron