SendKeys.Send NullReferenceException (SendKeys.Send NullReferenceException)


問題描述

SendKeys.Send NullReferenceException (SendKeys.Send NullReferenceException)

I am trying to send keys to a control on my form. But I am getting a NullReferenceException and I don't know why. The code is about as basic as it gets:

Private Sub Button19_Click(sender As System.Object, e As System.EventArgs) Handles Button19.Click
    DateTimePicker2.Focus() 'commenting out this line has no effect
    SendKeys.Send("{F4}") 'error thrown on this line
End Sub

The error reported is object reference not set to an instance of an object but Send is a shared method so doesn't need an instance.

Strangely if I ignore the error it works fine and F4 is passed to the control. I know there was an issue with sendkeys and UAC but I thought this had been solved (I am using 4.0 framework)


參考解法

方法 1:

That call is not throwing an exception, the exception is thrown in the SendKeys.LoadSendMethodFromConfig() and is handled internally (so if you were to put a try/catch around that call you would see no exception is actually caught in your user code).  

You're seeing it in the debugger because you have your exceptions set to break on any exception thrown, regardless of where it occurs or if it has been handled.

I suggest going to Tools > Options > Debugging and check the box next to "Enable Just My Code".

Here's what the method throwing the exception looks like. Note that it is swallowing all exceptions on purpose:

    private static void LoadSendMethodFromConfig()
    { 
        if (!sendMethod.HasValue) 
        {
            sendMethod = SendMethodTypes.Default; 

            try
            {
                // read SendKeys value from config file, not case sensitive 
                string value = System.Configuration.ConfigurationManager.AppSettings.Get("SendKeys");

                if (value.Equals("JournalHook", StringComparison.OrdinalIgnoreCase)) 
                    sendMethod = SendMethodTypes.JournalHook;
                else if (value.Equals("SendInput", StringComparison.OrdinalIgnoreCase)) 
                    sendMethod = SendMethodTypes.SendInput;
            }
            catch {} // ignore any exceptions to keep existing SendKeys behavior
        } 
    }

(by Matt Wilkoroken)

參考文件

  1. SendKeys.Send NullReferenceException (CC BY-SA 3.0/4.0)

#.net-4.0 #winforms #vb.net #sendkeys #.net






相關問題

SendKeys.Send NullReferenceException (SendKeys.Send NullReferenceException)

訪問 MarkupExtension.ProvideValue 中的構造函數參數 (Access to a constructor parameter within MarkupExtension.ProvideValue)

調試時使用 WorkflowInvoker 發生瘋狂的內存洩漏 (Crazy memory leak with WorkflowInvoker while debugging)

為跨域的 .NET Framework 靜默安裝創建部署應用程序? (Creating a deployment application for .NET Framework silent install across domain?)

Windows 窗體關閉後刪除的窗體數據 (Form data erased after Windows form is closed)

如何從 php wordpress 服務器呈現 aspx 頁面 (How to render an aspx page from a php wordpress server)

嘗試通過方法“System.Web.Helpers.Json.Decode(System.String)”訪問字段“System.Web.Helpers.Json._serializer”失敗 (Attempt by method 'System.Web.Helpers.Json.Decode(System.String)' to access field 'System.Web.Helpers.Json._serializer' failed)

如何使用 Windows 資源管理器顯示項目和詳細信息展開/折疊 (How to Display Items and Details with Windows Explorer Expand/Collapse)

在 C# 中通過反射訪問屬性 (Accessing attribute via reflection in C#)

連續輸入時不要引發 TextChanged (Don't raise TextChanged while continuous typing)

MSMQ 異步異常行為 - .NET 4.0 與 .NET 2.0 (MSMQ asynchronous exception behavior - .NET 4.0 vs .NET 2.0)

多線程 WMI 調用 - 如何最好地處理這個? (Multithreading WMI calls - how best to handle this?)







留言討論