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

استدعاء ملفات بلواحق مختلفة من البرنامج مباشرة

مغلق
بدأه ospx في 27 ديسمبر 2007 · 10 رد · 1,102 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

مشرفي واعضاء وزوار المنتدى الغالي لو تكرمتم بهذا السؤال :

كيف نستدعي اي ملف باي لاحقة عن طرق البرنامج يعني

الاداة shell نستخدمها لاستدعاء ملفات تنفيذية ذات اللاحقة exe

ولكن لو كان لدينا ملف هو اسمه access.cpl موجود في المسار C:\WINDOWS\system32

وجرب افتح هذا املف فهو خاص بخيارات الوصول في لوحة التحكم

فهل يمكن عن طرق الـshell او باي طريقة اخرى فتح مثل هذه الملفات مباشرة من البرنامج مهما كانت اللاحقة

ولكم جزيل الشكر

#2

أفضل حل استعمال ال API المسمى ShellExecute

وهذا مثال لفتح ملف تنفيذي مهما كانت لاحقته :

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
ShellExecute 0, "open", "c:\Upload.rar", "", "", 1
End Sub

غير :

c:\Upload.rar

الى مسار الملف الذي تريد فتحه

#3

اخي العزيز هذا الكود خاص بفتح الملفات التنفيذية فقط مهما تغيرغ اللاحقة للملف التنفيذي

ولكن الملف الذي اريد فتحه هو ليس ملف تنفيذي وانما لاحقته الاساسية access.cpl ليس exe

فهل من حل اخي لفتح الملفات الغير تنفيذية من البرنامج مباشرة مهما كانت لاحقتها

ولك كل التقدير والشكر

#4

الطريقة التي وضعها أخي الكريم تعمل 100%

جرب الكود على ملف نصي وستراه يعمل بطريقة فعالة ...

Private Declare Function ShellExecuteA Lib "shell32" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
ShellExecuteA 0, vbNullString, "C:\boot.ini", "", "", 1
End Sub

يلاحظ أني قمت بتغيير "open" إلى vbnullString لأن بعض الملفات تكون قيمة التشغيل الإفتراضية ليست Open ولكن كلمة أخرى

#5

طيب اخي جرب فتح هذا الملف الذي مساره ثابت في ويندوز اكس بي وهو access.cpl في المسار

C:\WINDOWS\system32

وبتمنى منك اخي ان تذكر لي مثال فقط يحوي الكود الذي يفتح مثل هذه اللواحق

والف شكر الك

#6

يمكنك ذلك باضافة الاداة OLE الى الفورم ثم كتابة الكود التالي :

Private Sub Command1_Click()

Dim R As String ' R INDICATES THE FILR PATH

OLE1.CreateLink ( R )

OLE1.DOVERBE

End Sub

تم تعديل هذه المشاركة بواسطة hussam_99 في 28 ديسمبر 2007 في 02:28

#7

:nose_pick:

النتيجة :

اقتباس
Private Declare Function ShellExecuteA Lib "shell32" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()

ShellExecuteA 0, vbNullString, "C:\WINDOWS\system32\access.cpl", "", "", 1

End Sub

40195452a9.gif

عالعموم إذا لم يعمل معك فعليك إستدعاء دالة Shell بهذا الأمر:

"rundll32.exe" shell32.dll,Control_RunDLL "C:\WINDOWS\system32\access.cpl",
#8

ويمكن استخدام الامر Environ("SystemRoot") لمعرفة مجلد النظام وبعد ذلك تشغيل الامر

 Shell "rundll32.exe shell32.dll,Control_RunDLL """ & Environ("SystemRoot") & "\system32\access.cpl"""
#9

كل الشكر والعرفان والمحبة لكل الاخوة الذين ساعدوا بالاجابة

الاكثر من رائعة

وجزاكم الله كل الخير دائما

#10

بالإضافة إلى ذلك يمكنك إستخدام الأمر Shell كالتالى:

Shell "control.exe access.cpl"

Shell "Control.exe anyfile.cpl"

مدونتي: C++ Tips and Tricks

#11

أردت فقط ان اضيف عن دالة ShellExecute

البرامتر lpOperation يمكن ان يكون أي شئ غير Open أو بمعنى أصح يكون نفس الأمر الموجود في القائمة المنسدلة عن النقر بالزر الأيمن للماوس

مثال :

ShellExecuteA 0, "Open with Olly&Dbg", "D:\windows\system32\calc.exe", "", "", 1

يقوم بتحميل الالة الحاسبة في برنامج اوللي ... للتعرف على البارامترات الصحيحة استكشفها بنفسك في المفتاح :

HKEY_CLASSES_ROOT\*

والسلام عليكم

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

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

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

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

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

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

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