ايران ويج

نسخه‌ی کامل: صدا کردن یک فایل
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام دوستان
با چه دستوری میتونم در وی بی یه فایل Exe رو صدا کنم و اونو اجرا کنم و زیاد تابلو نباشه
آیا حتما باید از
Command Prompt استفاده منیم یا اینم میشه
مثلا من یه برنامه نوشتم . میخوام همراه با اون سرور یه تروجان هم مخفی اجرا بشه
آیا باید برنامه اول سرور منو تو سیستم طرف کپی کنه یا یک جا اجرا میکنه
میتونین از دستورwinexc با پارامتر hide استفاده کنین این دستور 2 پارامتر میگیره اولی ادرس فایل و دومی نوع نمایش
کد:
The WinExec function runs the specified application.

This function is provided for compatibility with earlier versions of Windows. For Win32-based applications, use the CreateProcess function.

UINT WinExec(

    LPCSTR lpCmdLine,    // address of command line
    UINT uCmdShow     // window style for new application
   );
یا
از دستور shellexecute اونم با پارامتر hide استفاده کنی
کد:
The ShellExecute function opens or prints a specified file. The file can be an executable file or a document file. See ShellExecuteEx also.

HINSTANCE ShellExecute(

    HWND hwnd,    // handle to parent window
    LPCTSTR lpOperation,    // pointer to string that specifies operation to perform
    LPCTSTR lpFile,    // pointer to filename or folder name string
    LPCTSTR lpParameters,    // pointer to string that specifies executable-file parameters
    LPCTSTR lpDirectory,    // pointer to string that specifies default directory
    INT nShowCmd     // whether file is shown when opened
   );
تابع APIي وجود دارد به نام WinExec. شكل كلي اين تابع از اين قرار است:


WinExec(lpCmdLine: PAnsiChar; uCmdShow: Cardinal);

كه lpCmdLine خط دستور مورد نظر شما براي اجراي فايل و uCmdShow بايد يكي از مقادير زير را داشته باشد:
SW_HIDE SW_MAXIMIZE SW_MINIMIZE
SW_RESTORE SW_SHOW SW_SHOWDEFAULT
SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE
SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL


براي توضيحات بيشتر راجع به هر كدام از اين ثابت ها به راهنماي Windows SDK دلفي يا MSDN مراجعه كنيد.

تابع WinExec تابع بسيار قديمي و محدودي است و ما قصد نداريم در اين مقاله بيشتر از اين راجع به اين تابع صحبت كنيم.

تابع ديگري وجود دارد به نام ShellExecute. اين تابع در يونيت ShellAPI تعريف شده است. بنابر اين لازم است يونيت ShellAPI را در ليست uses يونيت خود وارد كنيد. اين يكي از توابع بسيار قدرتمند براي اجراي فايل است.
نگاهي به شكل كلي اين تابع بياندازيد:



function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall;



hWnd Handle پنجره اي كه اين دستور را فراخوانده است.
Operation نوع دستوري مورد نظر جهت اجرا
FileName نام فايل يا شاخه
Parameters پارامترهاي مورد نظر در هنگام اجراي فايل exe
Directory شاخه پيش فرض در هنگام اجراي فايل
ShowCmd مشخص كننده چگوني نمايش فايل در هنگام اجرا



پارامتر اول يك متغيير از نوع HWND است.
لازم است براي كساني كه با مفهوم Handle در ويندوز آشنا نيستند توضيحاتي راجع به Handle بدهم. هر پنجره يا آبجكتي در ويندوز داراي يك Handle است كه براي دسترسي به آن پنجره يا آبجكت شما بايد از اين Handle استفاده كنيد. در واقع يك Handle يك عدد در مبناي 16 است. Handle يك عدد unique يا همتا است كه ويندوز آن را مقداردهي مي كند. اگر از يك پنجره دو Instance اجرا شده باشد (مثلا يك برنامه دو بار اجرا شده باشد) هر كدام از اين Instanceها يك Handle جداگانه دارند.
با اين تفاصيل پارامتر اول Handle پنجره اي است كه اين دستور را صادر كرده است. شما براي اين پارامتر مي توانيد از Application.Handle استفاده كنيد و يا آن را برابر 0 قرار دهيد. به علاوه مي توانيد Handle يك برنامه ديگر را بدهيد.

