Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Изменение заголовка окна программы (http://forum.oszone.net/showthread.php?t=289472)

ES 15-10-2014 20:20 2415857

Изменение заголовка окна программы
 
Добрый день!

Мне хотелось бы, чтобы можно было изменить заголовок главного окна запущенной программы.
То есть, чтобы вместо, например, "Калькулятор" у меня бы светилось "Супер-калькулятор".

Причем желательно, чтобы это можно было сделать из BAT-ника.
Например, батник, который сначала запускает мою программу, а потом меняет ей заголовок:

PHP код:

calc.exe
заменить_заголовок 
"Супер-калькулятор" 

Подскажите возможно ли это сделать?
Существуют ли для этого какие-нибудь сервисные программы, утилиты?

LehaMechanic 15-10-2014 20:26 2415859

AutoIt скорее всего сможет. Но это универсальный инструмент, а не однокнопочный, с ним разбираться надо.

Blast 15-10-2014 20:40 2415875

Пример: Captain - рядом со скомпилированным исполняемым файлом есть ahk проект, правда от старой версии наверное.

Iska 15-10-2014 22:31 2415930

Цитата:

Цитата LehaMechanic
с ним разбираться надо. »

Ничего особо сложного. В простых случаях:
Цитата:

Код:

calc.exe
заменить_заголовок "Супер-калькулятор"


достаточно простого же:
читать дальше »
Код:

AutoItSetOption("MustDeclareVars", 1)

Run("calc.exe")
WinWait("Калькулятор")
WinSetTitle("Калькулятор", "", "Супер-калькулятор")

Exit(0)


На AutoHotKey:
читать дальше »
Код:

Run, calc.exe
WinWait, Калькулятор
WinSetTitle, Калькулятор, , Супер-калькулятор


Более сложный вариант — с запуском приложения и смены заголовка именно этого приложения (скажем — нам нужны пять калькуляторов, у трёх из которых свой заголовок; пример, понятно, надуманный). Сам скрипт:
читать дальше »
Код:

#include <MsgBoxConstants.au3>

AutoItSetOption("MustDeclareVars", 1)


If Not $CmdLine[0] = 2 Then
        MsgBox($MB_OK + $MB_ICONINFORMATION, "Usage", "Usage: " & @CRLF & @CRLF & @ScriptName & " <File to execute> <New title>")
        Exit(1)
EndIf

Local $sFile    = $CmdLine[1]
Local $sNewTitle = $CmdLine[2]

If FileExists($sFile) Then
        Local $lPID = Run($sFile)

        If $lPID = 0 Then
                MsgBox($MB_OK + $MB_ICONERROR, "Error", "Can't execute file [" & $sFile & "].")
                Exit(2)
        EndIf

        Local $hWnd = 0

        Local $aWinList
        Local $i

        Do
                Sleep(100)

                $aWinList = WinList()

                For $i = 1 To $aWinList[0][0]
                        If $lPID = WinGetProcess($aWinList[$i][1]) Then
                                $hWnd = $aWinList[$i][1]
                                ExitLoop
                        EndIf
                Next
        Until $hWnd <> 0

        WinSetTitle($hWnd, "", $sNewTitle)
Else
        MsgBox($MB_OK + $MB_ICONERROR, "Error", "Can't find file [" & $sFile & "] for execute.")
EndIf

Exit(0)


и пример к этому скрипту для нашей надуманной ситуации с пятью калькуляторами:
читать дальше »
Код:

calc.exe
calc.exe
Script.exe "c:\windows\system32\calc.exe" "Супер-калькулятор 1"
Script.exe "c:\windows\system32\calc.exe" "Супер-калькулятор 2"
Script.exe "c:\windows\system32\calc.exe" "Супер-калькулятор 3"


Iska 15-10-2014 23:01 2415944

Цитата:

Цитата Iska
Более сложный вариант — с запуском приложения и смены заголовка именно этого приложения (скажем — нам нужны пять калькуляторов, у трёх из которых свой заголовок; пример, понятно, надуманный). »

То же самое на AutoHotKey:
читать дальше »
Код:

IfNotEqual, 0, 2
{
        MsgBox, 64, Usage, Usage: %A_ScriptName% <File to execute> <New title>
        Exit, 1
}

IfNotExist, %1%
{
        MsgBox, 16, Error, Can't find file [%1%] for execute
        Exit, 2
}

Run, %1%, , UseErrorLevel, PID

IfEqual, ErrorLevel, ERROR
{
        MsgBox, 16, Error, Can't execute file [%1%]
        Exit, 3
}

WinWait, ahk_pid %PID%
WinSetTitle, , , %2%


(пример многим проще из-за внутренней поддержки AHK прямого доступа к окну по идентификатору процесса).

ES 27-10-2014 06:28 2420855

Спасибо, ребята за помощь.
У меня еще есть вопросы:

Цитата:

Цитата Iska
Более сложный вариант — с запуском приложения и смены заголовка именно этого приложения (скажем — нам нужны пять калькуляторов, у трёх из которых свой заголовок; пример, понятно, надуманный). »

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

Цитата:

Цитата Iska
Более сложный вариант — с запуском приложения и смены заголовка именно этого приложения (скажем — нам нужны пять калькуляторов, у трёх из которых свой заголовок; пример, понятно, надуманный). Сам скрипт: »

а этот скрипт на чем написан?

Цитата:

Цитата Blast
Пример: Captain - рядом со скомпилированным исполняемым файлом есть ahk проект, правда от старой версии наверное. »

Пока попробовал этот вариант: программой Captain.
Работает хорошо, но есть один недостаток: периодически назначенные мной заголовки слетают.
То есть надо, чтобы периодически они обновлялись, причем программа должна помнить у какого окна какой заголовок, это можно сделать?

Iska 27-10-2014 09:39 2420892

Цитата:

Цитата ES
а этот скрипт на чем написан? »

На AutoIt.

ES 09-11-2014 20:47 2427089

А как быть все-таки со следующей проблемой:

Цитата:

Цитата ES
Работает хорошо, но есть один недостаток: периодически назначенные мной заголовки слетают.
То есть надо, чтобы периодически они обновлялись, причем программа должна помнить у какого окна какой заголовок, это можно сделать? »

В общем периодически заголовки слетают.
Например, выключил компьютер в сон, снова включил - заголовки сбросились...

ES 01-02-2015 07:47 2464580

Цитата:

Цитата ES
В общем периодически заголовки слетают »

Разобрался с программой KillOK.

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


Время: 12:21.

Время: 12:21.
© OSzone.net 2001-