Что нового

При компиляции не отображаются картинки на кнопках

alex2887

Новичок
Сообщения
57
Репутация
0
Всем привет, возник небольшой вопросик: при компиляции, не отображаются картинки на кнопках(только надписи), а если скрипт не скомпилирован, то все нормально. Как можно это исправить? Что я делаю не так? Заранее благодарю.

Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

Opt("GUIOnEventMode", 1)
GUICreate('Wi-Fi', 170, 60) ;Создание главного окна
$ButtonON=GUICtrlCreateButton('ON', 10, 15, 65, 35) ;создание кнопки с размермаи и координатами расположения
GUICtrlSetImage($ButtonON, @ScriptDir & '\Wi-Fi .ico') ;так вставляется картинка для кнопки
GUICtrlSetOnEvent($ButtonON, 'START') ;так создается событие по нажатию на кнопку. Там где написано "$ButtonON", это ID кнопки, здесь может быть написано что угодно, а "START" -это название функции
$ButtonOFF=GUICtrlCreateButton('OFF', 90, 15, 65, 35)
GUICtrlSetImage($ButtonOFF, @ScriptDir & '\Wi-Fi2.ico') ; вставка картинки для кнопки
GUICtrlSetOnEvent($ButtonOFF, 'STOP') ;создание события, которое будет выполняться, если нажать на кнопку "STOP". также "STOP" название функции.
$ButtonCLOSE=GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE"); это событие для системных кнопок (свернуть, развернуть, закрыть).
;Если применить системное событие для обычной кнопки, то оно будет работать с ошибкой, будут глюки.
GUISetState(@SW_SHOWNORMAL) ;отображение окна
While 1
  Sleep(1000)   ; Обычное ожидание в цикле
WEnd

Func START()
  Run(@ComSpec & " /c " & 'C:\devcon\devconx64 enable "USB\VID_0BDA&PID_8179"', "", @SW_HIDE)
  Sleep(1000)
  WinSetState('Wi-Fi', '', @SW_MINIMIZE)
  Sleep(5000)
  Run(@ComSpec & " /c " & 'NETSH WLAN start hostednetwork', "", @SW_HIDE)
EndFunc

Func STOP()
  Run(@ComSpec & " /c " & 'C:\devcon\devconx64 disable "USB\VID_0BDA&PID_8179"', "", @SW_HIDE)
  Sleep(1000)
  WinSetState('Wi-Fi', '', @SW_MINIMIZE)
EndFunc

Func CLOSE()
  Exit
EndFunc
 

xXx

Меценат
Меценат
Сообщения
171
Репутация
55
Перечитайте внимательно справку по функции
Код:
GUICtrlCreateButton()
GUICtrlSetImage()

сравните примеры и ваш скрипт.
 
Автор
A

alex2887

Новичок
Сообщения
57
Репутация
0
Честно, посмотрел, даже пробовал менять на свои рисунки, но после компиляции тоже самое получается, т.е. пока .exe находится в папке с рисунками, они отображаются на кнопках, стоит только вытащить из папки- все, картинок как не бывало, остаются только надписи. Пробовал подставлять рисунки .bmp тоже самое получилось.
 

joiner

Модератор
Локальный модератор
Сообщения
3 247
Репутация
552
а в чем проблема то? в коде же ясно указано откуда подгружать картинки. если в папке с программой картинок нет, то и отображаться они не будут. для этого используют картинки из ресурсов программы. на форуме много примеров, как добавить картинки в программу при компиляции и как их потом устанавливать. вот как раз в этом случае картинки будут всегда, откуда бы не запускалась программа
 
Автор
A

alex2887

Новичок
Сообщения
57
Репутация
0
joiner сказал(а):
а в чем проблема то? в коде же ясно указано откуда подгружать картинки. если в папке с программой картинок нет, то и отображаться они не будут. для этого используют картинки из ресурсов программы. на форуме много примеров, как добавить картинки в программу при компиляции и как их потом устанавливать. вот как раз в этом случае картинки будут всегда, откуда бы не запускалась программа
Блин, сперва подумал что понял, теперь понял, что ничего не понял :stars:. Если Вас не затруднит, не могли бы Вы подправить мой скрипт, как он должен быть или хотя бы направить в нужном направлении? Я понял, что можно добавить в с помощью команды FileInstall эти иконки в папку, где будет лежать .exe и ярлык просто выкинуть на рабочий стол, но это костыль (хоть и рабочий), но хочется сделать как нужно, но знаний моих не хватает. Справку читал, но сразу во все вникнуть не получается (для обычного пользователя).
 

joiner

Модератор
Локальный модератор
Сообщения
3 247
Репутация
552
самый простой способ
Код:
#AutoIt3Wrapper_Res_Icon_Add=wi-fi.ico
#AutoIt3Wrapper_Res_Icon_Add=wi-fi2.ico
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

Opt("GUIOnEventMode", 1)
GUICreate('Wi-Fi', 170, 60) ;Создание главного окна
$ButtonON=GUICtrlCreateButton('ON', 10, 15, 65, 35) ;создание кнопки с размермаи и координатами расположения
GUICtrlSetImage($ButtonON, @ScriptFullPath, 201) ;так вставляется картинка для кнопки
GUICtrlSetOnEvent($ButtonON, 'START') ;так создается событие по нажатию на кнопку. Там где написано "$ButtonON", это ID кнопки, здесь может быть написано что угодно, а "START" -это название функции
$ButtonOFF=GUICtrlCreateButton('OFF', 90, 15, 65, 35)
GUICtrlSetImage($ButtonOFF, @ScriptFullPath, 202) ; вставка картинки для кнопки
GUICtrlSetOnEvent($ButtonOFF, 'STOP') ;создание события, которое будет выполняться, если нажать на кнопку "STOP". также "STOP" название функции.
$ButtonCLOSE=GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE"); это событие для системных кнопок (свернуть, развернуть, закрыть).
;Если применить системное событие для обычной кнопки, то оно будет работать с ошибкой, будут глюки.
GUISetState(@SW_SHOWNORMAL) ;отображение окна
компилируем через AutoIt3Wrapper
справка здесь
 
Автор
A

alex2887

Новичок
Сообщения
57
Репутация
0
joiner спасибо Вам, благодаря вашей подсказке, до меня наконец дошло (и еще набрел на пару тем) и все заработало. Я скачал установщик Wrapper и с помощью него скомпилировал скрипт. Теперь иконки отображаются как нужно. Тему можно закрывать. :laugh: :IL_AutoIt_1:
 
Верх