小编Nat*_*ate的帖子

从VSTO加载项中检测Word 2016中的文本更改

这个问题与如何从Word 2010 Addin(用C#开发)中获取"KeyPress"事件密切相关(实际上包括来自该问题答案的示例代码),但这特别是关于在Windows 10中运行的Word 2016的Visual Studio(Professional)2015中进行开发.

我正在尝试检测来自VSTO加载项的Word文档中的文本何时更改.我从中了解到

没有事件驱动的方式来做到这一点.Word在文本更改时根本不发送事件.

我看过两个解决方法:

  1. 使用WindowSelectionChange事件.不幸的是,当通过按箭头键,使用鼠标,执行撤消或重做以及可能的其他操作来更改选择时,似乎会发送此事件,但在键入或删除时则不会.
  2. 使用低级keydown事件挂钩.这已在其中一些StackOverflow问题中进行了讨论,并且在2014年2月的Visual Studio论坛中的一个帖子中也被称为"广泛传播的技术" .

我试图在如何从Word 2010 Addin(用C#开发)中获取"KeyPress"事件的答案中使用代码,它似乎观察每个keydown事件,除了那些发送到Word 2016.

这是我正在使用的代码,以便于参考.

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;

namespace KeydownWordAddIn
{
    public partial class ThisAddIn
    {
        private const int WH_KEYBOARD_LL = 13;
        private const int WM_KEYDOWN = 0x0100;

        private static IntPtr …
Run Code Online (Sandbox Code Playgroud)

vsto ms-word office-addins visual-studio-2015

15
推荐指数
2
解决办法
3850
查看次数

创建NSSavePanel后未调用NSString类别方法

我有一个简单的Cocoa应用程序(39 KB压缩),它由一个应用程序委托(AppDelegate)和一个NSString类别(以及一个什么都不做的默认窗口)组成.

在它的init方法中,AppDelegate创建一个NSSavePanel.在执行此操作之前和之后,它按NSString类别方法记录由空格和换行符修剪的字符串的长度:stringByTrimmingWhitespace.

该字符串由空格和换行符组成.我的类别方法应修剪所有这些字符,从而产生一个0长度的字符串.

NSSavePanel创建之前,我的stringByTrimmingWhitespace方法被调用并返回一个0长度的字符串,如预期的那样.在NSSavePanel创建之后,我的stringByTrimmingWhitespace方法似乎没有被调用,并且调用的任何方法都不会修剪换行符.但是,一个NSString完全相同的不同的类别方法stringByTrimmingWhitespaceAndNewlines- 被调用并按预期工作.

我完全不知道是什么导致我stringByTrimmingWhitespace没有被调用或如何修复它(除了重命名它,这就是我所做的).我还担心其他类的其他类别方法可能会被破坏.有谁知道这里发生了什么?

objective-c objective-c-category

0
推荐指数
1
解决办法
399
查看次数