如何恢复默认图标?(WinXP和Win7)
How to restore default icon? (WinXP and 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();
要恢复正确的图标,您必须先WM_GETICON
和HICON
,然后才能设置自己的图标并保留它们。然后,当您想要恢复图标时,使用保存的图标WM_SETICON
。
与GCLP_HICON
相同。
旁白:nsIBaseWindow
现在有一个可编写脚本的nativeHandle
了吗?耶!我还不知道。是时候抛弃我在没有nativeHandle
时的旧标题破解了。
相关文章:
- thread_local unordered_map加上 AccessibleObjectFromWindow 无法在 WinXP 中运行
- 可能的Qt5错误:调用setFixedSize()禁用主窗口的关闭按钮(在Win7下)
- Win7 C++ - 从以用户身份登录的服务启动可执行文件的问题
- 在Win7上,在默认端点上轮询音频会话有时会崩溃
- G++无法编译Win7,64位(MinGW.org GCC-6.3.0-1)
- DirectShow 在 Win7/Win10 上失败并显示黑框和0x80070005
- dll + boost + VS2015 + WinXP == crashes
- 当可以在Win7上正确生成Linux时,如何使用SWIG在Linux上生成C#
- 在win7上使用MinGW 6.3.0构建提升1.63.0
- C++ 在 WinXP 上互锁操作
- .CAB中的.EXE无法从Win7、IE8安装
- 是否有可能 - 使用设备而不是模拟器在Win7上开发Win Phone 7
- Win7 命名空间扩展确定 IShellItem 是文件还是文件夹
- Qt on Visual Studio 2010 and win7 64bit
- Win7中的Eclipse CDT(Juno):在PATH中找不到g++,iostream未解析和其他有趣的东西
- _WIN32_WINNT macro for both win7 and winxp
- 获取窗口图标,把它放在画布上,覆盖图像,保存为ico (WinXP和Win7)
- 如何恢复默认图标?(WinXP和Win7)
- 基于 Win7 构建的程序无法在 WinXP 上运行
- 使应用程序在使用Win7功能的WinXP/Vista上运行