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

كيفية أغلاق برنامج شغال على الويندوز؟

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

السلام عليكم ورحمة الله وبركاتة

شباب لو انا استدعيت برنامج معين نازل على الجهاز بتاعى بأمر ال shell لو عايز اقفل نفس البرنامج اللى اتفتح برمجيا

ازاى اقدر اعملها

وشكرا

خيركم من تعلم العلم وعلمه

#2

هل تريد ان تغلق البرنامج وهو مازال يعمل ؟؟ ام ماذا؟

لآ إله إلا الله محمد رسول الله

#3

أخي siner أعتقد ذلك

لأنهو أن لم يكن ذلك لما و ضع الموضوع

#4

شباب انا فتحت مثلا برنامج بأمر ال shell

shell ("c:\program files\msnmessenger")

ده مثلا عايز اعمل زرار فى الفورم بتاعتى يقفل البرنامج اللى اتفتح ده برمجيا ياترى حد يقدر يفيدنى فيها

خيركم من تعلم العلم وعلمه

#5

عتقد انى فهمتك الآن

ابحث فى المنتدى عن Process Terminate وستجد ماتريد ان شاء الله

لآ إله إلا الله محمد رسول الله

#6

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته ،،

أولاً : عندما تقوم بتشغيل برنامج عن طريق الدالة Shell فإنها تعيد رقمًا يمثل رقم العملية Process ID يجب عليك في البداية تخزين هذا الرقم في متغير من النوع Long ، كالتالي :

ProcessID = Shell("calc.exe")

ثم قم بإنهاء البرنامج برمجيًا كالتالي :

    Dim Prog As Long
    
    Prog = OpenProcess(PROCESS_TERMINATE, 0, ProcessID)
    
    If Prog Then
        TerminateProcess Prog, 0
        CloseHandle Prog
    Else
        MsgBox "حدث خطأ أثناء محاولة إغلاق البرنامج ، تأكد أن البرنامج يعمل بالفعل ."
    End If

لا تنس أن تقوم بتعريف دوال API اللازمة والثوابت كذلك في قسم التصريحات العامة :

Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Dim ProcessID As Long

Private Const PROCESS_TERMINATE As Long = (&H1)

وبذلك تكون قد استطعت أن تغلق البرنامج الذي فتحته برمجيًا بطريقة برمجية أيضًا .

وتقبل تحياتي

أخوك / المبرمج أحمد

تم تعديل هذه المشاركة بواسطة المبرمج أحمد في 8 سبتمبر 2005 في 05:43

سبحان الله وبحمده ... سبحان الله العظيم

#7

شكرا والف شكر أخى أحمد على هذا الكود . وجارى تجربته

وجزاك الله خيرا

خيركم من تعلم العلم وعلمه

#8

أخى أحمد فى خطأ ظاهر عندى فى جزء CloseHandle Prog مش عارف ايه هوه :(

خيركم من تعلم العلم وعلمه

#9

لاقيت الخطأ الخاص بالجزء بتاع الدالة CloseHandle لان الدالة مكنتش متعرفة فجبت تعريف الدالة وحطيته بس برضه مش بيقفل وبيدخل على MsgBox على طول

خيركم من تعلم العلم وعلمه

#10

يبدو أنني نسيت أن أضع تعريف الدالة CloseHandle ، والمشكلة الثانية أنه كان يجب أن تضع تعريف المتغير ProcessID في قسم التصريحات العامة ..

ستجد الكود الصحيح في ردي السابق .. بعد التعديل !

وتقبل تحياتي

أخوك / المبرمج أحمد

سبحان الله وبحمده ... سبحان الله العظيم

#11

أخى العزيز أحمد شكرا والف شكر على هذا الكود الجميل مثلك الكود شغال 100% والحمد لله

وجزاك الله خيرا

خيركم من تعلم العلم وعلمه

#12

أخي العزيز الاّن فهمت مبتغاك

و مشكور يا أخ أحمد على هذا الكود المفيد

أخي Misiny_forever يمكنك فعل ذلك يطؤيقة غير برمجية إذا أحببت و أليك الكود

Private Sub Command1_Click()
SendKeys "%{F4}"
AppActivate "Calculator"
End Sub

Private Sub Form_Load()
Shell "calc.exe"
End Sub

و السلام عليكم و رحمة الله و بركاته

#13

السلام عليكم ورحمة الله وبركاته

أ/غسان

أعتقد أنه يجب أولا أن تقوم بتنشيط النافذه ثم تقوم بغلقها

كالتالى:

Private Sub Command1_Click()
AppActivate "Calculator"
SendKeys "%{F4}"
End Sub

;) ;) :rolleyes:

