2008-10-29 33 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任務對話框。