【发布时间】:2016-01-25 11:12:48
【问题描述】:
似乎GetClassName 和其他一些 Windows API 在 WPF 中根本不起作用,而是使应用程序崩溃(无异常)。复制它非常简单。以下是完整代码(创建新的 WPF 应用程序后将其粘贴到 Window1 的代码隐藏中):
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows;
using System.Windows.Input;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
[DllImport("user32.dll")]
static extern IntPtr WindowFromPoint(POINT p);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X, Y;
}
public MainWindow()
{
InitializeComponent();
}
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
var Pos = e.GetPosition(this);
var WindowUnderMouse = WindowFromPoint(new POINT() { X = (int)Pos.X, Y = (int)Pos.Y });
StringBuilder SB = new StringBuilder();
GetClassName(WindowUnderMouse, SB, 50);
MessageBox.Show(SB.ToString());
}
}
}
应用程序在GetClassName 呼叫时为我崩溃。我正在使用 VS2015 + .NET 4.5。
或者是我的事?
【问题讨论】: