Как восстановить значок по умолчанию? (WinXP и Win7)

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648045%28v=vs.85%29.aspx

говорит мне, что:

Если параметр hinst имеет значение NULL, а параметр fuLoad пропускает значение LR_LOADFROMFILE, lpszName указывает загружаемый образ OEM. Идентификаторы образа OEM определены в Winuser.h и имеют следующие префиксы.

Но мне трудно понять это.

Я пытаюсь это, но он бросает все виды ошибок на var hIconBig = LoadImage... а также var hIconSmall = LoadImage... линий.

Cu.import('resource://gre/modules/ctypes.jsm');

var user32 = ctypes.open('user32.dll');
var SendMessage = user32.declare('SendMessageW', ctypes.winapi_abi, ctypes.uintptr_t, ctypes.int32_t, ctypes.unsigned_int, ctypes.int32_t, ctypes.voidptr_t );
var LoadImage = user32.declare('LoadImageA', ctypes.winapi_abi, ctypes.voidptr_t, ctypes.int, ctypes.char.ptr, ctypes.unsigned_int, ctypes.int, ctypes.int, ctypes.unsigned_int);

var IMAGE_BITMAP = 0;
var IMAGE_ICON = 1;
var LR_LOADFROMFILE = 16;

var basewindow = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShellTreeItem).treeOwner.QueryInterface(Ci.nsIInterfaceRequestor).nsIBaseWindow;
var nativeHandle = basewindow.nativeHandle;
var targetWindow_handle = parseInt(nativeHandle);

var hIconBig = LoadImage(null, 'C:\\Documents and Settings\\SONY VAIO\\My Documents\\Downloads\\puzzle.ico', IMAGE_ICON, 256, 256);
var hIconSmall = LoadImage(null, 'C:\\Documents and Settings\\SONY VAIO\\My Documents\\Downloads\\puzzle.ico', IMAGE_ICON, 16, 16);

var successSmall = SendMessage(targetWindow_handle, 0x0080 /** WM_SETICON **/ , 0 /** ICON_SMALL **/ , hIconSmall);
var successBig = SendMessage(targetWindow_handle, 0x0080 /** WM_SETICON **/ , 1 /** ICON_BIG **/ , hIconBig);

var me = Services.wm.getMostRecentWindow(null);
me.alert(successSmall);
me.alert(successBig);

user32.close();

0

Решение

Чтобы восстановить правильный иконки вам придется WM_GETICON HICONдо установки собственных и хранения их. Затем, когда вы хотите восстановить значки, WM_SETICON с этими спасенными.

То же самое для GCLP_HICON.

В сторону: nsIBaseWindow имеет сценарий nativeHandle сейчас? Ура! Я этого еще не знал. Пришло время выбросить мой старый взломанный заголовок, когда не было nativeHandle,

1

Другие решения


По вопросам рекламы [email protected]