先推荐一款软件 objectDocker
他是一款桌面图标管理工具 . 效果很玄..
我比较感兴趣, 想用C#研究这样的一个程序来, 不需要他上面图标摆动的效果..
但是有许多问题:
你直接加进去后,图标就取到了(也就是说有图片) , ,他上面的图标是好象是通过注册表取到的.
但是问题是 如何取的? 还有 直接把东西拽到它的上面去. 就保存上了.
也就是说 是用怎样的一种方式接受拖拽来的数据..
这样一系列是怎么实现的...
最好给源码实现...
源码沾边者 15分. 回答问题沾边者3分.. 源码正确者.或者大概的源码能把我带到思路上.50分 会额外加100分.
他是一款桌面图标管理工具 . 效果很玄..
我比较感兴趣, 想用C#研究这样的一个程序来, 不需要他上面图标摆动的效果..
但是有许多问题:
你直接加进去后,图标就取到了(也就是说有图片) , ,他上面的图标是好象是通过注册表取到的.
但是问题是 如何取的? 还有 直接把东西拽到它的上面去. 就保存上了.
也就是说 是用怎样的一种方式接受拖拽来的数据..
这样一系列是怎么实现的...
最好给源码实现...
源码沾边者 15分. 回答问题沾边者3分.. 源码正确者.或者大概的源码能把我带到思路上.50分 会额外加100分.
每个EXE和DLL文件都有资源区来保存它自己的图标文件的……你其实可以用,有如exescope之类的软件来理解一下,而快捷方式和系统文件夹或者之类的都是与shell32.dll相关的。C#来说,你去实现drag一族的事件来完成拖动,具体查MSDN。解析图标如我上说。别的,呵呵,再说。代码没有。只给想法。示例程序,MSDN上有的是,CSDN不是要示例的地方。
Public Class GetItemBitmap
Private Const SHGFI_ICON As Integer = 256
Private Const SHGFI_SMALLICON As Integer = 1
Private Const SHGFI_LARGEICON As Integer = 0 Private Structure SHFILEINFO
Public hIcon As IntPtr
Public iIcon As Integer
Public dwAttributes As UInteger
<Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=256)> _
Public szDisplayName As String
<Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=80)> _
Public szTypeName As String
End Structure <Runtime.InteropServices.DllImport("Shell32.dll")> _
Private Shared Function SHGetFileInfo(ByVal pszPath As String, ByVal dwFileAttributes As UInteger, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, ByVal uFlags As UInteger) As IntPtr
End Function <System.Runtime.InteropServices.DllImport("user32.dll", CharSet:=Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function DestroyIcon(ByVal handle As IntPtr) As Boolean
End Function Public Shared Function GetIcon(ByVal filename As String) As Drawing.Bitmap
Dim iconbitmap As Drawing.Bitmap
Dim shinfo As New SHFILEINFO()
Dim hImgSmall As IntPtr = SHGetFileInfo(filename, 0, shinfo, System.Runtime.InteropServices.Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
Dim icon As Drawing.Icon = System.Drawing.Icon.FromHandle(shinfo.hIcon)
iconbitmap = icon.ToBitmap()
DestroyIcon(shinfo.hIcon)
Return iconbitmap
End Function
End Class