#14

كلامك صح

لكن أنا عندما أفعل العكس ألاحظ نتيجة 100% على عكس كلامك حيث أن النتيجة في كلامك 50%

قد يكون يوجد تفسير لكني أكلمك عن تجربة

#15

أخى العزيز غسان والأخ العزيز شريف شكرا لكم على متابعتكم الجادة للموضوع بس طلب ممكن شرح الكود ده لان مش فاهمه اوى

خيركم من تعلم العلم وعلمه

#16

تقصد اى كود ياحمادة ياعسل انت :lol:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#17

السلام عليكم ورحمة الله وبركاته

AppActivate "عنوان نافذة البرنامج"

هذا الكود لتنشيط البرنامج عن طريق عنوان النافذه

SendKeys "المفاتيح التى تريد الضغط عليها"

وذلك حتى يقوم الجهاز بتنفيز الأمر الذى يحدث عند الضغط على هذا المفتاح فى لوحة المفاتيح ويكون كالتالى

"%{F4}"

وذلك حتى تقوم بغلق البرنامج المنشط حيث العلامه % تعنى مفتاح Alt والنص {F4} وهو مفتاح F4 فى لوحة المفاتيح

ويجب كتابته بنفس النص التالى حتى يعمل جيداً

SendKeys "%{F4}"

أما الكود

Shell "مسار البرنامج"

وذلك حتى تقوم بتشغيل أى برنامج أو ملف تطبيقى

أرجو أن أكون فد وفقت فى الشرح

سلامى

;) ;) :rolleyes:

#18

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

يا أخواني جربته وطلع 100%

ولكن كيف أغلق برنامج كان من الأساس شغال

يعني أنا لم أقوم بتشغيله

والسلام عليكم ورحمة الله وبركاته

B) B) B)

#19

in the name of allah

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
               ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
               ByVal wParam as Long, _
               ByVal lParam As Long) As Long

Sub GetExcel()
   Dim MyXL As Object   ' Variable to hold reference
                        ' to Microsoft Excel.
   Dim ExcelWasNotRunning As Boolean   ' Flag for final release.

' Test to see if there is a copy of Microsoft Excel already running.
   On Error Resume Next   ' Defer error trapping.
' Getobject function called without the first argument returns a 
' reference to an instance of the application. If the application isn't
' running, an error occurs.
   Set MyXL = Getobject(, "Excel.Application")
   If Err.Number <> 0 Then ExcelWasNotRunning = True
   Err.Clear   ' Clear Err object in case error occurred.

' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
   DetectExcel

' Set the object variable to reference the file you want to see.
   Set MyXL = Getobject("c:\vb4\MYTEST.XLS")

' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
   MyXL.Application.Visible = True
   MyXL.Parent.Windows(1).Visible = True
    Do manipulations of your  file here.
   ' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
   If ExcelWasNotRunning = True Then 
      MyXL.Application.Quit
   End IF

   Set MyXL = Nothing   ' Release reference to the
                        ' application and spreadsheet.
End Sub

Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
   Const WM_USER = 1024
   Dim hWnd As Long
' If Excel is running this API call returns its handle.
   hWnd = FindWindow("XLMAIN", 0)
   If hWnd = 0 Then   ' 0 means Excel not running.
      Exit Sub
   Else            
   ' Excel is running so use the SendMessage API 
   ' function to enter it in the Running Object Table.
      SendMessage hWnd, WM_USER + 18, 0, 0
   End If
End Sub

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

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

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