powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как проверить через VBA / API , запущено приложение или нет?
18 сообщений из 18, страница 1 из 1
Как проверить через VBA / API , запущено приложение или нет?
    #32380530
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380573
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно проверить названия всех открытых окон и найти окно с нужным заголовком приложения.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function MeIsRun(TitleFind As String) As Long
Dim WinTitle As String *  256 , cnt  As Long, hwnd As Long
Const GW_HWNDNEXT =  2    ' следующее окно
Const GW_CHILD = 5      ' Child-окно для окна, указанного в hwnd

' поиск окна начать с Рабочего стола
    hwnd = GetDesktopWindow&
' все остальные окна для него - Child
    hwnd = GetWindow(hwnd, GW_CHILD)
    Do While hwnd <>  0 
        cnt = GetWindowText(hwnd, WinTitle,  255 )
        If InStr( 1 , WinTitle, TitleFind) =  1  Then
            MeIsRun = hwnd
            Exit Do
        End If
        hwnd = GetWindow(hwnd, GW_HWNDNEXT) ' следующее окно
    Loop
End Function

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
' определить hwnd Рабочего стола
Declare Function GetDesktopWindow& Lib "user32" ()
' узнать hwnd окна относительно указанного hwnd
Declare Function GetWindow& Lib  "user32"  (ByVal hwnd As Long, _
   ByVal wCmd As Long)
' прочитать заголовок окна
Declare Function GetWindowText& Lib  "user32"  Alias  "GetWindowTextA"  _
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long)
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380595
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А hwnd у окна все время одинаковый или windows сама ему присваивает его ?

Скажем запущен Access и каркулятор стандартный, как определить что он запущен?
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380607
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
hwnd разный, это особенно очевидно, когда запущено два Аксесса или калькулятора. Надо проверять заголовок окна, а не hwnd.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380608
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwnd - это как номерок из гардероба, а старая ворчливая гардеробщица - это windows.... программы без вешалок я не запускаю и с сумками тоже, за потерю важной информации в запущенной мной программе windows ответственность не несет и т.д.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380617
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема не такая простая для меня. Если можно то попроще и поподробней.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380622
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторЕсли можно то попроще и поподробней.
Если можно то покороче и подлиннее.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380625
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы найти нужное окно нужно знать, как оно называется.

С калькулятором всё просто:
If MeIsRun("Калькулятор") > 0 Then
' запущен

С Access'ом сложнее, т.к. заголовок окна может изменяться:
1. К стандартному названию окна "Microsoft Access" может добавиться название формы в режиме Maximezed;
2. Окно называется так, как оно записано в строке "Заголовок приложения".
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380628
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понимаю. С этими вопросами в другой форум или за книжки по WinAPI32. Но просто хотелось узнать чуть более чем написали в топиках.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380636
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Allll
Вот , стало кое что проясняться.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380637
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Объясняю. Заголовок окна - это то, что написано на окне сверху. На такой синенькой полосочке. Вот эти заголовки эта программа и проверяет.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380638
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Обпозднел.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380658
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВС
Ага. Теперь понял.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380670
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда функция перебирает все окна и возвращает тебе их hwnd, по нему можно многой всякой интересной инфы узнать, т.е. бывает ищут не по загловку, а по exe файлу процесса создавшего это окно (это через рцтв вытягивается....ну не сразу конечно :) )

А еще при поиске по загловку окна можно еще указывать класс окна (или токо по загловку), тоды круг значительно сужается, например у Access класс главного окна OMain. Так что если ты знаешь класс окна и он уникальный, то удобнее искать токо по классу.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380674
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380689
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SergeySV

>Когда функция перебирает все окна и возвращает тебе их hwnd, по нему можно многой всякой интересной инфы узнать, т.е. бывает ищут не по загловку, а по exe файлу процесса создавшего это окно (это через рцтв вытягивается....ну не сразу конечно :) )

О, вот это интересней. По exe файлу. Как?
Что значит не сразу , а как же?

>А еще при поиске по загловку окна можно еще указывать класс окна (или токо по загловку), тоды круг значительно сужается, например у Access класс главного окна OMain. Так что если ты знаешь класс окна и он уникальный, то удобнее искать токо по классу.

Черт , как интересно. Но боюсь у тебя времени не вагон, чтобы вкратце разъяснить мне этот момент.
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380711
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, какое окно ты хочешь найти в итоге?
...
Рейтинг: 0 / 0
Как проверить через VBA / API , запущено приложение или нет?
    #32380833
amel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в API про симафоры и что-то еще там было не помню .....
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как проверить через VBA / API , запущено приложение или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]