如何象foxmail4.0一样在word中加入自定义的按钮(100分)

  • 主题发起人 主题发起人 grays
  • 开始时间 开始时间
用的接口的,com好像可以实现的,具体的挺难的
我也有想过,但没做过,有机会试试
 
呵呵,很简单,根本不是Com技术!
Word在启动的时候自动加载"/Program Files/Microsoft Office/Office10/Startup"目录下的模板。
所以使用VBA将按钮做在一个模板里面,放置在这个目录下,就可以了。

Word2000有bug,启动的时候不判断该目录下的模板是否含有宏,所以可以顺利启动,顺利加载宏,顺利的执行。
但是Office XP就不同了,这个Bug已经解决了,会提示Foxmail.dot该文件内含有宏,是否打开之类的宏警告。
要解决这个问题,需要进行VBA签名。Office自己提供一个Selfcert.exe可以一定程度解决自己使用的宏的问题。
如果要开发产品,就需要申请正规授权网站的签名了。
 
to yzhshi:
那如果我想作这样一个按钮该如何呢,就是如何写个dot?
给出例子
 
to yzhshi:
好像不是这样的,删除了foxmail.dot按钮照样存在
 
是这个样子的,你可以查找整个硬盘,将Foxmail.dot全部删除。
下面是他的代码。Foxmail还不错,不去更改你的Normal.dot,呵呵。
代码:
Public Const SW_NORMAL = 1
Public Const SW_MINIMIZE = 6
Public Const HKEY_CURRENT_USER = &H80000001
Public Const KEY_QUERY_VALUE = &H1
Public Const REG_SZ = 1  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ; ' Unicode nul terminated string

Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long  ;  ;  ;  ; ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Foxmail()
'
 ;  ; On Error Resume Next
'HKEY_CURRENT_USER/Software/Aerofox/FoxMail/V3.1
'FoxMailPath
 ;  ; Dim hKey As Long
 ;  ; Dim tmpStr As String * 255
 ;  ; Dim PathLen As Long
 ;  ; 
 ;  ; If RegOpenKeyEx(HKEY_CURRENT_USER, "Software/Aerofox/FoxMail/V3.1", 0, KEY_QUERY_VALUE, hKey) <> 0 Then
 ;  ;  ; Exit Sub
 ;  ; End If
 ;  ; PathLen = Len(tmpStr)
 ;  ; If RegQueryValueEx(hKey, "FoxmailPath", 0, REG_SZ, ByVal tmpStr, PathLen) <> 0 Then
 ;  ;  ; Exit Sub
 ;  ;  ; RegCloseKey hKey
 ;  ; End If
 ;  ; RegCloseKey hKey
 ;  ; FoxmailPath = Trim(Left(tmpStr, PathLen))

 ;  ; ActiveDocument.Save
 ;  ; If (ActiveDocument.Path <> "") And (ActiveDocument.FullName <> "") Then
 ;  ;  ; ShellExecute 0, "Open", FoxmailPath, """" & ActiveDocument.FullName & """", "", SW_NORMAL
 ;  ; End If
End Sub
 
to yzhshi:
不知道呢的代码是哪儿找导的,我删除了foxmail.dot按钮照样存在
我用的是foxmail4.0亚
比如我建了一个呢提供的代码的 dot,如何加入word中!
 
知道了知道了!
给分!
回答的都有分
 
后退
顶部