Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Раз Ексель, два Ексель... Как подключиться к нужному?
|
|||
|---|---|---|---|
|
#18+
Собственно говоря, ситуация проста - юзером запущено несколько процессов Екселя (открыто несколько книг), а мне из своего приложения нужно подключиться к последнему Екселевскому окну, с которым работал юзер . Тоесть, по нажатию кнопочки в форме нужно каким то образом определить, какое из окон юзер покинул последним (обозначив там некоторые ячейки), подключиться к нему и выполнить некоторые действа.... Приложение на VB.NET самостоятельное, ничего не знает ни об имени книги, ни об имени листа.... К сожалению, GetObject(, "Excel.Application") в этом случае не помошник (дает ссылку только на первый созданный экземпляр Екселя, которого в принципе даже может и не существовать, потому как уже закрыли). Хотя, если допустить что приложение в течении одной сессии будет работать только с единственным Екселем (и потом они оба будут закрыты) - то этот способ прокатывает нормально. Попробовал посмотреть при помощи Код: plaintext 1. 2. 3. 4. Кто нибудь решал подобную задачу? Или хотя бы в какую сторону копать...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 22:33 |
|
||
|
Раз Ексель, два Ексель... Как подключиться к нужному?
|
|||
|---|---|---|---|
|
#18+
<imho> есть такое ощущение, что список процессов мало поможет. здесь нужна история их перелючения. такую "историю" можно отслеживать, повесив глобальный хук на сообщение WM_ACTIVATEAPP. каждый раз по параметрам фиксируя, из какого приложения было сделано переключение (wParam=FALSE - потеря активности приложением и lParam=ThreadId). </imho> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 02:04 |
|
||
|
Раз Ексель, два Ексель... Как подключиться к нужному?
|
|||
|---|---|---|---|
|
#18+
кузятакую "историю" можно отслеживать, повесив глобальный хук на сообщение WM_ACTIVATEAPP. каждый раз по параметрам фиксируя, из какого приложения было сделано переключение (wParam=FALSE - потеря активности приложением и lParam=ThreadId).Скорее всего... Попробуем копнуть в эту сторону.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 14:46 |
|
||
|
Раз Ексель, два Ексель... Как подключиться к нужному?
|
|||
|---|---|---|---|
|
#18+
Попробовал разобраться в этой технологии... Однако, не просто... Примеры, которые нарыл показывают как сделать хук на уровне приложения. Тоесть, вижу что получает/теряет фокус только мое окно. А вот переделать так чтоб на уровне системы, чтоб любое оно отслеживалось - что то не получается... Не подкинете ли примерчик? ps: может быть эта задача слишком сложна, чтоб мне самостоятельно ее решить.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2005, 18:04 |
|
||
|
Раз Ексель, два Ексель... Как подключиться к нужному?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2005, 00:41 |
|
||
|
Раз Ексель, два Ексель... Как подключиться к нужному?
|
|||
|---|---|---|---|
|
#18+
Andres 1Напрямую глобальные хуки в .NET не поддерживаютсяyes, по описанию MSDN - нужно делать native DLL. однако, не все так однозначно :) например, можно установить глобальный хук из exe (!!!) сборки на перехват WH_KEYBOARD_LL. и вопреки процитированному из MSDN утверждению - этот глобальный хук работает. примеры можно найти в сети и на нашем сайте в разделе C#. эта возможность доступна, т.к. windows при обработке низкоуровневых хуков (WH_XX_LL) переключает контексты выполнения. а вот с фильтрами WH_CALLWNDPROC или WH_CBT для глобальных хуков - практически наверняка работать надо ТОЛЬКО через unmanaged dll. PS вообще хуки - это зло :) могут возникнуть настолько сильные тормоза в работе, что впору задуматься о других путях решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2005, 03:42 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=20&tid=1437162]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 356ms |

| 0 / 0 |
