الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن للبرنامج أن يعرف المكان الذي يضع أو ينسخ نفسه فيه؟

مغلق
بدأه ابتسام في 29 ديسمبر 2000 · 4 رد · 939 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكن للبرنامج أن يعرف المكان الذي يضع أو ينسخ نفسه فيه؟

بمعنى آخر:

فلنفرض مثلا أن صاحب هذا البرنامج يريد أن يوضع برنامجه في الويندوز أقصد في أي حاسوب ولكن لنفترض أن الحاسوب الذي فيه البرنامج ليس في الوندوز أقصد أن يكون الإسم مختلفا وكمثال:

Windows و Window

هذا مجرد افتراض طبعا

فهل توجد طريقة لذلك

#2

[note]

أختي أبتسام أرجوا أن تعذرني لأستخدامي أسلوب مخاطبة عامة

ذكورية وذلك حتى تعم الفائدة ولأني متعود الكتابه بهذا الأسلوب

[/note]

يمكن أستخدام الدالة GetSystemDirectory

من دوال ال API للحصول على نص بمسار مجلد النظام

تأخذ هذه الدالة وسيطتين الأول هو المتغير من نوع

(سترينك) ستضع الدالة فيه نص المسار حيث أن الدالة على عكس

المتوقع لاترجع قيمة نص المسار وأنما ترجع عدد من نوع لونك

كفلك (علم) الوسيطة الثانية هي قيمة أقصى طول للنص

وعادة يوضع 260 قد يكون في الدالة أشياء غير متوقعة لكن

تذكر أن هذه ليست دوال فيجوال بيسك وأنما API هي مكتوبه

ب السي والسي++ وهذا هو تصريح الداله

Private Declare Function GetSystemDirectory Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long


الدالة الثانية هي GetWindowsDirectory تستخدم للحصول على نص مسار مجلد الويندوز

وسائطها نفس الدالة السابقه ،الوسيطة الأولى المتغير المطلوب والأخرى أقصى طول لحجم

النص = 260

تعريفها هو

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias _
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long


الدالة الثالثة هي GetTempPath تستخدم للحصول على نص مسار مجلد ملفات المؤقته(تيمب فايل)

وسائطها نفس الدالة السابقه ،الوسيطة الأولى المتغير المطلوب والأخرى أقصى طول لحجم

النص = 260

Private Declare Function GetTempPath Lib "kernel32" Alias _
"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long


وهذا مثال على أستخدام أحداها وباقي الدوال تستخدم

على نفس المقياس

ضع زر في الفورم ثم ضع في حدث كليك لهذا الزر

الكود :

Sub Command1_Click()
Dim winpath As String
'تعبة النص بالحرف نل كرتر والذي الآسكي له صفر 260 مره
winpath = String(260, 0)
'أستدعاء الداله
GetWindowsDirectory winpath, 260
''إنشاء رساله فيها نص بمسار مجلد الويندو
MsgBox winpath
End Sub

[note]

أذا كنت تملك برنامج أي بي آي فيوير

فلا تنسخ تصريح الداله من هذه الصفحه وأنسخه من البرنامج

[/note]

#3

تستطيع بسهوله أيضاً أستخدام الدالة التي قمت بكتبتها وهي سهلة الأستخدام وأسمها getpath ولأستعمالها يجب أولاً فتح موديل ووضع هذا الكود فيه

Public Declare Function GetSystemDirectory Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetWindowsDirectory Lib "kernel32" Alias _
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetTempPath Lib "kernel32" Alias _
"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Enum patht
win_path = 0
sys_path = 1
temp_path = 2
End Enum
Public Function GetPath(Optional path_type As patht = win_path) As String
Dim a As Long
GetPath = String(260, 0)
Select Case path_type
Case 0
a = GetWindowsDirectory(GetPath, 260)
Case 1
a = GetSystemDirectory(GetPath, 260)
Case 2
a = GetTempPath(260, GetPath)
End Select
GetPath = Left(GetPath, a)
End Function

وهذا مثال على أستعمالها ضع ثلاثة أزرار في الفورم ثم ضع الكود التالي

Private Sub Command1_Click()
Shell "explorer " & getpath(sys_path), vbMaximizedFocus
End Sub

Private Sub Command2_Click()
Shell "explorer " & getpath(win_path), vbMaximizedFocus
End Sub

Private Sub Command3_Click()
Shell "explorer " & getpath(temp_path), vbMaximizedFocus
End Sub

Private Sub Form_Load()
Command1.Caption = "إضغط هنا لفتح مجلد النظام"
Command2.Caption = "إضغط هنا لفتح مجلد  الويندوز"
Command3.Caption = "إضغط هنا لفتح مجلد الملفات المؤقته"
End Sub

[عدلت بواسطة أحمد الزياني ت:30-12-2000 س: 05:30 AM]

#4

(gift)(f)جزا الله الإخوان خيرا ولكن إني أرى والله أعلم أن الأخت ابتسام بدأت تسأل عن السب سفن وعن أماكن نسخ الملفات هل هذا مشروع هكرز جديد أم مشروع فيروس جديد

أسأل الله أن يكون ظني خطأ وأنصخ الأخت الفاضله بالبعد عن برامج الهكرز

لأني تأذيت منها كثيرا

:cool:

#5

يا أخ محمد جامع مو بس انت تأذيت

أنا انضربت عندي الموذور بورد بسبب الفايروسات و برامج الهاكرز

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…