2

I just saw a really useful UI feature of the forthcoming Windows 7 ( visit http://www.gizmodo.com.au/2008/10/windows_7_walkthrough_boot_video_and_impressions-2.html and scroll down to the video entitled Super Scientific Video of New Window Resizing Feature)

In a nutshell you can drag a window by the title bar to the top of the screen to maximise it, drag it back down to restore and drag it to the left edge or the right edge of the screen to have it snap into position butted up against the edge you dragged it to, and resized to occupy half the screen.

Now I know there are a bunch of keyboard-based apps that do "similar" things but I've not seen a mouse-based program that does JUST the above, simple, useful and nothing more. If you know of one (or are smart enough to write one) please post the URL :)

Anyway, if I wanted to try and write a small app to do this I have a question:

If I wanted to try and write a small app to do this, could I write it as a .NET app? I guess hooking into Windows' window drag/drop handling is pretty low-level and maybe not something that could be done in C#.NET?

any smartypants here who can knock a small app like this out in their lunchbreak? ;) I'm sure anything mimicing Windows 7 features would prove very popular, at least pre Windows 7's launch.

Edit: The AeroSnap guys (http://www.aerosnap.de/index_eng.htm) have done a nice job of implementing this feature and judging by the number of downloads, it was a popular feature!

4

7 回答 7

6

有一种官方方式:Windows API 代码包

适用于 Microsoft® .NE​​T Framework 的 Windows® API 代码包提供了一个源代码库,可用于从托管代码访问一些新的 Windows 7 功能(以及旧版 Windows 操作系统的一些现有功能)。目前 .NET Framework 中的开发人员无法使用这些 Windows 功能。

此版本 (v1.0) 库中支持的各个功能是:

Windows 7 任务栏跳转列表、图标覆盖、进度条、选项卡式缩略图和缩略图工具栏。Windows 7 库、已知文件夹、非文件系统容器。Windows Shell 搜索 API 支持、Shell 命名空间实体的层次结构以及 Shell 对象的拖放功能。资源管理器浏览器控件。壳牌财产系统。Windows Vista 和 Windows 7 通用文件对话框,包括自定义控件。Windows Vista 和 Windows 7 任务对话框。

于 2009-08-12T09:55:43.020 回答
1

如果您的目标是创建一个适用于所有应用程序以及桌面上所有窗口的挂钩,那么您不能使用托管代码程序集。您将不得不使用生成传统 DLL 的语言(例如 C++)进行编写。

为了在系统级别挂钩,然后挂钩到所有正在运行的应用程序,您必须提供一个可以放置到所有正在运行的应用程序的地址空间中的 dll。我敢说大多数人的日常应用程序中有很大一部分不是托管的 .net 框架应用程序。

于 2008-10-30T04:48:07.870 回答
0

感谢您花时间回答。我将使用 PInvoke 结帐。我假设我需要点击 Windows API 来连接窗口以及实际执行拖动窗口的移动/调整大小?

于 2008-10-30T00:32:27.917 回答
0

试着检查一下这个,你有解释、源代码和官方 MSDN 文档的参考。

http://www.josefcobonnin.com/post/2007/06/19/Hook-Keyboard-and-Mouse.aspx

于 2009-01-18T10:30:51.490 回答
0

尝试查看这些文章:

于 2008-10-30T13:26:46.950 回答
0

pinvoke.net

这是一个很好的参考网站,用于在 .NET 应用程序中通过 PInvoke 使用 Windows API。

于 2008-10-29T21:47:56.253 回答
-1

是的,您可以通过 PInvoke 从 C# 执行此操作。Tbh,学习此类 API 的最佳方法是查看 Bblean 之类的源代码。这将向您展示您需要了解的内容,并且将其暴露给 PInvoke 非常简单。

于 2008-10-29T21:44:46.103 回答