Что нового

Изменение стандартной иконки в windows

lexa322

Новичок
Сообщения
4
Репутация
0
Здравствуйте. Прошу помощи, есть скрипт в котором запускается access 2010 с параметрами. Как изменить иконку на панели задач на свою, в врапере вставил иконку, но толку нет, аксесс запускается со своей стандартной иконкой.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Глобальный модератор.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Есть два варианта как это сделать.
1. Сменить иконку исполняемого файла "access 2010".
2. Программно сменить иконку окна, но для этого нужно выполнить код в контексте этого процесса, т. е. нужен инжект DLL, причем библиотека должна быть такой же разрядности что и процесс.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Prog [?]
Есть два варианта как это сделать.
Третий ;D
Код:
#include <WinAPIEx.au3>
#include <WindowsConstants.au3>

If Not Run('notepad.exe') Then Exit 1
$hWnd = WinWait('[Class:Notepad]', '', 3)
If Not $hWnd Then Exit 2
Local $ahIcon[5]

For $i = 0 To 4
	$ahIcon[$i] = _WinAPI_ShellExtractIcon('shell32.dll', $i + 100, 32, 32);mb 16
	If $ahIcon[$i] Then _SendMessage($hWnd, $WM_SETICON, 0, $ahIcon[$i])
	Sleep(1000)
Next

For $i = 0 To 4
	If $ahIcon[$i] Then _WinAPI_DestroyIcon($ahIcon[$i])
Next
 

joiner

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

lexa322

Новичок
Сообщения
4
Репутация
0
joiner
Этот скрипт будет выполняться на сервере терминалов, там нет антивируса. Скриптов будет несколько, каждый скрипт будет запускать access к определенной бд, и у каждой бд своя иконка.
 
Автор
L

lexa322

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

Вложения

  • ris1.jpg
    ris1.jpg
    24.9 КБ · Просмотры: 17
  • ris2.jpg
    ris2.jpg
    3.4 КБ · Просмотры: 75

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
lexa322 [?]
а на панели задач по прежнему стандартная картинка
Панель задач имеет класс, а свёрнутые программы читай кнопки. Задача сводится к тем же методом получить дескриптор кнопки с неким текстом (access наверно) и применить к ней иконку. Если текст иной, то наверно сделать запрос иконки у каждой кнопки и если одна из кнопок совпадёт с заведомо вычисленной контрольной суммой, то получить дескриптор и применить иконку.
 
Верх