Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Свернуть окно запущенной программы, средствами vbs 
:(
    Опции темы
mihanik
Дата 22.3.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Итак...

Задача у меня стоит такая.

1. Запустить из своего скрипта стороннюю программу (да хоть Word. Без разницы)
2. Свернуть окно запущенной программы на панель задачь.

1-е сделать могу. Даже несколькими способами.
2-е что-то никак не получается

Всё это делаю в VBS...

Кто-нибудь может дать идею?


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 22.3.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



А почему не запускать бы его сразу minimized?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 22.3.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Гы...
Дык не получается...  smile 

Что-то типа этого?

Код

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run AppName, 2


Или другой режим вместо 2 (ну... 7, например)
(испробовал все режимы от 0 до 10)

Не всегда срабатывает. А мне надо 100%-е срабатывание. 
Уже сутки бьюсь.

Сейчас у меня идея есть.
Можно создать ярлычёк для программы с установленным свойством minimized и запускать прогу через ярлык.
Это всё равно, что из Питера в Москву через дальний восток, но...

Попробую...





--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 22.3.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Код

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run(AppName, 7, False)
Должно работать...

Правда, с Вордом есть одна загвоздка - он пытается восстановить свой предыдущий размер...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 22.3.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Цитата(Akina @  22.3.2007,  15:06 Найти цитируемый пост)
Правда, с Вордом есть одна загвоздка - он пытается восстановить свой предыдущий размер... 


Гы...
И не он один...
Вот почему я и говорю, что работает не в 100% случаев...


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 22.3.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



mihanik 
Извертел во всех направлениях следующий скрипт:

Код

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("WinWord e:\text.rtf", 7, False)
msgbox "Started with return = " & Return


Не могу найти условий, при которых Ворд стартует НЕСВЕРНУТЫМ.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 22.3.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Дорогой, Akina!

А кто сказал, что надо открывать какой-либо документ?
Короче так.

Akina, запусти ворд сначала вручную ( и оставь его висеть ), а потом запусти свою программу...

Вот так, например, ворд выскочит на экран.

Код

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("WinWord", 7, False)
msgbox "Started with return = " & Return


Добавлено @ 16:26 
С ярлыком то же самое получается...
Если прежнее состояние программы было max, то ничего не получается.
Если же программа была не на весь экран, то всё срабатывает...

Я сейчас повешусь... smile

Добавлено @ 16:27 
Ярлык создаю так...


Код

Sub RunOutlook ()
Dim WshShell, oShellLink

         set WshShell = CreateObject("wscript.Shell")
         set oShellLink = WshShell.CreateShortcut(FullPathCScript & "Outlook.lnk")
         oShellLink.TargetPath = OutlookPath & "Outlook.exe"
         oShellLink.WindowStyle = 7
         oShellLink.Save

End Sub


Добавлено @ 16:32 
Использовать sendkeys "%( ){DOWN}{DOWN}{DOWN}{ENTER}" тоже не выход.

Не известно, где будет фокус находиться...

Это сообщение отредактировал(а) mihanik - 22.3.2007, 16:23


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
mihanik
Дата 22.3.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Хм...
Интересно, а где в реестре, допустим Outlook, хранит размер окна при последнем запуске?



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 22.3.2007, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Так речь о том, чтобы запустить ЕЩЕ ОДИН ЭКЗЕМПЛЯР??? тю-ю-ю... с этого и надо было начинать...

Боюсь, что тут тебе не повезло - надо искать окно Ворда через FindWindow, а это API, а через VBS туда... ну не знаю как, короче. Но вряд ли по прямой.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 22.3.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Ну...
В принципе, можно выгружать все экземпляры этого приложения до работы основной части программы.
Примерно так...

Код

Sub KillAllOutlook
Dim Process

'ON ERROR RESUME NEXT

   ' Закроем все экземпляры outlook, которые сейчас запущены...
   For Each Process in GetObject("winmgmts:"). _ 
       ExecQuery ("select * from Win32_Process where name='outlook.exe'")
       Process.terminate(0)
   Next
   
   If Err.Number Then Err.Clear
   
   ' Ждём 1 секунду
   Wscript.Sleep 1000
   
ON ERROR Goto 0
End Sub


А потом запускать свою прогу.

Но, повторяю, что если последнне состояние окна было максимальным, то описанные выше решения не подходят...

Добавлено @ 16:54 
Цитата(Akina @  22.3.2007,  16:42 Найти цитируемый пост)
Так речь о том, чтобы запустить ЕЩЕ ОДИН ЭКЗЕМПЛЯР??? 


А кто говорил, что это должен быть единственный экземпляр ?   smile 



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 22.3.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ну-ка, попробуй вот это...
Код

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("WinWord /n", 7, False)
msgbox "Started with return = " & Return





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 22.3.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Так...
С Вордом сработало...

Как бы теперь с Outlook'ом так же поступить


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
mihanik
Дата 23.3.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Akina, тебе за "соучастие" +.

Проблема пока не решена.
Пока на неё махну рукой. (дело терпит)
Пусть это будет особенностью работы программы...  smile 

В описалове так и скажу....  smile 

Если кто сможет дать идею работающую в любом случае, буду рад.

Решения только на VBS



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 23.3.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Бага, описанная в документации - это фича программы. Не забивай себе голову.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.