Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541

Узнать название окна программы exe в Windows

19.10.2025, 20:59. Показов 3673. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Вот так я проверяю, запущена ли программа Project1.exe или нет

JavaScript
1
2
3
4
5
6
7
8
function test(){
    var process = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("Select * from Win32_Process Where Name = 'Project1.exe'");
    if(process.Count > 0){
        $("#xxx1").html("Project1.exe - запущена");
    }else{
        $("#xxx1").html("Project1.exe - не запущена");
    }
}
Подскажите, пожалуйста, как получить и записать в переменную название заголовка окна (Caption) Project1.exe
- Project1.exe скрыт и работает в фоне (программа написана в Delphi и скрытие окна выглядит так: Application.ShowMainForm:=False;)
- название заголовка окна изменяется каждую минуту
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2025, 20:59
Ответы с готовыми решениями:

Создать скрипт,который создаст папку с названием Март,а в ней 31 файл с названием от 1 до 31
Помогите пожалуйста,нужен код к заданию Создать скрипт,который создаст папку с названием March,а в...

Как в Windows XP выполнить вызов окна "Добавить задание" Планировщика заданий из окна "Выполнить"?
Необходимо вызвать окно "Мастер планирования заданий", которое вызывается через "Добавить задание"...

AutoIt работает с Java-окнами или только с окнами Windows?
AutoIt работает с Java окнами или только с Видовскими ?

