GetWindowRectをVB.netで使用時のエラー
- 題名: GetWindowRectをVB.netで使用時のエラー
- 著者: かつどん
- 日時: 2004/04/19 15:01:16
- ID: 3715
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: GetWindowRectをVB.netで使用時のエラー
- 著者: NowhereMan
- 日時: 2004/04/19 16:18:03
- ID: 3717
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: GetWindowRectをVB.netで使用時のエラー
- 著者: かつどん
- 日時: 2004/04/19 16:45:18
- ID: 3719
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
こんにちは、いつもお世話になっております。
プログラムからFindWindowで取得したハンドルを使用してWindowsAPIのGetWindowRectを使用すると
System.NullReferenceException
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
と言うメッセージが出てしまいます。
[API宣言部分]
' 長方形の左上隅と右下隅の座標を定義する構造体
<StructLayout(LayoutKind.Sequential)> _
Structure RECT
Public left As Long
Public top As Long
Public right As Long
Public bottom As Long
End Structure
' ウィンドウの境界長方形の寸法を取得する関数の宣言
Declare Function GetWindowRect Lib "user32.dll" _
(ByVal hWnd As Long, ByVal lpRect As RECT) As Long
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
[実行部]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strWindowClassName As String
Dim lngWindowHandle As Long
Dim udtWindowRect As RECT
Dim lngWin32apiResultCode As Long
strWindowClassName = "Notepad"
lngWindowHandle = FindWindow(strWindowClassName, vbNullString)
' ウィンドウの境界長方形の寸法を取得
lngWin32apiResultCode = GetWindowRect(lngWindowHandle, udtWindowRect)
' ウィンドウの境界長方形の寸法を表示
With udtWindowRect
Debug.WriteLine("(" & .left & "," & .top & ")-" & "(" & .right & "," & .bottom & ")")
End With
End Sub
ちなみにハンドルは、値が入っております。GetWindowTextなどはこのハンドルで
うまく動きますのでRectに問題がありそうな気がするのですが……
どなたか原因のわかる方がおられましたら、ご教唆くださいますようお願い致します。