View Full Version : سوال: چگونگي به نمايش درآوردن يك آيكون و يا رشته از Shell32 توسط Index آن
ROSTAM2
شنبه 20 خرداد 1391, 22:14 عصر
چگونه اين امكان وجود داره تا با توابع API و يا Net. بتوان توسط شماره Index يك متن را از String Table و يا يك Icon از فايل سيستمي Shell32.dll رو فراخواني كرد
ROSTAM2
یک شنبه 21 خرداد 1391, 02:55 صبح
توسط دو تابع API زير اين كار عملي است ولي آنها بصورت تصوير به يك PictureBox ارائه داده مي شن حالا چطور تصوير picturebox رو به Icon تبديل كنم بصورتي كه بتونم به آيكون فرم رو با اون تغيير بدم
توابع API براي اين كار بهمراه ثابت هاي مورد نياز :
Const LARGE_ICON As Integer = 32
Const SMALL_ICON As Integer = 16
Const DI_NORMAL = 3
Private Declare Function DrawIconEx Lib "user32" _
(ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, _
ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, _
ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, _
ByVal diFlags As Long) As Long
Private Declare Function ExtractIconEx Lib "shell32.dll" _
Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, _
phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
براي دانلود سورس كد مي تونيد به اين آدرس مراجعه كنيد: (اگه بمونه) :لبخند:
http://www.thescarms.com/VBasic/extracticons.aspx
ROSTAM2
شنبه 03 تیر 1391, 10:48 صبح
بالاخره يافتم : اينكه چطور مي شه از يه فايل dll يه رشته در آورد و وارد برنامه كرد مثل shell32.dll
' +++++++++++++ Declaration:
Imports System.ComponentModel
' +++++++++++ Class Code:
Public NotInheritable Class SystemStrings
Private Declare Auto Function LoadLibrary Lib "kernel32.dll" ( _
ByVal lpLibFileName As String _
) As IntPtr
Private Declare Function FreeLibrary Lib "kernel32.dll" ( _
ByVal hLibModule As IntPtr _
) As Boolean
Private Declare Auto Function LoadString Lib "user32.dll" ( _
ByVal hInstance As IntPtr, _
ByVal uID As Int32, _
ByVal lpBuffer As String, _
ByVal nBufferMax As Int32 _
) As Int32
Private Shared m_hUser32 As IntPtr
Private Sub New()
'
End Sub
Shared Sub New()
m_hUser32 = LoadLibrary("SHELL32.dll")
If m_hUser32.Equals(IntPtr.Zero) Then
Throw New Win32Exception
End If
End Sub
Shared Function LoadStringX(ByVal Id As Long) As String
Dim Buffer As String = Space(255)
Dim n As Int32 = LoadString(m_hUser32, Id, Buffer, Buffer.Length)
'If n = 0 Then
' Throw New Win32Exception
'End If
Return Strings.Left(Buffer, n)
End Function
Private Shared Finalizer As New SharedFinalizer
Private Class SharedFinalizer
Protected Overrides Sub Finalize()
MyBase.Finalize()
If Not m_hUser32.Equals(IntPtr.Zero) Then
If Not FreeLibrary(m_hUser32) Then
Throw New Win32Exception
End If
End If
End Sub
End Class
End Class
' Usage:
Label1.Text = SystemStrings.LoadStringX(NumericUpDown1.Value) ' 30464 // 30476
ROSTAM2
چهارشنبه 07 تیر 1391, 06:00 صبح
اين هم يه Example براي چاشني و جذابيت تاپيك مي تونيد دانلود كنيد و لذت ببريد انتقاد هم پذيرفته مي شه
لينك دانلود: http://www.8pic.ir/images/yqprwngmcub5b3jqio.zip
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.