Что нового

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

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

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Перечитайте внимательно справку по функции
Код:
GUICtrlCreateButton()
GUICtrlSetImage()

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

alex2887

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

joiner

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

alex2887

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

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

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
самый простой способ
Код:
#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:
 
Верх