57
6977 / 2869 / 1102
Регистрация: 06.06.2017
Сообщений: 9,750
20.10.2025, 10:09
По умолчанию в винде нет встроенных ActiveX-копонентов, работающих с любыми окнами. Со сторонними решаемо.
Либо тащить заголовок с пом. powershell, но я бы не советовал.
Ещё можно с пом. tasklist, но только у видимых окон, для скрытых он покажет "Н/Д".
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 11:55  [ТС]
FlasherX, пожалуйста, покажите пример с powershell. Я гуглил 2 дня, и ничего не нашел для решения своего вопроса.
Я делаю гаджет Windows (Windows Sidebar) - https://learn.microsoft.com/en... ebar-entry
Windows Sidebar использует модифицированный IE8, поддерживает ActiveXObject("WScript.Shell"), ActiveXObject("Scripting.FileSystemObjec t"), javascript, jQuery и тд.
0
6977 / 2869 / 1102
Регистрация: 06.06.2017
Сообщений: 9,750
20.10.2025, 14:01
Цитата Сообщение от sashgera Посмотреть сообщение
Windows Sidebar использует модифицированный IE8
А именно? Его отрисовывает IE8?
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 15:23  [ТС]
FlasherX, есть программа Windows Sidebar которая предустановленна на win7, на win10 ее также можно где ни будь скачать и установить.
Цитата Сообщение от FlasherX Посмотреть сообщение
Его отрисовывает IE8?
гаджеты выглядят ((отрисовываются) на рабочем столе так:
Кликните здесь для просмотра всего текста
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 17:39  [ТС]
FlasherX, подтверждающей информации что Windows Sidebar (гаджеты) использует IE8 я не нашел, в файлы с пргой я тоже заглянуть не могу, но, любой гаджет использует:
- HTML-разметку
- стили CSS
- javascript или jqwery
- при использовании new ActiveXObject("WScript.Shell") - в обычных браузерах IE8, которые предустановленны в древних версиях windows - браузер показывает предупреждение 'Страница может содержать опасные программы (элементы ActiveX)...'. - в гаджете такого предупреждения нет, или метод getComputedStyle не поддерживается в IE8 и в гаджете этот метод так же не поддерживается. Поэтому я предположил, что Windows Sidebar использует модифицированный ie8.
0
6977 / 2869 / 1102
Регистрация: 06.06.2017
Сообщений: 9,750
20.10.2025, 19:21
sashgera, про то, как выглядят гатжеты я прекрасно знаю, хотя я предпочёл бы XWidget.

Вопрос в другом: скрытое окно от гатжета или какого-то иного процесса?
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 19:30  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Вопрос в другом: скрытое окно от гатжета или какого-то иного процесса?
FlasherX, нет, не от гаджета, скрытое окно в сторонней программы Project1.exe, написанной в Delphi.
Гаджет будет считывать переменную, в которой есть имя заголовка окна Project1.exe (здесь проблем нет).
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 21:30  [ТС]
FlasherX, в спойлере, есть скрин программы Project1.exe, сейчас она не скрыта, заголовок окна этой программы - '12'. Двенадцать - это непрочитанные письма, заголовок окна будет меняться каждую минуту, если кол-во непрочитанных писем изменится.
Ну и как я уже писал, программа Project1.exe будет скрыта (будет работать в фоне)
Кликните здесь для просмотра всего текста
0
2804 / 502 / 120
Регистрация: 26.09.2020
Сообщений: 949
Записей в блоге: 5
20.10.2025, 21:54
sashgera, для проверки: запустите ваш Project1.exe, дождитесь пока запустится полностью, запустите консоль PowerShell, вставьте туда команду:
PowerShell
1
(gps Project1.exe | ? MainWindowTitle).MainWindowTitle
Если покажет нужный заголовок, думу думайте стоит ли PowerShell каждую минуту запускать…
0
6977 / 2869 / 1102
Регистрация: 06.06.2017
Сообщений: 9,750
20.10.2025, 21:58
sashgera, ясно. Значит с компонентом IE не судьба.
Как уже писал, powershell не советую. Лучше давайте возьмём AutoItX3.dll.
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 22:18  [ТС]
FlasherX, зпустил Windows PowerShell (x86), нажал правую клавишу, что бы вставить команду - (gps Project1.exe | ? MainWindowTitle).MainWindowTitle
но консоль сразу выдала результат (сори, ни когда не пользовался консолью PowerShell)
результат в спойлере
Кликните здесь для просмотра всего текста
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 23:01  [ТС]
FlasherX, извиняюсь, не тот скрин выложил, вот новый скрин результата PowerShell
Кликните здесь для просмотра всего текста
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.10.2025, 23:49  [ТС]
FlasherX, библиотека AutoItX3.dll имеет расширение .dll, но по факту является утилитой. Эту библиотеку нужно регистрировать в системе с помощью команды. Гаджет, который я разрабатываю, ждут мои друзья, они далеки от всего этого, максимум - смогут установить гаджет.
Я почти разработал гаджет, который имеет - календарь, добавление событий календаря, праздники, погода, часы, будильник, секундомер, таймер, ну и кол-во непрочитанных писем (которые пока в разработке)
Поэтому AutoItX3.dll мне не подойдет.
Можно, конечно не показывать кол-во непрочитанных писем в заголовке окна программы, а сохранять их в .txt. Но и здесь есть нюансы - при добавлении текста в txt и последующем сохранении, рядом с курсором появляется на доли секунды индикатор загрузки и ничего с этим сделать нельзя (ответ форума Делфи: индикатор загрузки добавляет система, ничего сделать нельзя)
Вам большое спасибо за помощь!! Буду думать, что еще можно сделать..
0
2804 / 502 / 120
Регистрация: 26.09.2020
Сообщений: 949
Записей в блоге: 5
21.10.2025, 01:30
Цитата Сообщение от sashgera Посмотреть сообщение
но консоль сразу выдала результат (сори, ни когда не пользовался консолью PowerShell)
Наверно и не стоит начинать
По ошибке, надо просто полный синтаксис использовать:
PowerShell
1
(Get-Process -Name firefox | Where-Object { $_.MainWindowTitle }).MainWindowTitle
сокращенный, в древней версии не умеет.

Добавлено через 1 час 3 минуты
Костыль, костыльный.
Скрипт get_title.vbs:
  1. Ищет утилиту GetWindowTitle.exe, если её нет — компилирует.
  2. Для этого ищется компилятор Microsoft.NET Framework — csc.exe.
  3. В папке где ежит этот скрипт появится GetWindowTitle.exe и исходный код программы GetWindowTitle.cs.
  4. Запускает утилиту GetWindowTitle.exe с указанным именем процесса.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
' запускать для консоли, для Блокнота, так:  cscript //nologo get_title.vbs notepad
 
Dim fso, sh : Set fso = CreateObject("Scripting.FileSystemObject")
Set sh = CreateObject("WScript.Shell")
 
Dim src, exe
src = "GetWindowTitle.cs"
exe = "GetWindowTitle.exe"
 
' ---------- 1.  поиск компилятора ----------
Function FindCsc()
    Dim paths, p
    paths = Array( _
        "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe", _
        "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe", _
        "C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe", _
        "C:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe")
    For Each p In paths
        If fso.FileExists(p) Then
            FindCsc = """" & p & """"
            Exit Function
        End If
    Next
    FindCsc = ""
End Function
 
Dim cscPath : cscPath = FindCsc()
If cscPath = "" Then
    WScript.Echo "Компилятор csc.exe не найден. Установи .NET Framework 2.0 или 4.0."
    WScript.Quit 1
End If
 
' ---------- 2.  создание и компиляция кода, если нет exe ----------
If Not fso.FileExists(exe) Then
    Dim code, tf
    code = _
"using System;" & vbCrLf & _
"using System.Diagnostics;" & vbCrLf & _
"class GetWindowTitle{" & vbCrLf & _
"  static void Main(string[] args){" & vbCrLf & _
"    if(args.Length==0){Console.WriteLine(""Usage: GetWindowTitle <process>"");return;}" & vbCrLf & _
"    string proc=args[0];" & vbCrLf & _
"    Process[] ps=Process.GetProcessesByName(proc);" & vbCrLf & _
"    string t=null;" & vbCrLf & _
"    foreach(Process p in ps){if(!string.IsNullOrEmpty(p.MainWindowTitle)){t=p.MainWindowTitle;break;}}" & vbCrLf & _
"    if (t == null) Console.WriteLine(""null""); else Console.WriteLine(t);" & vbCrLf & _
"  }" & vbCrLf & _
"}"
    Set tf = fso.CreateTextFile(src, True)
    tf.Write code : tf.Close
 
    Dim cmd
    cmd = cscPath & " /nologo /target:winexe /out:" & exe & " " & src
    Dim rc : rc = sh.Run(cmd, 0, True)
    If rc <> 0 Or Not fso.FileExists(exe) Then
        WScript.Echo "Не удалось скомпилировать GetWindowTitle.exe"
        WScript.Quit 1
    End If
End If
 
' ---------- 3.  вызов ----------
If WScript.Arguments.Count = 0 Then
    WScript.Echo "Usage: cscript //nologo get_title.vbs <processname>"
    WScript.Quit 1
End If
 
Dim procName : procName = WScript.Arguments(0)
Dim exec, line
Set exec = sh.Exec(exe & " " & procName)
 
Do Until exec.StdOut.AtEndOfStream
    line = exec.StdOut.ReadLine
    WScript.Echo line
Loop
1
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
21.10.2025, 06:07  [ТС]
iNNOKENTIY21, сейчас 5 утра, я уже иду на работу, приду домой 23 окт, тогда и проверю ваш код. У меня на работе компов много, но нам даже не разрешают свернуть рабочую прогу, протестить ваш код сейчас не получится. Спасибо.
0
6977 / 2869 / 1102
Регистрация: 06.06.2017
Сообщений: 9,750
21.10.2025, 20:17
Цитата Сообщение от sashgera Посмотреть сообщение
но по факту является утилитой.
С чего это вдруг? Вы эту информацию с потолка взяли?
Цитата Сообщение от sashgera Посмотреть сообщение
Эту библиотеку нужно регистрировать в системе с помощью команды.
Необязательно. Если поищите её в разделе, то наткнётесь на мои посты, гдя я давал решения без регистрации.
Цитата Сообщение от sashgera Посмотреть сообщение
Поэтому AutoItX3.dll мне не подойдет.
Это пока не обосновано.
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
21.10.2025, 23:25  [ТС]
FlasherX, да, я был не прав. Если не трудно, вы можете показать пример получения заголовка окна программы без регистрации библиотеки AutoItX3.dll.
Я сейчас на работе, дома буду 23 окт. Сейчас пишу вам с телефона. Буду благодарен, если покажите пример.
0
6977 / 2869 / 1102
Регистрация: 06.06.2017
Сообщений: 9,750
22.10.2025, 12:06
sashgera, прежде нужно понять, чем запускается код скрипта. Через какой интерфейс? Это просто командная строка, где может быть любая командная запись, или же это зашитая в интерфейс настроек история?
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
22.10.2025, 12:30  [ТС]
FlasherX, командную строку можно запустить через javascript? Мне нужно, чтобы переменная с названием программы была в файле .js
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2025, 12:30
Помогаю со студенческими работами здесь

Написание VBS скрипта: чтобы при появлении определённого окна с названием "Window1" оно сразу же закрывалось
Добрый вечер! Заранее оговорюсь - в скриптах не бум-бум. Подскажите пожалуйста как написать...

Нет общего доступа между Windows XP и Windows 2008R2\Windows 7
Прощу помощи разобраться в проблеме: ПК с установленной windows XP не может открыть папку общего...

Загрузка Uefi Windows 7-11 минуя Windows boot manager через "\Windows\System32\Winload.efi"
Мне нужен способ как можно загружать винду напрямую минуя WBM через сторонний загрузчик с помощью...

Как присвоить свои названия кнопкам в MsgBox и определить разрядность windows x86-x64
Как переделать кнопки или свои назвать вместо да сделать x64 вместо нет сделать x86 если не...

Узнать, сколько времени прошло после установки Windows
Как узнать сколько времени прошло с инсталляции Windows через батник?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru