将WinForm对齐以编程

彼得·霍夫曼

是否可以对WinForms / C#执行以下操作?

  1. 动态检测正在运行的程序的窗口大小和位置(例如Notepad.exe)?
  2. 将WinForm捕捉到Notepad.exe中的特定位置?
  3. 用其他进程最小化和最大化WinForm窗口(因此当记事本最小化时,WinForm窗口也是如此)吗?

参见例如(黑色形状将是WinForm窗口):

本质上,我需要为程序创建一个工具栏,并且该工具栏应在同一位置“捕捉”到该程序,而不管窗口的位置或大小如何。

呃没有

首先找到记事本窗口的句柄

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

只需为第一个参数传递null,然后将窗口的标题(“记事本”?)作为第二个参数。

一种替代方法是枚举所有窗口并根据标题选择最佳匹配:

using System.Runtime.InteropServices;

public delegate bool CallBackPtr(int hwnd, int lParam);
private CallBackPtr callBackPtr;

public class EnumReport 
{
    [DllImport("user32.dll")]
    private static extern int EnumWindows(CallBackPtr callPtr, int lPar); 

    public static bool Report(int hwnd, int lParam) 
    { 
        Console.WriteLine("Window handle is "+hwnd);
        return true;
    }
}
static void Main()
{

     // note in other situations, it is important to keep 
     // callBackPtr as a member variable so it doesnt GC while you're calling EnumWindows

     callBackPtr = new CallBackPtr(EnumReport.Report);  
    EnumReport.EnumWindows(callBackPtr, 0);
}

然后将WndProc附加到它:

HwndSource src = HwndSource.FromHwnd(windowHandle);
src.AddHook(new HwndSourceHook(WndProc));

在WndProc中,响应窗口的大小调整和移动。

我不确定是否将工具栏设置为记事本窗口的子级。当记事本尝试对其进行管理并对其z深度进行排序时,可能会产生意想不到的效果。

同时,我怀疑这是一件好事。用户将能够在叠加层“下方”输入内容并丢失其光标/文本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法以编程方式将UIImageView对齐到UICollectionViewCell的中心

来自分类Dev

以编程方式将单选按钮对齐到单选组的中心

来自分类Dev

如何以编程方式将标签与x,y坐标对齐

来自分类Dev

如何以编程方式将 TextView 与 ImageView 的中心对齐?

来自分类Dev

XtrReports,xrPictureBox如何将图像向右对齐?Winform Devexpress

来自分类Dev

以编程方式使用AutoLayout将多行UILabel的第一行与UIImage对齐(Objective-C)

来自分类Dev

以编程方式将按钮对齐到UITableView单元格的左侧

来自分类Dev

如何以编程方式将TextView和EditText对齐到水平LinearLayout中?

来自分类Dev

如何将标签的一部分与组框的右侧对齐?WinForm C#

来自分类Dev

以编程方式更改TextView对齐

来自分类Dev

具有ImageView和TextView的RelativeLayout-在ImageView下方将TextView对齐,均以编程方式在RelativeLayout中居中

来自分类Dev

以编程方式将一个视图与底部对齐时,在2个视图之间添加一个视图

来自分类Dev

我可以以编程方式将包含基线对齐的字符串添加到文本块吗?

来自分类Dev

以编程方式在textview的右侧创建并对齐edittext

来自分类Dev

在Monotouch视图中以编程方式对齐元素

来自分类Dev

以编程方式使用自动布局对齐NSView

来自分类Dev

将标题与图像对齐

来自分类Dev

将div彼此对齐

来自分类Dev

将文字与值对齐

来自分类Dev

将中心对齐

来自分类Dev

将DIV右对齐

来自分类Dev

将图形与标题对齐

来自分类Dev

将项目与CSS对齐

来自分类Dev

将视图与中心对齐

来自分类Dev

将div彼此对齐

来自分类Dev

将图片与CSS对齐

来自分类Dev

将glyphicon与标签对齐

来自分类Dev

将桌子彼此对齐

来自分类Dev

将marrangGrob标题与图的左对齐对齐

Related 相关文章

热门标签

归档