我有一个简单的问题.如何从我的C#代码编程访问Aero快照.就像,如果我单击一个按钮"左将",我希望我的程序窗口向左捕捉,就像手动毒品手动一样.我看了一眼,但是所有问题似乎都是关于Aero Snap不使用表格,并防止其捕捉表格.没有编程性地捕捉表单.我很高兴使用介入.谢谢 解决方案 假设您在Windows 7上,可以将Asosnap Keypress发送到当前活动的窗口. codeproject codeproject关于这样做的非常好的文章. 还请查看 this 如此问题. 看来,这样做的一种方法是在用户32.dll中使用sendmessage 这是一个例子,假设"记事本"是您要将击键发送到的程序: [DllImport("user32.dll", EntryPoint = "FindWindowEx")] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwnd
以下是关于 aero-snap 的编程技术问答
是否有一种方法可以编程使用特定窗口/窗口ID的C或C ++最大化效果? 例如: 或 (来源: thebuzzmedia.com ) 我使用的无边界QT窗口和QT具有获取窗口ID的API.我想在没有已知触发器的情况下编程触发Windows效果. 解决方案 我不想谈论实现此效果所涉及的每个细节,不仅有很多事情正在发生,而且您还提到您了解将窗户放置在其特定位置的逻辑.在这个答案中,我将解决我认为的两个主要挑战: 如何接收和处理最大化事件? 如何创建 aero snap 效应的近似? 要回答第一个问题,我们必须分析哪个事件处理程序最大化窗口时会触发: void resizeEvent(QResizeEvent* evt); // Invoked first, void paintEvent(QPaintEvent* event); // then second, void changeEvent(QEvent* evt);
我对Aero Snap不使用正在处理的应用程序有问题(Windows桌面,本机C ++应用程序),我对正在发生的事情有些困惑,因为它似乎应该只是工作,开箱即用. 我在Mininal Win32应用程序上使用了间谍++,并在我按Win-Left时获取以下消息: 00030D1C P WM_KEYDOWN NVIRTKEY:VK_LWIN CREPEAT:1 scancode:5b frepeat:0 FUP:0 FUP:0 00030D1C P WM_KEYDOWN NVIRTKEY:VK_LWIN CREPEAT:1 scancode:5b Frepeat:1 FUP:0 00030D1C p wm_keydown nvirtkey:vk_lwin crepeat:1 scancode:5b frepeat:1 fup:0 00030D1C S WM_GETMINMAXINFO LPMMI:0043FCBC 00030D1C R WM_GETMINMAXINFO LPMMI
有没有办法使用 C 或 C++ 为特定窗口/窗口 ID 以编程方式调用 Aera 最大化效果? 例如: 或 我正在使用一个无边框的 Qt 窗口,并且 Qt 有一个用于获取窗口 ID 的 API.我想在没有已知触发器的情况下以编程方式触发 windows 效果. 解决方案 我不想谈论实现这个效果所涉及的每一个细节,不仅有很多事情发生而且你还提到你理解逻辑将窗户放置在其特定位置.在这个答案中,我将解决我认为的两个主要挑战: 如何接收和处理最大化事件? 如何创建aero snap 效果的近似值? 为了回答第一个问题,我们必须分析哪个事件处理程序 在窗口最大化时触发: void resizeEvent(QResizeEvent* evt); // Invoked first, void paintEvent(QPaintEvent* event); // then second, void changeEvent(QEvent* evt);
如何确定是否使用 Aero Snap 功能调整了窗口的大小?GetWindowPlacement 函数给出了最新的“恢复"窗口大小.我使用它如下: WINDOWPLACEMENT wp = {}; wp.length = sizeof(WINDOWPLACEMENT); ::GetWindowPlacement( hWnd, &wp ); 例如,它给出了 wp.rcNormalPosition = {top=208 bottom=520 left=152 right=510},它应该是{top=0 bottom=1920 left=152 right=510}. 请注意,GetWindowRect 给出了完全相同的错误结果.这是我的错,GetWindowRect 给出了正确的结果. 我需要在程序退出时保存窗口状态并在启动时加载它,所以我需要知道窗口是如何放置的.如何找出实际的窗口坐标? 好吧,我用 notepad.exe(和一些其他标准 Windows 组件)做了
如何确定是否使用 Aero Snap 功能调整了窗口的大小?GetWindowPlacement 函数给出了最新的“恢复"窗口大小.我使用它如下: WINDOWPLACEMENT wp = {}; wp.length = sizeof(WINDOWPLACEMENT); ::GetWindowPlacement( hWnd, &wp ); 例如,它给出了 wp.rcNormalPosition = {top=208 bottom=520 left=152 right=510},它应该是{top=0 bottom=1920 left=152 right=510}. 请注意,GetWindowRect 给出了完全相同的错误结果.这是我的错,GetWindowRect 给出了正确的结果. 我需要在程序退出时保存窗口状态并在启动时加载它,所以我需要知道窗口是如何放置的.如何找出实际的窗口坐标? 好吧,我用 notepad.exe(和一些其他标准 Windows 组件)做了