03.02.2011, 11:47 | #1 |
Участник
|
Хочу зеленый калькулятор, используя WinApi
Здравствуйте, уважаемые коллеги. Хочу покрасить фон открытых окон в Windows из Аксапты, используя WinApi. Перечитал здесь и в инете кучу всего. Везде советуют следующее :
В классе WinApi прописываем SetClassLong X++: client static int setClassLong(int hWnd, int offset, int newValue) { DLL _winApiDLL = new DLL(#UserDLL); DLLFunction _setClassLong = new DLLFunction(_winApiDLL, 'SetClassLongW'); _setClassLong.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord); _setClassLong.returns(ExtTypes::DWord); return _setClassLong.call(hWnd, offset, newValue); } X++: static void GreenCalc(Args _args) { #define.GCL_HBRBACKGROUND (-10) int hWnd; int brush,oldBrush; WinGDI WinGDI = new WinGDI(0); ; hWnd = winapi::findWindow('','Калькулятор'); brush = WinGDI.createSolidBrush(WinAPI::RGB2int(0,255,0)); oldBrush = WinAPI::getClassLong(hWnd, #GCL_HBRBACKGROUND); WinAPI::setClassLong(hWnd, #GCL_HBRBACKGROUND, brush); WinAPI::invalidateRect(hWnd); WinGDI.deleteObject(oldBrush); } AX2009, WinXP
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 03.02.2011 в 11:58. |
|
03.02.2011, 11:55 | #2 |
Участник
|
Pustik, это сработал матофильтр.
Совершенно не представляю почему. Пришлите пожалуйста в личку название функции, которое вы хотите ввести. Поправим матофильтр. |
|
03.02.2011, 12:00 | #3 |
Участник
|
Цитата:
Исправил. Извините |
|
03.02.2011, 12:27 | #4 |
Участник
|
потому что e rect считается нецензурным словом Гы.
|
|
03.02.2011, 14:01 | #5 |
Участник
|
Скорее всего, setWindowLong выдает ACCESS DENIED - нельзя поменять некоторые параметры класса "извне", т.е. из другого процесса. Ведь у каждого - свой набор дескрипторов и созданной вами кисти нет в объектах ядра калькулятора. По всей видимости, из этих соображений и запрещено менять кисть в окне другого процесса.
PS. В WinApi есть функция DuplicateHandle, которая позволяет копировать хэндлы между процессами. Но она не поддерживает объекты WINGDI
__________________
Axapta v.3.0 sp5 kr2 |
|
03.02.2011, 14:33 | #6 |
Участник
|
Ох уж эти WinApi функции. Иногда, у меня от них начинает болеть голова.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|