WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WindowFromPoint APIはx64でコンパイルするとバグる?

WindowFromPoin とうAPI関数があります。
これは、マウスカーソル座標の下のウィンドウハンドルを教えてくれる便利なものなのですが、VisualStudioでいつもどおりコードを書いてコンパイルしてみたところ、カーソルが動いているにもかかわらず、自分自身のexeのウィンドウハンドルしか返さない現象が発生。

コードはこんな感じ。

Private
 Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Integer, ByVal yPoint As Integer) As Integer
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Integer
Private Declare Function GetAncestor Lib "user32" Alias "GetAncestor" (ByVal hWnd As Integer, ByVal gaFlags As Integer) As Integer
Private Structure POINTAPI
    Public x As Integer
    Public y As Integer
End Structure

Sub Test()
    Dim objPOINTAPI As POINTAPI
    Call GetCursorPos(objPOINTAPI)
    Dim intWhd As Integer = WindowFromPoin(objPOINTAPI.x, objPOINTAPI.y)
End Sub


intWhd に目的のウィンドウハンドルが返ってくるはずなのですが・・・。
何度か新規にプロジェクトを作成してコンパイルしてみても結果は変わらず。
以前同様のコードで作成したプロジェクトでは問題なく動いていたので、コードをそのままコピーしてみてもやはりおかしい。

以前作成したプロジェクトを何がちがうのか、あぁ、OSがちがいました。
以前hVistaのx86、今回はWindows7のx64。
なので、VisualStudioはデフォルトの"Any Cpu"でコンパイルされいます。

そういえば、ちょっとまえにこんな記事を自分で書いていました。
http://codename2010.blog11.fc2.com/blog-entry-123.html
と、いうことでターゲットCPUを "x86" にしてコンパイルしてみたらあっさり解決。
ためしにターゲットCPU "x64" でコンパイルしてみると、やはり同じ問題が発生でした。
これは、バグなんでしょうか??

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://codename2010.blog11.fc2.com/tb.php/125-3ec3df7f
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。