2008-10-29 27 views
2

我刚才看到即将推出的Windows 7(查看http://www.gizmodo.com.au/2008/10/windows_7_walkthrough_boot_video_and_impressions-2.html和向下滚动到名为新窗口的超级科学视频大小调整功能视频)挂钩到Windows与C#来开发Windows 7新功能

的真正有用的UI功能简而言之,您可以将标题栏中的一个窗口拖动到屏幕顶部以最大化它,将其拖回到屏幕左侧或屏幕的右侧边缘,以使其对齐对着你拖拽的边缘,并调整大小占据屏幕的一半。

现在我知道有一堆基于键盘的应用程序,做到“相似”的东西,但我从来没见过一个基于鼠标的方案,不只是上面,简单,实用,仅此而已。如果你知道一个(或者是足够聪明,写一个),请张贴网址:)

无论如何,如果我想尝试写一个小的应用程序做到这一点我有一个问题:

如果我想尝试写一个小应用程序来做到这一点,我可以把它写成一个.NET应用程序吗?我猜连接到Windows窗口拖放处理是相当低级的,也许不是在C#.NET中可以完成的事情?

这里的任何smartypants谁可以敲他们的午餐这样的小应用程序吗? ;)我相信任何模仿Windows 7功能的东西都会非常受欢迎,至少在Windows 7发布之前。

编辑:的AeroSnap家伙(http://www.aerosnap.de/index_eng.htm)已经做了实现此功能,并通过下载的数量判断不错的工作,这是一个受欢迎的功能!

+0

并可能发布Windows 7的发布:P – Luke 2008-11-01 00:45:28

回答

-1

是的,你可以从C#,通过PInvoke做到这一点。 Tbh,学习这种API的最佳方式是查看Bblean之类的来源。这会告诉你你需要知道什么,并将它暴露给PInvoke是非常微不足道的。

+0

不,请勿添加用托管代码编写的挂钩。它会导致运行时加载到系统中的所有应用程序中。更糟糕的是,如果另一个应用程序也被管理,那么最终可能会出现错误的运行时版本,无论是针对您的钩子还是其他应用程序。 – erikkallen 2009-01-18 11:37:36

0

pinvoke.net

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

+0

感谢pinvoke.net的链接。很多API细节可以在那里挖掘! – Sprogz 2008-10-30 00:33:24

0

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

+0

是的 - 学习这些东西的最好方法是以我的经验来看bblean。一位朋友正在将Bblean的一个端口用于Nemerle(另一种.NET语言) - 如果你是谷歌,你可能会找到源代码。 – 2008-10-30 03:01:07

1

如果你的目标是创建跨所有应用程序,从而在桌面上的所有窗口的工作挂钩,那么你就不能使用托管代码程序集。你将不得不用一种产生传统DLL的语言来编写,例如C++。

为了在系统级,然后挂接到所有运行的应用程序,你必须提供可以放入所有正在运行的AP的地址空间一个dll挂钩。我敢说,大多数人的日常aps大部分都不是由.net framework应用程序管理的。

+0

这是我在阅读[MSDN关于C#.NET中的Windows挂钩主题的MSDN文章]的底部(http://support.microsoft.com/kb/318804/)中所述的“Global挂钩在.NET Framework中不受支持。“全局钩子与MSDN文章中的钩子有什么区别? – Sprogz 2008-10-30 09:18:17

+0

MSDN文章正在设置应用程序本地钩子。当代码示例调用SetWindowsHookEx和AppDomain.GetCurrentThreadId()为dwThreadId参数时,它使其钩子本地。改变这个参数为零,你有一个全局钩子 - 只是不要在.net中运行它会炸毁。 – Bill 2008-10-30 19:24:52

6

有一个官方的方法:Windows API Code Pack

的的Windows®API代码包为Microsoft .NET Framework提供了可用于进入一些新的Windows 7功能的源代码库(和一些来自托管代码的旧版Windows操作系统的现有功能)。这些Windows功能目前在.NET Framework中不适用于开发人员。

在这个库的版本(V1.0)支持的个人特点是:

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