Access911.net   |   a9BBS   |   OTaA System  
  搜索文章︰  
Access911歡迎您光臨  
   主頁      上傳      简体版       論壇     
設為首頁  |  加入收藏   
  
你現在的位置︰文章索引 -> 文章分類 -> OA  
 首頁|  近日更新|  下載  |  文章索引  |  搜索|  朮語|  承接工程|  
 
系統正在加載內容,請耐心等待...
 
 查詢
 窗体
 報表
 
 
 VBA
 函數
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 發布
 OA
 ASP/ASP.NET
 其他語言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用軟件
 參考文檔
 業主作品
 网友大作
 
 
友情鏈接
 access911.net
 
訪問人次
 1701836
 
站長 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 訂閱

顯示附加信息 >>>

如何更改EXCEL標題欄左側的圖標和文件菜單左側的圖標?

作者︰cg1  摘自︰access911.net  ︰cg1  更新日期︰2012-12-4  瀏覽人次︰

 

問題︰

如何更改EXCEL標題欄左側的圖標和文件菜單左側的圖標?

 


回答︰


Excel標題欄的圖標可以用FindWindow根據excel的類名或者標題名找到。文件菜單左側的圖標其實就是工作簿的圖標,在 Workbook.WindowActivate 事件中重复調用 ChangeIcon 就可以實現更改工作簿的圖標。工作簿的圖標是Excel主窗体圖標的子窗体上的圖標。可以用FindWindowEx找到對應的句柄。

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Const WM_SETICON = &H80


'以下代碼在Excel2003中測試有效。
Public Sub ChangeIcon()
    Dim IStyle As Long, hIcon As Long
    Dim strIconPath As String
    Dim hwnd As Long
    Dim hWndSub As Long
    Dim hWndSub2 As Long
    
On Error Resume Next

    strIconPath = "c:\temp\a.ico"
    If strIconPath <> "" Then
        hIcon = ExtractIcon(0, strIconPath, 0)
        'appExcel 就是 Excel.Application 對象
        hwnd = FindWindow(vbNullString, appExcel.caption)
        SendMessage hwnd, WM_SETICON, True, hIcon
        SendMessage hwnd, WM_SETICON, False, hIcon
        DrawMenuBar hwnd
        
        hWndSub = FindWindowEx(hwnd, 0, "XLDESK", vbNullString)
        hWndSub2 = FindWindowEx(hWndSub, 0, "EXCEL7", appExcel.ActiveWorkbook.name)
        SendMessage hWndSub2, WM_SETICON, True, hIcon
        SendMessage hWndSub2, WM_SETICON, False, hIcon
        DrawMenuBar hWndSub2
    End If
End Sub


 

本站文章旨在為該問題提供解決思路及關鍵性代碼,并不能完成應該由网友自己完成的所有工作,請网友在仔細看文章并理解思路的基礎上舉一反三、靈活運用。

access911.net 原創文章,作者本人對文章保留一切權利。
如需轉載必須征得作者同意并注明本站鏈接

 

 
相關文章
     沒有手動相關文章
 
評論
     查看或發表更多的評論,請單擊這里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期︰2000年4月2日  |  設計施工︰陳格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陳格 保留所有權利