در صورتي كه شما مي خواهيد پيغام هاي اخطار آن فايل را دريافت كنيد يا آن را كنترل نماييد و يا تا اجراي كامل آن اجراي برنامه را متوقف كنيد با Handle برنامه خود را با استفاده از Application.Handle به اين پارامتر بدهيد.

پارامتر دوم مشخص كننده وظيفه اي است كه قرار است انجام شود. اين پارامتر مقادير پيش فرضي ندارد و بستگي به خصوصيات فايل اجرايي دارد. روي يك فايل از نوع Text كليد سمت راست ماوس را بزنيد. احتمالا موارد بالاي ليست "open"، "Edit with ..." , "print" است. هر كدام از اين رشته هاي مي توانند يك عمليات يا Operation باشند. به عنوان مثال شما مي خواهيد يك فايل Text را چاپ كنيد. در اين صورت كافي است از عبارت print به عنوان operation استفاده كنيد. يا مي خواهيد يك فايل rar را با استفاده از WinRar باز كنيد. در اين صورت مي توانيد از "Extract files" استفاده كنيد. حتما تا به حال متوجه شده ايد كه دستور ShellExecute چه مقدار انعطاف پذير است. با استفاده از اين فرمان مي توانيد هر گونه دستور Shell را اجرا نماييد.

پارامتر سوم مشخص كننده نام فايل يا شاخه اي است كه شما مي خواهيد عمليات بر روي آن انجام شود.
پارامتر چهارم ليست پارامترهايي است كه تمايل داريد فايل exe با اين پارامترها اجرا شود. پارامترها پنجم نيز نام شاخه پيش فرض در هنگام اجراي فايل مورد نظر شماست. اگر شما فايل exe اي را اجرا كنيد و اين فايل exe بخواهد از شاخه جاري فايلهاي اضافه اي را استفاده كند ويندوز شاخه جاري را به اون مطابق با اين شاخه اطلاع خواهد داد. و اما آخرين پارامتر مشخص كننده شكل اجراي فايل است. مقدار اين پارامتر مي تواند يكي از ثابت هايي ليستي باشد كه در ابتداي اين مقاله عنوان شد. به عنوان مثال شما مي توانيد از SW_HIDE استفاده كنيد كه در اين صورت فايل اجراي شما مخفي خواهد بود و يا از SW_SHOWMINIMIZE استفاده كنيد كه در اين صورت برنامه شما Minimizeشده اجرا مي شود.

و حالا به يك نكته خيلي مهم توجه كنيد:
1- رشته هاي اين تابع از نوع PChar هستند بنابراين شما بايد رشته هاي string را به صورت PChar به اين تابع بدهيد. شما مي توانيد به طور عادي رشته مورد نظر خود را به اين تابع بدهيد و يا در صورتي كه رشته مورد نظر شما string است بايد با استفاده با استفاده از دستور PChar آن را Typecast كنيد. به عنوان مثال:


ShellExecute(0, 'open', PChar(ExtractFilePath(Application.ExeName) + 'test.exe') , '', '', SW_SHOWNORMAL);


در اين مثال با استفاده از تابع ExtractFilePath و Application.ExeName كه حاوي آدرس كامل فايل Exe است شاخه اي كه فايل exe در آن قرار دارد را پيدا كرده ايم و سپس فايل test.exe را كه در كنار فايل اصلي اجرايي وجود دارد را به آن اضافه كرده ايم. كل اين عبارت TypeCast شده است به PChar.
جهت اطلاع كساني كه نمي دانند TypeCast چيست. TypeCast فرآيندي است كه شما متغيير يا Objectي را از يك نوع به نوع ديگري تبديل ميكنيد. كد زير را نگاه كنيد و با نوع پيشرفته تري از TypeCast آشنا شويد:


