Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получить название окна программы exe (https://javascript.ru/forum/dom-window/86826-poluchit-nazvanie-okna-programmy-exe.html)

sashgera 01.11.2025 13:24

Получить название окна программы exe
 
Здравствуйте
Подскажите пожалуйста, как при поиощи JS записать в переменную название окна программы Project1.exe. Окно программы будет скрыто (программа написана в Delphi и скрытие окна выглядит так: Application.ShowMainForm:=False;)
Название окна программы будет меняться каждую минуту.
JS будет работать в гаджете, который (кажется) использует IE8 (https://learn.microsoft.com/en-us/pr.../system-gadget)

вот, нагуглил js, он работает, дальше, чтобы получить название окна, не знаю что можно сделать
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 - не запущена");
    }
}

sashgera 02.11.2025 05:38


sashgera 05.11.2025 03:52

если есть возможность, пожалуйста, напишите - возможно, то, что я хочу реализовать, или в принципе не возможно. Тогда я буду думать о реализации других вариантов
Гаджет (Windows Sidebar) использует модифицированный IE8, поддерживает ActiveXObject("WScript.Shell"), ActiveXObject("Scripting.FileSystemObjec"), javascript, jQuery, разметку-HTML, CSS-стили и тд.

Aetae 05.11.2025 13:57

Увы красивого решения судя по беглому гуглу нет.
Ты можешь получить заголовок по процессу примерно так:
tasklist /v /fi "IMAGENAME eq Project1.exe" /fo list
(чтоб в utf 8, добавить в начало: cmd /c chcp 65001 && )
И выцепить примерно так:
output.match(/^Window Title:\s*(.*)/m)[1]

Но это требует вызова отдельного окна +с кодировками могут быть вопросы и т.д. и т.п.

По хорошему если ты хочешь чтоб твой гаджет работал с твоей же программой - пусть твоя программ предоставляет COM интерфейс(или какой угодно ещё, вплоть тупо до записи в файлик), тогда ты сможешь с ней напрямую общаться без костылей.

sashgera 08.11.2025 08:44

Цитата:

Сообщение от Aetae (Сообщение 558145)
вплоть тупо до записи в файлик

Aetae, программа Project1.exe написана в Delphi и какой-то результат процедуры можно записывать не в название окна программы, а например, в файл .txt.
Затем гаджет легко считывает запись из файла .txt.
Но есть нюанс, при сохранении программой записи в txt, рядом с курсором, на доли секунды возникает значок индикатора загрузки
вот, как на картинке:

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

Попробую еще раз обратиться на форум Delphi, чтобы программа могла добавить запись сразу в див файла calendar.html, у которой путь, например, такой:
C:\Users\sashka\AppData\Local\Microsoft\Windows Sidebar\Gadgets\CalendarPlus.gadget\calendar.html

Aetae 08.11.2025 11:44

sashgera, GPT говорит чтоб курсора не было надо писать файл в background thread используя TThread.CreateAnonymousThread . Но я хз, delphi и палкой не трогал.:)


Часовой пояс GMT +3, время: 05:35.