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

إستعمال أوامر الدوس في دالفي بدون أي مشاكل

بدأه neo_protect في 23 يونيو 2009 · 2 رد · 1,676 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

وجدت موضوع أعجني فأحببت أن أطرحه عليكم

إستعمال أوامر الدوس في دالفي بدون أي مشاكل بستعمال ShellExecut و مترجم CMD

المفاتيح : /c و /k

عند إستعمال /c ينفذ سطر التعليمة ثم يغلق نافذة الدوس

عند إستعمال /k ينفض سطر التعليمة و ينتضر من المستخدم أن يغلق نافذة الدوس

المفتاح CMD :

مثال : Dir c:\*.*

مثال فتح ملف نصي بواسطة برنامج الوندوز : Notepad.exe Teste.txt

- لإستعمال عدة إجرائات يشترط وضع كل الإجرائات بين '' '' وبين كل إجراء و آخر &&

مثال :

"Copy c:\monfichier.txt E:\Monfichier&&del c:\Monfichier.txt"

حذاري :

عند أستعمال المتاح /k و بالخاصية SH_HIDE,

فيجب إضافة &&Exit و وضعها كما يلي "Dir c:\*.*&&Exit"

المضوع كامل بالفرنسية :

Utiliser les commandes Dos sans problèmes avec ShellExecute de l'unité ShellApi

et l'interpreteur de commande CMD.exe

Petites explications:

Les Switches /c : Exécute la ligne de commande et referme l'interpréteur de Commande

/k : Exécute la ligne de commande et attend que l'utilisateur referme

la fenêtre dos

Il y d'autres switchs pour cela allez dans l'aide de Windows et tapez CMD

Dans le TEdit vous pouvez lancer:

Une commande dos simple Ex: Dir c:\*.*

Une application avec paramètres Ex: Notepad.exe Teste.txt

Plusieurs commandes mais il faut les mettre entre guillemets "" et

Séparer les commandes avec && Ex:

"Copy c:\monfichier.txt E:\Monfichier&&del c:\Monfichier.txt"

Démarrer une application attendre qu'elle soit finie et en exécuter

une deuxième Ex:

"Start /wait %systemroot%\System32\calc.exe&&Dir c:\*.*"

La même ligne de commande sous Dos donnerait ceci :

cmd.exe /k "start /wait %systemroot%\System32\calc.exe&&Dir c:\*.*"

Et dans Delphi :

ShellExecute(Handle, Nil, 'CMD' ,

'/k "start /wait %systemroot%\System32\calc.exe&&Dir c:\*.*"', Nil ,

SW_HIDE);

ATTENTION si vous Exécutez une ligne de commande avec comme switch /k et

avec l'option SW_HIDE dans ce cas la fenêtre est certes invisible mais elle

n'en est pas pour autant fermer et après une série de commande de ce type

vous aurez autant de Processus CMD Actif (ce qui à terme va saturer la mémoire).

C'est pour cette raison que j'ai mis dans la Procédure RadioButton1Click une boucle

qui vous évitera ce désagrément en forcent (si /k est sélectionner)

le mode SW_SHOWNORMAL

Dans vos applications si vous devez utiliser /k avec SW_HIDE,

je vous conseil donc d'ajouter '&&Exit' à votre ligne de commande

et de la mettre entre guillemets "" comme ceci :

"Dir c:\*.*&&Exit"

تم تعديل هذه المشاركة بواسطة neo_protect في 23 يونيو 2009 في 17:55

#2
اقتباس
حذاري :

عند أستعمال المتاح /k و بالخاصية SH_HIDE,

SW_HIDE لعدم اظهار النافذة

مهما كانت طريقة استدعا ملف .BAT هناك خدعة بسيطة لاغلاقة النافذة

بكتابة اخر امر CLS دون الرجوع للسطر

هذا كفيل بغلق النافذة اليا

مثال الملف go.bat

@cd\
@MD Autorun.inf

نضيف اليه CLS مع عدم الرجوع للسطر (دون الضغط على Enter) يصبح

@cd\
@MD Autorun.inf
CLS

مثال مرفق

DelphiBatch.rar

d4baa0.gif
#3

شكرا B.M.AbdelAziZ على الإضافة :thumb_up:

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

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

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

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

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