procedure TForm1.Button1Click(Sender: TObject); begin TButton(Sender).Caption := 'Test'; end;

در اين مثال Sender را از نوع TObject است TypeCast كرده ايم به TButton. و پراپرتي Caption آنرا تغيير داده ايم. براي اطلاعات بيشتر راجع به TypeCast به كتب دلفي مراجعه كنيد.


و اجازه دهيد به چند مثال جالب نيز نگاهي بياندازيم:
edit كردن يك فايل HTML با Editor پيش فرض HTML:

ShellExecute(Handle, 'edit', 'test.htm', '', '', SW_SHOW);

نصب يك فايل INF

ShellExecute(Handle, 'install', 'divx.inf', '', '', SW_SHOW);

فشرده ساختن يك فايل با استفاده از winrar و ارسال آن به ايميل:

ShellExecute(Handle, 'compress and mail...', 'test.file', '', '', SW_SHOW);

ارسال ايميل به ghoghnoose.dana@gmail.comو با موضوع "Great Article":

ShellExecute(0, 'open', 'mailto:ghoghnoose.dana@gmail.com, '', '', SW_SHOWNORMAL);
استفاده از دستورات بالا كه مبين عزيز توضيح دادن در دلفي بسيار كارآمد هستند!!

اما در ويژوال بيسيك مي تونيد از دستور Shell به شكل زير استفاده كنيد:

Shell FilePath as string , RunMode as VB_Namandeyram!! 'fff

توضيح : بعد از دستور Shell آدرس فايل موردنظر رو داخل گيومه مي نويسي يا از متغيير استفاده مي كنيد و بعد از ويرگول بايد مشخص كنيد برنامه در چه حالتي اجرا شود . مثلا حالت نرمال، فوكوس شده، مي ني مايز يا حتي پنهان.
سلام

بعد از یه مدت نه چندان دور مزاحمتون شدمClap به دوستانی هم که در غیاب من اومدن خوشامد می گمHeart
اما اصل مطلب:
جناب Di Di می شه یه مثال برای دستور شل بزنید چون من که نتونستیم باهاش کار کنیمSad

خدا حافظ
Shell "C:\Windows\Notepad.exe"
سلام

دستت درد نکنه بازم مثل همیشه به مشکل برخوردم Shy اما مشکل:
دستور شما درسته اما اگه با دستور زیر توسط کامند دیالوگ بخوای برنامه های دیگه رو اجرا کنی اخطار می ده
Private Sub Command1_Click()
CommonDialog1.ShowOpen
Text1.Text = CommonDialog1.FileName
Shell "Text1.Text"
End Sub

خدا حافظ
سلام
خوب معلومه که کار نمیکنه
دستور Shell فقط برای اجرا کردن فایل های اجرائی هست نه چیز دیگه!
سلام

برای باز کردن پوشه ها(مثلا ادرس روبه رو:E:\filme\New Folder),مسیر مورد نظر یا حتی اجرای فایل ها باید از چه روشی استفاده کرد.

ممنون
الان از آقا حامد ÷رشسیدم

Sell " Explorer E:\Filme\New Folder" ' fff
سلام

دستت درد نکنهClap اما قسمت دوم(اجرای فایل با دادن آدرس اون فایل) سوال مونده اگه لطف کنی ما رو از جوابهایتان بهرمند کنید.Shy

خدا حافظ
سلام

من می خواستم با دادن آدرس داخل تکست باکس فایل های مختلف(نه فقط exe بلکه تماما)رو اجرا کنم حالا هر فایلی که می خواد باشه.مثل کاری که در محیط ویندز با دابل کلیک روی آیکون برنامه ها انجام می دیم.((فکر کنم واضحتر از این نمی شه توضیح داد))
پس خواشمند اگه بلدید جواب بدید.
خدا حافظ
صفحه‌ها: 1 2