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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   AutoIt - Добавление иконки 24x24 на кнопку формы (http://forum.oszone.net/showthread.php?t=314535)

ypmail 04-05-2016 10:16 2631717

AutoIt - Добавление иконки 24x24 на кнопку формы
 
Есть скрипт, в котором иконка просто берётся из файла navigation.ico. Нужно сделать так, чтобы эта иконка была зашита в полученный из этого скрипта exe.
Пробовал GUICtrlSetImage(-1, "1.exe", -2). Иконка появляется на кнопке 16x16 или 32x32, или мелкая или крупная и кубиками (у меня она 24x24). Как это обойти?
Нужно, чтобы GUICtrlSetImage выводило иконку именно 24x24.

Код скрипта:
Код:

#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=1\2.ico
#AutoIt3Wrapper_Res_Icon_Add=D:\3\2\navigation.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <Word.au3>

Global $hParent, $hForm, $hIcon

$hParent = GUICreate('', 116, 0, 0, 0, 0, $WS_EX_TOOLWINDOW)
$hForm = GUICreate('Выбор шаблона таблички', 240, 378, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_DLGMODALFRAME, $hParent)

$hIcon = _WinAPI_GetClassLongEx($hForm, $GCL_HICON)
_WinAPI_DestroyIcon($hIcon)
_WinAPI_SetClassLongEx($hForm, $GCL_HICON, 0)
_WinAPI_SetClassLongEx($hForm, $GCL_HICONSM, 0)


$Button1 = GUICtrlCreateButton(" Документ", 10, 10, 220, 35)
GUICtrlSetFont(-1, 12, 800, 2, "Times New Roman")
GUICtrlSetImage(-1, "D:\3\2\navigation.ico")


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        Local $oWord = _Word_Create()
                        Local $sDocument = "D:\3\2\1.doc"
                        _Word_DocOpen($oWord, $sDocument)
                        WinActivate($sDocument)
                        Exit
               
        EndSwitch
WEnd


Creat0R 05-05-2016 03:05 2631968

Если по проще, то так:

Код:

FileInstall('D:\3\2\navigation.ico', @TempDir & '\navigation.ico')
GUICtrlSetImage($Button1, @TempDir & '\navigation.ico', 0)


ypmail 05-05-2016 14:05 2632108

Спасибо!

1) Но в случае с FileInstall, судя по справке, картинка извлекается из exe и потом остаётся в папке.
Если же просто использовать GUICtrlSetImage(-1, "1.exe", -2), то нет лишних действий по извлечениям и не остается мусора после работы exe.
Пока решил использовать иконки 16x16 и GUICtrlSetImage(-1, "1.exe", -2). Надеюсь, что когда-нибудь разработчики добавят возможность вывода формата 24x24 в GUICtrlSetImage.

2) Ещё нигде не смог найти как перейти в корневую папку? Т.е. скрипт находится в папке 2, которая находится в папке 1 (...1\2\script.au3).
С помощью @ScriptDir я попаду в папку 2, а как задать путь к папке 1?
Т.е. (@ScriptDir & ?как прописывается в AutoIt на папку вверх?) чтобы попасть в папку 1.

Iska 05-05-2016 16:20 2632178

Цитата:

Цитата ypmail
С помощью @ScriptDir я попаду в папку 2, а как задать путь к папке 1? »

Как обычно — относительным путём, указанием ссылки на родительский каталог «..» от @ScriptDir.

ypmail 06-05-2016 10:12 2632364

Цитата:

Цитата Iska
Как обычно — относительным путём, указанием ссылки на родительский каталог «..» от @ScriptDir. »

Т.е. путь будет выглядеть так?:
@ScriptDir & '..\..'
Что-то не работает

Iska 06-05-2016 12:52 2632424

Цитата:

Цитата ypmail
Т.е. путь будет выглядеть так?:
@ScriptDir & '..\..' »

Так:
Код:

@ScriptDir & '\..'

Creat0R 07-05-2016 22:05 2632834

Цитата:

Цитата ypmail
картинка извлекается из exe и потом остаётся в папке »

Что мешает её удалить по завершении работы скрипта?

ypmail 17-05-2016 14:23 2635412

Цитата:

Цитата Creat0R
Что мешает её удалить по завершении работы скрипта? »

Распаковать, показать, удалить. Зачем машине лишние действия? Я использовал другую иконку 16х16 и использовал GUICtrlSetImage, зашил её в exe, ничего не извлекается и не удаляется. Разработчикам Autoit не мешало бы расширить функционал GUICtrlSetImage.


Время: 22:12.

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