السلام عليكم ورحمة الله وبركاتة
شباب لو انا استدعيت برنامج معين نازل على الجهاز بتاعى بأمر ال shell لو عايز اقفل نفس البرنامج اللى اتفتح برمجيا
ازاى اقدر اعملها
وشكرا
السلام عليكم ورحمة الله وبركاتة
شباب لو انا استدعيت برنامج معين نازل على الجهاز بتاعى بأمر ال shell لو عايز اقفل نفس البرنامج اللى اتفتح برمجيا
ازاى اقدر اعملها
وشكرا
خيركم من تعلم العلم وعلمه
أخي siner أعتقد ذلك
لأنهو أن لم يكن ذلك لما و ضع الموضوع
الكائن Command و مثال هام عليه
حمل المقالة الكاملة عن الكائن Command
أحقن ملفك بملف أخر على نظام ملفات FAT
They disguise it hypnotize it
Television made you buy it
Mezmerize the simple minded
Propaganda leaves us blinded
شباب انا فتحت مثلا برنامج بأمر ال shell
shell ("c:\program files\msnmessenger")
ده مثلا عايز اعمل زرار فى الفورم بتاعتى يقفل البرنامج اللى اتفتح ده برمجيا ياترى حد يقدر يفيدنى فيها
خيركم من تعلم العلم وعلمه
عتقد انى فهمتك الآن
ابحث فى المنتدى عن Process Terminate وستجد ماتريد ان شاء الله
لآ إله إلا الله محمد رسول الله
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته ،،
أولاً : عندما تقوم بتشغيل برنامج عن طريق الدالة 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
سبحان الله وبحمده ... سبحان الله العظيم
لاقيت الخطأ الخاص بالجزء بتاع الدالة CloseHandle لان الدالة مكنتش متعرفة فجبت تعريف الدالة وحطيته بس برضه مش بيقفل وبيدخل على MsgBox على طول
خيركم من تعلم العلم وعلمه
يبدو أنني نسيت أن أضع تعريف الدالة CloseHandle ، والمشكلة الثانية أنه كان يجب أن تضع تعريف المتغير ProcessID في قسم التصريحات العامة ..
ستجد الكود الصحيح في ردي السابق .. بعد التعديل !
وتقبل تحياتي
أخوك / المبرمج أحمد
سبحان الله وبحمده ... سبحان الله العظيم
أخى العزيز أحمد شكرا والف شكر على هذا الكود الجميل مثلك الكود شغال 100% والحمد لله
وجزاك الله خيرا
خيركم من تعلم العلم وعلمه
أخي العزيز الاّن فهمت مبتغاك
و مشكور يا أخ أحمد على هذا الكود المفيد
أخي Misiny_forever يمكنك فعل ذلك يطؤيقة غير برمجية إذا أحببت و أليك الكود
Private Sub Command1_Click()
SendKeys "%{F4}"
AppActivate "Calculator"
End Sub
Private Sub Form_Load()
Shell "calc.exe"
End Subو السلام عليكم و رحمة الله و بركاته
الكائن Command و مثال هام عليه
حمل المقالة الكاملة عن الكائن Command
أحقن ملفك بملف أخر على نظام ملفات FAT
They disguise it hypnotize it
Television made you buy it
Mezmerize the simple minded
Propaganda leaves us blinded
السلام عليكم ورحمة الله وبركاته
أ/غسان
أعتقد أنه يجب أولا أن تقوم بتنشيط النافذه ثم تقوم بغلقها
كالتالى:
Private Sub Command1_Click()
AppActivate "Calculator"
SendKeys "%{F4}"
End Sub;) ;) :rolleyes:
أعمل لدنياك كأنك تعيش أبداً وأعمل لأخرتك كأنك تموت غداً
أحفظ لسانك تصان كرامتك
-----------------
من مواضيعى بالمنتدى
جديد الباب الاول من كتابى المدخل الى قواعد البيانات
جديد دروس قواعد البيانات
الان حرك الماوس بواسطة الكيبورد
كلامك صح
لكن أنا عندما أفعل العكس ألاحظ نتيجة 100% على عكس كلامك حيث أن النتيجة في كلامك 50%
قد يكون يوجد تفسير لكني أكلمك عن تجربة
الكائن Command و مثال هام عليه
حمل المقالة الكاملة عن الكائن Command
أحقن ملفك بملف أخر على نظام ملفات FAT
They disguise it hypnotize it
Television made you buy it
Mezmerize the simple minded
Propaganda leaves us blinded
أخى العزيز غسان والأخ العزيز شريف شكرا لكم على متابعتكم الجادة للموضوع بس طلب ممكن شرح الكود ده لان مش فاهمه اوى
خيركم من تعلم العلم وعلمه
تقصد اى كود ياحمادة ياعسل انت :lol:
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
السلام عليكم ورحمة الله وبركاته
AppActivate "عنوان نافذة البرنامج"
هذا الكود لتنشيط البرنامج عن طريق عنوان النافذه
SendKeys "المفاتيح التى تريد الضغط عليها"
وذلك حتى يقوم الجهاز بتنفيز الأمر الذى يحدث عند الضغط على هذا المفتاح فى لوحة المفاتيح ويكون كالتالى
"%{F4}"وذلك حتى تقوم بغلق البرنامج المنشط حيث العلامه % تعنى مفتاح Alt والنص {F4} وهو مفتاح F4 فى لوحة المفاتيح
ويجب كتابته بنفس النص التالى حتى يعمل جيداً
SendKeys "%{F4}"أما الكود
Shell "مسار البرنامج"
وذلك حتى تقوم بتشغيل أى برنامج أو ملف تطبيقى
أرجو أن أكون فد وفقت فى الشرح
سلامى
;) ;) :rolleyes:
أعمل لدنياك كأنك تعيش أبداً وأعمل لأخرتك كأنك تموت غداً
أحفظ لسانك تصان كرامتك
-----------------
من مواضيعى بالمنتدى
جديد الباب الاول من كتابى المدخل الى قواعد البيانات
جديد دروس قواعد البيانات
الان حرك الماوس بواسطة الكيبورد
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
يا أخواني جربته وطلع 100%
ولكن كيف أغلق برنامج كان من الأساس شغال
يعني أنا لم أقوم بتشغيله
والسلام عليكم ورحمة الله وبركاته
B) B) B)
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 SubOracle 10G Certified Professional Developer.
عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي
هذا الموضوع مغلق.