جهت مطالعه و دسترسی به سورس ها به ادامه مطلب مراجعه نمائید
چگونه می توان شماره سریال هارد را بدست آورد ؟
پاسخ : از تابع GetVolumeInformation موجود در کتابخانه Kernel32 استفاده کنید . برای declare کردن این تابع بصورت زیر عمل کنید :
Declare Function GetVolumeInformation Lib “kernel32” Alias “GetVolumeInformationA” (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long |
حال کد زیر را برنامه تان قرار دهید :
Dim lngNumSerial As Long Dim strRotulo As String Dim strTipoVolume As String Dim lngVal As Long strRotulo = Space(255) strTipoVolume = Space(255) lngVal = GetVolumeInformation(“C:”, strRotulo, Len(strRotulo), lngNumSerial, 0, 0, strTipoVolume, Len(strTipoVolume)) MsgBox (lngNumSerial) |
البته شماره سریالی که کد فوق بر می گرداند شماره سریالی است که سیستم عامل به هارد می دهد و زمانیکه هارد مجدداً پارتیشن بندی شود این شماره تغییر خواهد کرد . برای بدست آوردن شماره سریالی که سازنده روی هارد قرار داده از تابع DeviceIoControl استفاده کنید .
چگونه میتوان فرمی را روی فرم دیگر قرار داد و کنترل ها را نیز روی آن کشید؟
پاسخ : ابتدا سه تابع زیر را از کتابخانه user32 تعریف کنید :
Public Declare Function FindWindow Lib “user32” Alias “FindWindowA” (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function SetParent Lib “user32” (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Public Declare Function SetWindowPos Lib “user32” (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal Cx As Long, ByVal Cy As Long, ByVal wFlags As Long) As Long |
سپس ثوابت زیر را تعریف کنید :
Public Const SWP_NOMOVE = &H2 Public Const SWP_NOSIZE = &H1 Public Const HWND_TOPMOST = -1 Public Const Flags = SWP_NOMOVE Or SWP_NOSIZE |
همچنین تابع کمکی زیر را نیز در برنامه تان قرار دهید :
Public Function GethWndByWinTitle(winTitle As String) As Long Dim retval As Long GethWndByWinTitle = FindWindow(vbNullString, winTitle) End Function |
تابع قرار دادن فرم در حالت Bottom ( زیر همه فرمها ) بصورت زیر است :
Sub FormOnBottom(Frm As Form) Dim DeskH As Long DeskH = GethWndByWinTitle(“Program Manager”) Call SetParent(Frm.hWnd, DeskH) End Sub |
تابع قرار دادن فرم در حالت Top ( روی همه فرمها ) بصورت زیر است :
Sub FormOnTop(Frm As Form) Call SetWindowPos(Frm.hWnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, Flags) End Sub |
تابع قرار دادن فرم در حالت نرمال بصورت زیر است :
Sub FormNormal(Frm As Form) Dim DeskH As Long DeskH = GethWndByWinTitle(“Form1”) Call SetParent(Frm.hWnd, DeskH) End Sub |
چگونه می توان از برنامه های وی بی در AutoCad استفاده کرد ؟
پاسخ : استفاده از ویژوال بیسیک بهمراه آتوکد توسط یک سیستم ابداعی شرکت AutoDesk به اسم ADS -AutoCAD Develpoment System – امکان پذیر است . این سیستم ارتباطی به برنامه نویسان اجازه می دهد تا برنامه های کاربردی بنویسند که بتواند آتوکد را کنترل کرده و داده را بین آتوکد و برنامه خارجی رد و بدل کند . پشتیبانی از ویژوال بیسیک در ADS از آتوکد ۱۳ آغاز شد .
همچنین در بخش reference های ویژوال بیسیک ( در صورتیکه آتوکد روی سیستمتان نصب باشد ) گزینه ای به اسم AutoCAD Type Library وجود دارد که می توانید از آن در برنامه تان استفاده کنید برای مثال :
Private autocadApp As AcadApplication Set autocadApp = CreateObject(“AutoCAD.Application.15”) Dim doc As AcadDocument Set doc = autocadApp.Application.Documents.Open(“c:drawing.dwg”) |
چگونه می توان در وی بی برنامه ای نوشت که نام و مسیر یک فایل را از کاربر بگیرد و در مسیر انتخاب شده شورتکاتی از فایل گرفته شده ایجاد کند ؟
پاسخ : ابتدا متغیرهای زیر را که از نوع Object هستند تعریف کنید :
Dim wsh As Object Dim Shortcut As Object |
سپس بایستی شی wsh را ایجاد نمائید :
Set wsh = CreateObject(“wscript.shell”) |
سپس بایستی شی Shortcut را ایجاد نمائید :
Set Shortcut = wsh.CreateShortcut(“c:YourProgram.lnk”) |
مسیری که در کد فوق داده شده محل ساخت شورتکات می باشد .
سپس بایستی پارامترهای شی Shortcut را تنظیم کنید :
Shortcut.TargetPath = “C:Program FilesTestYourProgram.exe” Shortcut.IconLocation = “C:Program FilesTestYourIcon.ico” Shortcut.WorkingDirectory = “C:Program FilesTest” Shortcut.Description = “Your Description” |
پارامتر TargetPath برنامه مرتبط با شورتکات را نشان می دهد .
در پایان بایستی شورتکات را ذخیره کنید :
Shortcut.Save |
نکته : برای ایجاد شورتکات در دسکتاپ یا در Startup ، بایستی متغیری از نوع SpecialForders ایجاد نمائید :
Dim sf As Object Set sf = wsh.SpecialFolders |
سپس محل ساخت شورتکات را بصورت sf(“AllUsersDesktop”) & YourPath و یا sf(“AllUsersStartup”) & YourPath بدهید .
چگونه می توان در وی بی مسیر دایرکتوری استارت آپ را پیدا کرد ؟
پاسخ : با استفاده از روش زیر می توانید مسیر کلیه دایرکتوریهای سیستمی را پیدا کنید :
ابتدا دو تابع زیر را از کتابخانه Shell32 تعریف کنید :
Private Declare Function SHGetSpecialFolderLocation Lib “shell32” (ByVal hwnd As Long, ByVal nFolder As Long, Pidl As Long) As Long Private Declare Function SHGetPathFromIDList Lib “shell32” (Pidl As Long, ByVal FolderPath As String) As Long |
حال متغیر SystemFolder از نوع Enum را بصورت زیر تعریف کنید :
Public Enum SystemFolder Desktop = 0 StartMenu_Programs = 2 My_Documents = 5 Favorites = 6 Startup = 7 Recent = 8 SendTo = 9 Start_Menu = 11 Windows_Desktop = 16 Network_Neighborhood = 19 Fonts = 20 ShellNew = 21 AllUsers_Desktop = 25 ApplicationData = 26 Printhood = 27 TemporaryInternetFiles = 32 Cookies = 33 History = 34 End Enum |
تابع پیدا کردن دایرکتوریهای سیستمی بصورت زیر خواهد بود :
Public Function FindSystemFolder(ByVal lngNum As SystemFolder) As String Dim lpStartupPath As String * MAX_PATH Dim Pidl As Long Dim hResult As Long hResult = SHGetSpecialFolderLocation(0, lngNum, Pidl) If hResult = 0 Then ‘there is a result hResult = SHGetPathFromIDList(ByVal Pidl, lpStartupPath) If hResult = 1 Then lpStartupPath = Left$(Trim$(lpStartupPath), InStr(lpStartupPath, Chr(0)) – 1) FindSystemFolder = Trim$(lpStartupPath) End If End If End Function |