/ در آموزش ویژوالبیسیک, اشتراک رایگان, ویژوالبیسیک / توسط
آخرین زمان ویرایش:

مجموعه سورس کدهای ویژوالبیسیک ۶ قسمت ۲۱

جهت مطالعه و دسترسی به سورس ها به ادامه مطلب مراجعه نمائید

با سلام !

به سری مجموعه سورس کدهای جالب برنامه نویسی ویژوالبیسیک خوش آمدید. لطفاً به ادامه آموزش توجه کنید:


درگ کردن فرم (بهترین و مطمئن ترین روش)

اینکار که با توابع API به روش ویندوز انجام میشه، بهترین، مطمئن ترین، ساده ترین و سریع ترین روش برای درگ (Drag) کردنه فرمه. در ضمن در این روش بوسیله یک کنترل هم میشه فرم رو درگ کرد.

یک پروژه جدید باز کنید و توش یک Command Button و یک Label بذارید و کد زیر رو قسمت جنرال فرمتون کپی کنید

Private Declare Function ReleaseCapture Lib “user32.dll” () As Long
Private Declare Function SendMessage Lib “user32.dll” Alias “SendMessageA” (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

 

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
lngReturnValue = SendMessage(Me.hWnd, &HA1, 2, 0&)
End If
End Sub

 

حالا یک بار بوسیله Label و یک بار هم بوسیله Command Button سعی کنید فرمتون رو درگ کنید. اگه بخواید بوسیله Label هم درگ بشه میتونید از کد داخل رویداد Command1_MouseMove برای رویداد Label1_MouseMove استفاده کنید به همین سادگی. موفق باشید.


کار با رجیستری (توابع کار با رجیستری)

برای کار کردن با رجیستری باید از توابع API استفاده کنیم. با تعریف این توابع شما میتونید با رجیستری هر کاری که بخواید بکنید. برای آشنایی با این توابع این آموزش رو تا آخرش دنبال کنید.

تعریف توابع و ثابتهای مورد نیاز. کدهای زیر رو تو Module کپی کنید و به ادامه آموزش توجه کنید :

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_USERS = &H80000003
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002

 

Public Const REG_SZ = 1
Public Const REG_DWORD = 4
Public Const REG_NONE = 0
Public Const REG_MULTI_SZ = 7
Public Const REG_EXPAND_SZ = 2
Public Const REG_BINARY = 3

 

Public Declare Function RegCreateKey Lib “advapi32.dll” Alias “RegCreateKeyA” (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegSetValueEx Lib “advapi32.dll” Alias “RegSetValueExA” (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Public Declare Function RegCloseKey Lib “advapi32.dll” (ByVal hKey As Long) As Long

Public Declare Function RegDeleteValue Lib “advapi32.dll” Alias “RegDeleteValueA” (ByVal hKey As Long, ByVal lpValueName As String) As Long

Public Declare Function RegDeleteKey Lib “advapi32.dll” Alias “RegDeleteKeyA” (ByVal hKey As Long, ByVal lpSubKey As String) As Long

Public Declare Function RegOpenKey Lib “advapi32.dll” Alias “RegOpenKeyA” (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegQueryValueEx Lib “advapi32.dll” Alias “RegQueryValueExA” (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

در طی این آموزش شما یا میگیرید Task Managerرو غیر فعال کنید.

برای غیر فعال کردن Task Manager باید در مسیر زیر یک کلید از نوع REG_DWORD با نام DisableTaskMgr بسازید و مقدار اونو ۱ بذارید تا Task Manager غیر فعال بشه و برای فعال کردن دوباره باید مقدار اونو ۰ بذارید.

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem

RegCreateKey : این تابع برای ساختن یک مسیر در رجیستری به کار میره. فرض کنید میخواید مسیر زیر رو تو رجیستری بسازید :

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem

قسمتی که پر رنگه در حال حاضر تو رجیستری وجود نداره و ما قصد داریم اون مسیر رو بسازیم. به کد زیر توجه کنید :

r = RegCreateKey(HKEY_CURRENT_USER, “SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem”, keyhand)

 

کد بالا در شاخه اصلیه HKEY_CURRENT_USER مسیری که گفتیم رو جستجو میکنه و اگه قسمتی از مسیر رو پیدا نکرد، اون مسیر رو میسازه. متغیر keyhand یک اشاره گر از کلید یافت شده بر میگردونه که خیلی به دردمون میخوره و از اینجا به بعد سر و کارمون با اون اشاره گره. در صورتی که به هر دلیلی عملیات نا موفق باشه تابع عددی غیر از ۰ درون متغیر r قرار میده که معمولاً این اتفاق نمی افته.

خب مسیری که باید میساختیم، ساخته شد. حالا باید یک کلید از نوع REG_DWORD با نام DisableTaskMgr بسازیم و مقدار اونو ۱ بذاریم.

RegSetValueEx : این تابع یک کلید (برای درک بهتر، کلید رو یک فایل در نظر بگیرید) از هر نوعی که تعیین کنیم (برای درک بهتر، نوع را پسوند فایل در نظر بگیرید. مثلاً REG_SZ پسوند .txt داره) در مسیری که تعیین میکنیم میسازه و مقدار تعیین شده رو درون اون کلید قرار میده (برای درک بهتر، مقدار رو محتوای فایل در نظر بگیرید). فرض کنید میخوایم در اون مسیری که در مرحله قبل ساخته بودیم، کلید DisableTaskMgr رو بسازیم و مقدارشو ۱ بذاریم :

r = RegSetValueEx(keyhand, “DisableTaskMgr”, 0, REG_DWORD, 1, 4)

خب میبینید که به جای نوشتن کل مسیر، از همون اشاره گر که گفته بودم استفاده کردم. این اشاره گر به همون مسیری که ساخته بودیم اشاره میکنه و کار ما رو خیلی ساده میکنه چون ما رو از نوشتن مسیرهای طول و دراز راحت میکنه. DisableTaskMgr هم که معلومه چیه؛ کلید یا همون فایلمونه. به تون عدد ۰ که بعد از نام کلید اومده کاری نداشته باشید. میبینید که بعد از عدد ۰ نوع متغیر تعیین شده و بعدش هم مقدارش تعیین شده که باید ۱ باشه ولی اون عدد ۴ چیه دیگه؟

نوع REG_DWORD یک نوع عددیه و اعداد در اون در مبنای ۱۶ (Hexadecimal) ذخیره میشن. مثلاً عدد ۱ به صورت ۰۱ ۰۰ ۰۰ ۰۰ ذخیره میشه و میبینید که این عدد از چهار قسمت مجزا تشکیل شده که اگر هر کدوم از این چهار قسمت رو ننویسیم عدد ما اشتباه خواهد بود. چند تا مثال براتون میزنم تا بهتر این موضوع رو متوجه بشید :

۱۰ = ۰A 00 00 00
۱۱ = ۰B 00 00 00
۱۵ = ۰F 00 00 00
۱۶ = ۱۰ ۰۰ ۰۰ ۰۰
۲۵۵ = FF 00 00 00
۲۵۶ = ۰۰ ۰۱ ۰۰ ۰۰
۵۱۱ = FF 01 00 00
۵۱۲ = ۰۰ ۰۲ ۰۰ ۰۰

 

اعداد در اینجا به صورت هشت بایتی ذخیره میشن پس نتیجه میگیریم که اون عدد ۴ نشانگر ۴ قسمته دو بایتیه (هر بایت در مبنای ۱۶ از دو عدد و در مبنای ۲ از هشت عدد تشکیل میشه). توضیح در این باره بسه. (من سخت افزارم ضعیفه. صخط عفذار بد)

خب کلید DisableTaskMgr رو ساختیم اما هنوز یک کار دیگه مونده و اونم اتمام کار با اشاره گر هستش.

RegCloseKey : این تابع کار با اشاره گره keyhand رو تموم میکنه. حتماً پیش خودتون میگید که این کار په لزومی داره؟ اگه با فایلها کار کرده باشید، میدونید که بعد از کار با یک فایل باید اونو بست و این کار با دستور Close #1 انجام میشد که عدد #۱ اشاره گره فایل بود. در اینجا هم دقیقاً مانند کار با فایلها باید نام اشاره گر رو جلوی دستور RegCloseKey تایپ کنیم تا اشاره گر از بین بره یا به قول معروف فایل بسته بشه:

r = RegCloseKey(keyhand)

خب دیگه، کارمون تمومه حالا دیگه میتونیم Task Manager رو غیر فعال کنیم. به کد زیر توجه کنید تا بهتر با مفهوم اشاره گر و طرز کارش آشنا بشید.

Private Sub Command1_Click()
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(HKEY_CURRENT_USER, “SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem”, keyhand)
r = RegSetValueEx(keyhand, “DisableTaskMgr”, 0, REG_DWORD, 1, 4)
r = RegCloseKey(keyhand)
End Sub

 

 حالا میخوایم کلیدی که ساختیم رو پاک کنیم تا Task Manager به حالت اولش برگرده.

RegDeleteValue : این تابع کلید تعیین شده رو پاک میکنه. این تابع هم مانند تابع RegSetValueEx اشاره گری که تعیین کننده مسیر است رو میگیره و اون مسیر کلید تعیین شده رو پیدا میکنه و پاک میکنه:

r = RegDeleteValue(keyhand, “DisableTaskMgr”)

 

البته شما باید قبل از این دستور مسیر مورد نظر رو با دستور RegOpenKey و یا RegCreateKey باز کنید.

RegDeleteKey : این تابع یک مسیر رو دریافت میکنه و انتهای اونو پاک میکنه:

r = RegDeleteKey(keyhand, “System”)

البته بازم شما باید قبل از این دستور مسیر مورد نظر رو با دستور RegOpenKey و یا RegCreateKey باز کنید ولی میتونید این کارو با همین تابع انجام بدید:

r = RegDeleteKey(HKEY_CURRENT_USER, “SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem”)

 این دستور فقط مسیر System رو پاک میکنه یعنی به قبل از اون کاری نداره در عین حال اگه بعد از مسیر System مسیر دیگه ای وجود داشته باشه نمیتونه ادامه مسیر رو پاک کنه. مثل مسیر زیر :

HKEY_CURRENT_USER SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemVisualBasic

 در اینجا تابع قادر به حذف قسمت پر رنگ نخواهد بود و برای حذف این مسیر باید اونو از آخر پاک کنیم یعنی اول Basic رو پاک کنیم، بعد Visual رو پاک کنیم و بعد System رو پاک کنیم.

RegOpenKey : این تابع تقریباً مثل تابع RegCreateKey کار میکنه با این تفاوت که قادر به ساختن مسیر نیست و فقط مسیر داده شده رو باز میکنه و یک اشاره گر از اون میسازه:

r = RegOpenKey(HKEY_CURRENT_USER, “SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem”, keyhand)

RegQueryValueEx : این دستور برای خوندن مقادیر کلیدها به کار میره. فرض کنید میخوایم بدونیم که الان فایلهای مخفی در حال نمایش هستند یا نه، برای فهمیدن این موضوع اگر مقدار کلید Hidden در مسیر زیر ۱ بود یهنی در حال نمایش هستند و اگر ۰ بود یعنی مخفی هستند :

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced

 برنامه زیر به مسیر بالا رجوع میکنه و محتوای کلید Hidden رو درون متغیر lngData قرار میده. این متغیر از نوع REG_DWORD هست و مقادیر ۱ یا ۰ میگیره که نشانگر Show یا Don’t Show بودن فایلهای مخفیه:

Private Sub Form_Load()
Dim lngData As Long
r = RegOpenKey(HKEY_CURRENT_USER, “SoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced”, keyhand)
r = RegQueryValueEx(keyhand, “Hidden”, 0, REG_DWORD, lngData, 4)
r = RegCloseKey(keyhand)
MsgBox IIf(lngData, “Yes”, “No”)
End Sub

 حالا میخوای مبدونیم که کمپانی کامپیوتر چیه. برای متوجه شدن این موضوع باید به مسیر زیر رجوع کنید و محتوای کلید RegisteredOrganization رو ببینید. با استفاده از کد بالا نمیشه اینکارو انجام داد چون ما نمیدونیم محتوای کلید RegisteredOrganization چند کاراکتره و متناسب با اون یک متغیر بسازیم، پس کاری که میکنیم اینه که اول از همه اطلاعاتی درباره کلید مورد نظر بدست بیاریم. به تکه برنامه زیر توجه کنید :

Private Sub Form_Load()
Dim lValueType As Long, strBuf As String, lDataBufSize As Long
‘Open The Key
r = RegOpenKey(HKEY_LOCAL_MACHINE, “SOFTWAREMicrosoftWindows NTCurrentVersion”, keyhand)
‘Retrieve Information About The Key
Result = RegQueryValueEx(keyhand, “RegisteredOrganization”, 0, lValueType, ByVal 0, lDataBufSize)
‘Create a Buffer
strBuf = String(lDataBufSize, Chr$(0))
‘Retrieve The Key’s Content
r = RegQueryValueEx(keyhand, “RegisteredOrganization”, 0, REG_SZ, ByVal strBuf, lDataBufSize)
‘Close The Key
r = RegCloseKey(keyhand)
‘Show Organization Name
MsgBox Left$(strBuf, InStr(1, strBuf, Chr$(0)) – 1)
End Sub

 

تا اینجا تعدادی از توابعی که برای کار کردن با رجیستری لازمتون میشن رو یاد گرفتید. البته توابع کار با رجیستری محدود به همین چند تا نمیشن و بیشترن اما همین تعداد توابع جوابگوی نیازهای شماست. موفق باشید.

غیر فعال کردن رجیستری

Key: [HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersionPoliciesSystem]
Value Name: DisableRegistryTools
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

غیر فعال کردن Task Manager

Key: [HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersionPoliciesSystem]
Value Name: DisableTaskMgr
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

غیر فعال کردن Display Properties

Key: [HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersionPoliciesSystem]
Value Name: NoDispCPL
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

غیر فعال کردن Shutdown

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoClose
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

غیر فعال کردن جستجو

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoFind
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

غیر فعال کردن System Properties

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoPropertiesMyComputer
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

غیر فعال کردن Run

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoRun
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

مخفی کردن گزینه All Programs از منوی Start

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoStartMenuMorePrograms
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Show, 1 = Hide)

  مخفی کردن درایو C:

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoDrives
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Show, 4 = Hide)

  مخفی کردن Control Panel

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoControlPanel
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

  غیر فعال کردن Folder Options

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer]
Value Name: NoFolderOptions
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

  نمایش فایلهای مخفی

Key: [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced]
Value Name: Hidden
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Show, 1 = Hide)

  نمایش فایلهای ابر مخفی

Key: [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced]
Value Name: SuperHidden
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Show, 1 = Hide)

  غیر فعال کردن Add/Remove

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesUninstall]
Value Name: NoAddRemovePrograms
Data Type : REG_DWORD (DWORD Value)
Value Data : (0 = Enable, 1 = Disable)

 تغییر نام و کمپانی

Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion]
Value Name: RegisteredOwner , RegisteredOrganization
Data Type : REG_SZ (DWORD Value)
Value Data : (Your Name, Organization Name)

 


