Возвращаясь к теме по причине того, что периодически возникают проблеммы с "перепутыванием" открытых экземпляров...а это раздражает...оно меня раздражает (с) Жванецкий
Идея и подсказка Maximin, за что большой респект (к сожалению только 1)
дополнительно к методу WinAPI::setClassLong() добавляем метод в WinGDI
PHP код:
#DEFINE.LR_LOADFROMFILE(0x00000010)
#DEFINE.IMAGE_BITMAP (0)
#DEFINE.IMAGE_ICON (1)
#DEFINE.IMAGE_CURSOR (2)
static int liadImage(str _file)
{
DLL dll;
DLLFunction dllFunction;
int result;
;
dll = new DLL('user32.dll');
dllFunction = new DLLFunction(dll,'LoadImageA');
dllFunction.arg(ExtTypes::DWord, ExtTypes::String, ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord);
dllFunction.returns(ExtTypes::DWord);
result = dllFunction.call(null, _file, #IMAGE_ICON, 16, 16, #LR_LOADFROMFILE);
return result;
}
оффтоп:немного хардкода правда, но мне простительно
ну и собсно меняем:
PHP код:
static void AxIconChange(Args _args)
{
#define.GCL_HICON (-14)
#WinAPI
int ico, mainwin;
;
mainwin = infolog.hWnd();
// например для тестового экземпляра стандартная иконка с большой синей буквой "Т" в центре
ico = WinGDI::liadImage("D:\\222\\AxApplT.ico");
WinAPI::setClassLong(mainwin, #GCL_HICON, ico);
}
зы: на всякий случай, прикладываю архивчик с измененными стандартными иконками.
ззы: у себя я меняю автоматически при входе в опре деленный экземпляр аксапты путем указания и последующей обработки необходимой команды в поле "Startap Command" в конфигурационной утилиты. Если интересует могу рассказать как.
Добавил скриншотик, как это выглядит в таскбаре, по порядку: тестовая, рабочая, локальная