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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обратно передать фокус Excel, Передать фокус Excel после Shell 
:(
    Опции темы
AlexanderNO
Дата 11.12.2007, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.12.2007

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



Программно из Excel запускаю командой Shell приложение (DDE), которое будет работать совместно с Excel. Приложение после запуска отбирает фокус. Как вернуть фокус Excel? 
PM MAIL   Вверх
Naghual
Дата 11.12.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Shell(PathName, vbNormalNoFocus)
или
Shell(PathName, vbMinimizedNoFocus)



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
AlexanderNO
Дата 12.12.2007, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.12.2007

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



Спасибо, завтра попробую. Если что не так - доложу.
PM MAIL   Вверх
AlexanderNO
Дата 12.12.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.12.2007

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



Уважаемый Naghual. К сожалению такое управление по Shell не срабатывает: после его выполнения программа DDE все равно перехваитывает фокус и не возвращает.
Тут нужно что - то другое. 
В силу определенных причин я вынужден делать временную задержку, иначе идет сбой. в результате программа выглядит так:
Dim retval As Double
retval = Shell(cdmdir & "\Cdmdde.exe", vbMinimizedNoFocus)
Application.Wait (Now + TimeValue("0:00:01")) 
Есть ли возможность передать фокус после Wait.
PM MAIL   Вверх
kapbepucm
Дата 12.12.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 3
Всего: 12



Может это?
Код
Public Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Public Declare Function SetForegroundWindow Lib "user32.dll" (ByVal HWND As Long) As Long
Public Sub Test()
  Dim FW As Long
  FW = GetForegroundWindow

  Dim retval As Double
  retval = Shell(cdmdir & "\Cdmdde.exe", vbMinimizedNoFocus)
  Application.Wait (Now + TimeValue("0:00:01"))

  SetForegroundWindow FW
End Sub



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
AlexanderNO
Дата 17.12.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.12.2007

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



kapbepucm большое СПАСИБО! Все прекрасно сработало. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

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

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

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



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


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

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


 




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


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

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