چگونه می توانیم دستورات Dos را از طریق ویژوال بیسیک اجرا کنیم ؟

ابتدا Command Prompt را فراخوانی می کنیم , خوب برای فراخوانی از تابع Shell استفاده میکنیم که قبلا در مورد این تابع توضیح داده ام

Shell “cmd.exe” 

 :: اکنون یک شیء ایجاد می کنیم تا بتوانیم از طیق آن به هسته Dos دسترسی داشته باشیم :

Dim WinShellSet WinShell = CreateObject(“Wscript.shell”)

 خوب حالا می توانید به راحتی هر دستوری که دارید میتوانید اجرا کنید در آخر هم دستور تابع Sendkeys کلید Enter را اجرا کرده و دستور اجرا میشود:

WinShell.SendKeys ” Dos دستور مورد نظر برای اجرا در “WinShell.SendKeys “{ENTER}”

به مثاهای زیر توجه کنید که به ترتیب اولی برای ایجاد پوشه ای به نام Visual Basic در درایو C و دستور دوم برای نمایش پوشه های موجود در درایو C و دستور سوم برای Format فلاپی دیسک می باشد .

‘For Create Folder With Dos Prompt :WinShell.SendKeys “MD C:Visual” & ” Basic”WinShell.SendKeys “{ENTER}”

‘For Showing C Directory :WinShell.SendKeys “Dir C:”WinShell.SendKeys “{ENTER}”

‘For Format Floppy Disk Of Dos :WinShell.SendKeys “format A:”WinShell.SendKeys “{ENTER}”

نوشته های مشابه

دانلود پوسته وردپرس قبلی سایت زیگما فیلم

دانلود پوسته در ادامه مطلب (بیشتر…)

مجموعه سورس کدهای ویژوالبیسیک ۶ قسمت ۲۲

جهت مطالعه و دسترسی به سورس ها به ادامه مطلب مراجعه نمائید (بیشتر…)

 کانال تلگرام داده باران شارژ آنلاین

نظری بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *