PDA

View Full Version : سوال: تعریف متغیر (متغیری در ریجستری) در ویژوال بیسیک



R2du-soft
شنبه 17 تیر 1391, 23:32 عصر
سلام
میخواستم ببینم با ویژوال بیسیک هم میشه چنین متغیری تعریف کرد؟

for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\yahoo\pager" /v "Version"') do set "$setM=%%b"

echo %$set%


کد بالا میاد از مسیر HKEY_LOCAL_MACHINE\SOFTWARE\yahoo\pager که در ریجستری هست ، هر مقدار یا آدرسی که در فایل Version هست رو به عنوان متغیر در نظر میگیره
و با دستور echo %$set% نمایش میده.

( اگه یاهو مسنجر داشته باشید این کد بالا رو بنویسید توی فایل txt و با bat ذخیره کنید ورژن یاهو مسنجرتون رو نشون میده. )


بگذریم
کلا میخواستم ببینم که میشه از این نوع متغیر ها تعریف کرد؟
اگه امکان تعریف هست شما بلدید؟ با چه کدی میشه این کارو کرد؟

مرسی

محسن واژدی
شنبه 17 تیر 1391, 23:41 عصر
سلام
با توابع کنترل ریجستری امکان ویرایش یا گرفتن داده های ریجستری وجود دارد که البته قبلا بارها در اینباره مباحثی ارائه شده،
تاپیک های زیر را بررسی کنید:
http://barnamenevis.org/showthread.php?136330
http://barnamenevis.org/showthread.php?321012

و ماژول زیر:
http://barnamenevis.org/attachment.php?attachmentid=76257&d=1317799843


همچنین میتوانید از توابع کنترل ریجستری موجود در کتابخانه "Windows Script Host Object Model" استفاده کنید:
http://barnamenevis.org/showthread.php?307088&p=1347843&viewfull=1#post1347843

موفق باشید

R2du-soft
یک شنبه 18 تیر 1391, 01:23 صبح
مرسی محسن واژدی (http://barnamenevis.org/member.php?104729-%D9%85%D8%AD%D8%B3%D9%86-%D9%88%D8%A7%DA%98%D8%AF%DB%8C) جان خوندم :بوس: :قلب:

ولی نتونستم متغیر تعریف کنم!!!! :ناراحت: :ناراحت:

محسن واژدی
یک شنبه 18 تیر 1391, 08:26 صبح
چرا، به عنوان مثال اگر بخواهیم با کامپوننت "Windows Script Host Object Model" مقدار "Version" را از ریجستری دریافت کنیم میشود:


Private Sub Command1_Click()
MsgBox reg.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\yahoo\pager\Version")
End Sub

و یا برای تعریف مقدار جدید


Private Sub Command2_Click()
reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\yahoo\pager\Version", "1.0.1.0"
End Sub

موفق باشید

R2du-soft
یک شنبه 18 تیر 1391, 10:57 صبح
از کد زیر استفاده کردم ولی پس از اجرا و کلیک بر روی دکمه خطای


RUN-TIME ERROR '424':
OBJECT REQUIRED



میده!!!!!




Private Sub Command1_Click() MsgBox reg.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\yahoo\pager\Version") End Sub




بعد یه چیزی اگه کد بالا عمل کنه و توی کلید VERSION آدرس باشه مثلا :


C:\WINDOWS


بعد من بخوام با یه کد دیگه بگم که از مسیری که توی VERSION هست هرچی dll هست رو کپی کنه چطور باید تعریف کنمش؟

مرسی

R2du-soft
یک شنبه 18 تیر 1391, 13:04 عصر
این کد رو هم توی یکی از تاپیک ها پیدا کردم



Private Sub Form_Load()
Set wshshell = CreateObject("WScript.Shell")
Text1.Text = wshshell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\yahoo\pager\Version")
End Sub


کد اطلاعات فایل version رو توی text box نشون میده
حالا مثلا توی text box ما مسیر C:\WINDOWS هست
با چه کدی باید بگم که از مسیری که توی text box هست فایل reza.dll رو کپی کنه توی C:\1

مرسی

محسن واژدی
یک شنبه 18 تیر 1391, 13:55 عصر
از کد زیر استفاده کردم ولی پس از اجرا و کلیک بر روی دکمه خطای


RUN-TIME ERROR '424':
OBJECT REQUIRED



میده!!!!!


.
.

.



طبیعتا" این خطا را میدهد چون هنوز کامپوننت "Windows Script Host Object Model" به Reference اضافه نشده، برای اضافه کردن این کامپوننت هم میتوانیم از فرم Reference این کامپوننت را انتخاب کنیم و هم با CreateObject آنرا ایجاد کنیم، که در اینجا آنرا با CreateObjectایجاد میکنیم:


Dim reg
Private Sub Form_Load()
Set reg = CreateObject("wscript.shell")
End Sub

Private Sub Command1_Click()
MsgBox reg.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\yahoo\pager\Version")
End Sub




اگه کد بالا عمل کنه و توی کلید VERSION آدرس باشه مثلا :

C:\WINDOWS

بعد من بخوام با یه کد دیگه بگم که از مسیری که توی VERSION هست هرچی dll هست رو کپی کنه چطور باید تعریف کنمش؟به اینصورت با توابع جستجوی میتوانیم محتوی مسیر بدست آمده را جستجو و با دستوری مانند FileCopy کپی کنیم، در مورد جستجوگر هم:
http://barnamenevis.org/attachment.php?attachmentid=66967&d=1298962438

و یا
http://download.microsoft.com/downlo...C3/DirWalk.exe (http://download.microsoft.com/download/E/A/A/EAAF9632-4137-464F-8706-974D823F80C3/DirWalk.exe)
-----
http://www.planet-source-code.com/vb...74032&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=74032&lngWId=1)
http://www.planet-source-code.com/vb...73753&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=73753&lngWId=1)
http://www.planet-source-code.com/vb...71531&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=71531&lngWId=1)
http://www.planet-source-code.com/vb...67051&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=67051&lngWId=1)
http://www.planet-source-code.com/vb...58810&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=58810&lngWId=1)
http://www.planet-source-code.com/vb...49401&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=49401&lngWId=1)


موفق باشید

R2du-soft
یک شنبه 18 تیر 1391, 15:46 عصر
محسن واژدی (http://barnamenevis.org/member.php?104729-%D9%85%D8%AD%D8%B3%D9%86-%D9%88%D8%A7%DA%98%D8%AF%DB%8C) جان یه سوال


من اینحالتی از کد استفاده کردم




Private Sub Command1_Click()
Dim R As Integer
R = Text1.Text
FileCopy "(R\cnlurllist.dat)", "(c:\vbasic6\cnlurllist.dat)"
End Sub

Private Sub Form_Load()
Set wshshell = CreateObject("WScript.Shell")
Text1.Text = wshshell.RegRead("HKEY_CURRENT_USER\Software\DownloadManager\AppData IDMFolder")
End Sub




تو قسمت بالا R رو از توع integer تعریف کردم
بعد چطوری از دستور filecopy باید استفاده کنم؟

موقعی که این دوستورات رو مینویسم و exe میکنم
بعد از باز کردن exe روی دکمه کلیک میکنم تا فایلها کپی بشن، ولی ارور زیر میاد!!!!




run-time error '13':
type mismatch



مرسی

arenaw
یک شنبه 18 تیر 1391, 16:14 عصر
توی تکست 1 شما چی نوشته شده؟ آدرس فولدر؟
اولا اون اروری که میده به خاطر اینه که نوع R از نوع Integer هستش و شما باید String تعریف کنی
(Integer یک نوع عددی هست و String میتونه شامل هر متنی باشه)
دوما اونطوری که شما نوشتی اشتباهه و مقدار R رو نمیذاره اونجا و فقط حرف R رو میذاره
اگه تکست 1 آدرس هستش شما میتونی اینجوری استفاده کنی:

FileCopy Text1.Text & "\cnlurllist.dat", "c:\vbasic6\cnlurllist.dat"

البته آدرسی که توی تکست مینویسی نباید آخرش \ داشته باشه اینجا

R2du-soft
یک شنبه 18 تیر 1391, 16:28 عصر
درست شد :متعجب:
ای جانمی جان
مرسی arenaw (http://barnamenevis.org/member.php?203395-arenaw) جان
عالی بود
:قلب: :قلب: :قلب: :قلب:
:قلب: :قلب: :قلب: :قلب:
:قلب: :قلب: :قلب: :قلب:
مرسی گلم

m2011kh
یک شنبه 18 تیر 1391, 19:02 عصر
لطفا از دکمه تشکر به جای اسپم استفاده کنید.
MMD

R2du-soft
دوشنبه 26 تیر 1391, 18:17 عصر
سلام
باز من اومدم و تا با 1سوال دیگه شما رو اذیت کنم :خجالت:
خلاصه ببخشید که اینقدر سوال میکنم

چطور میشه با یک text box و تعریف یک متغیر در ویژوال بیسیک 3 متن رو داخل textBox قرار داد؟
الان مثال میزنم تا بهتر منظورمو بگم:

من یک textbox به نام Text4 در برنامه ایجاد کردم

حالا میخوام متن داخل 3 مسیر از ریجستری داخل این فایل این textBox که اسمش text4 هست نشون داده بشه


از کد زیر استفاده کردم ولی متاسفانه نتیجه نگرفتم و فقط محتویات آدرسی که در متن زیر با قرمز مشخص کردم نمایش داده میشه و اون 2تای قبلی نمایش داده نمیشه



Private Sub Form_Load()
On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")


Text4.Text = WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\1")
Text4.Text = WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\2")
Text4.Text = WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\3")


End Sub



میخوام هر 3 مسیر با هم تو Text4 نمایش داده بشه

یعنی مثلا
تو key اول نوشته A
تو key اول نوشته B
تو key اول نوشته C

میخوام ABC یکجا در فایل text4 نمایش داده بشه


مرسی


مرسی از همه دوستان عزیزم

محسن واژدی
دوشنبه 26 تیر 1391, 18:45 عصر
سلام علیکم
کد را بصورت زیر ویرایش کنید:
Private Sub Form_Load()

On Error Resume Next

Set WshShell = CreateObject("WScript.Shell")

Text4.Text = WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\1") & WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\2") & WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\3")

End Sub


موفق باشید

R2du-soft
دوشنبه 26 تیر 1391, 20:15 عصر
داداشی محسن اگه تو کد بالا که گفتی key

HKEY_CURRENT_CONFIG\reza\2


وجود نداشته باشه اونوقت کلا دیگه نه

HKEY_CURRENT_CONFIG\reza\1
و نه
HKEY_CURRENT_CONFIG\reza\3

ثبت میشه داخل textBox !!!!!

کلا اگه چیزی که تعریف کردی وجود نداشته باشه و چند تای دیگه وجود داشته باشه textbox خالی میمونه !!!!
چطور میشه اگه یکیش هم وجود نداشت بقیه رو ثبت کنه؟
مرسی گلم

محسن واژدی
دوشنبه 26 تیر 1391, 21:11 عصر
داداشی محسن اگه تو کد بالا که گفتی key

HKEY_CURRENT_CONFIG\reza\2


وجود نداشته باشه اونوقت کلا دیگه نه

HKEY_CURRENT_CONFIG\reza\1
و نه
HKEY_CURRENT_CONFIG\reza\3

ثبت میشه داخل textBox !!!!!

کلا اگه چیزی که تعریف کردی وجود نداشته باشه و چند تای دیگه وجود داشته باشه textbox خالی میمونه !!!!
چطور میشه اگه یکیش هم وجود نداشت بقیه رو ثبت کنه؟
مرسی گلم

در صورت نبود کلید های تعریف شده برنامه تولید خطا میکند اما چون دستگیره های خطا خاموش است خطایی ظاهر نمی شود، کد زیر را بررسی کنید:
Private Sub Form_Load()
On Error Resume Next
Dim WshShell As Object, sV1$, sV2$, sV3$
Set WshShell = CreateObject("WScript.Shell")

sV1$ = WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\1")
sV2$ = WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\2")
sV3$ = WshShell.RegRead("HKEY_CURRENT_CONFIG\reza\3")
Text4.Text = sV1$ & sV2$ & sV3$
End Sub