نمایش نتایج 1 تا 8 از 8

نام تاپیک: یک سوال درباره Shell و Feedback آن

  1. #1

    یک سوال درباره Shell و Feedback آن

    دوستان می خوام از برنامم یک فایل اجرایی رو اجرا کنم می خوام تا زمانی که اون برنامه کارش تموم نشده برنامه من قفل بشه.

    مثال :

    Add or Remove Program ویندوز رو در نظر بگیرید
    وقتی روی دکمه Unistall کلیک می کنیم برنامه Unistall باز شده و نکته اینه که خوده پنجره Add or Remove قفل می شه تا زمانی که کاره حذف نرم افزار انجام بشه.

    یا مثال دیگه ما وقتی پنجره ای رو بصورت ShowModal باز می کنیم دقیقا همین اتفاق میافته.


    فقط دقت کنید که من می خوام یک فایل Exe رو اجرا کنم ، فرمی رو از داخل برنامه نمی خوام



    ASP.NET MVC / Entity Framework / Design Pattern
    XCode Objective-C IOS Developer



  2. #2
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: یک سوال درباره Shell و Feedback آن

    يك راه پيش پا افتاده اينه كه يك تايمر بزاري و caption پنجره هاي فعال رو چك كني اگر پنجره موردنظر فعال بود اونوت فرم رو قفل كني.

    ميشه از تايمر هم استفاده نكرد بستگي به برنامه داره كه شما مي دونيد اون فايل exe كي اجرا ميشه يا نه.

    البته من كوچيكتر از اوني هستم كه بخوام شما رو راهنمايي كنم.

    موفق باشيد.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  3. #3
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334

    نقل قول: یک سوال درباره Shell و Feedback آن

    مي توني وقتي كه فرم مورد نظرت رو باز مي كني فرم قبلي تو تا موقعي كه فرم جديدتو نبستي غير فعال نگهداري . براي مثال اگر فرم اصليت frmMain و فرم جديدت frmNew باشه توي يكي از اجزاي frmMain مي توني بنويسي frmNew.Show 1 اون يكي كه بعد از frmNew.Show مي نويسي فرم قبلي يعني frmMain تو رو تا زماني كه فرم جديدت بازه قفل مي كنه

  4. #4

    نقل قول: یک سوال درباره Shell و Feedback آن

    دوست عزیز اگر دقت کنید من عرض کردم خدمتتون که نمی خوام فرمی رو نمایش بدم به قول فرمایش شما همون Form1.Show 1 جواب کاره منو می ده ولی من سوالم چیزه دیگست و مثالی که زدم فکر می کنم مکفی باشه.می خوام فایل Exe رو اجرا کنم تا زمانی که کاره فایل EXE انجام نشده برنامه من کاری انجام نده



    ASP.NET MVC / Entity Framework / Design Pattern
    XCode Objective-C IOS Developer



  5. #5

    نقل قول: یک سوال درباره Shell و Feedback آن

    سلام دوست عزیز
    شما اگر برای فایلی که میخواین execute کنین یه فرم به صورت vbmodal باز کنید و کنترلهای فرم رو هم بردارید min,max,close و برای اجرا exe از command button استفاده کنی و هنگامی که میخوایی دستورات رو اجرا کنی enabel دگمه رو false کن و وقتی که پنجره فایل exe در حال اجرا است enabel دگمه هم false وقتی کار exe تموم شد میتونی دگمه های خروج و دوباره اجرا کردن exe رو enabel رو true کنی همین و به قول دوستمون با timer هم میتونی فعال یا غیر فعال بودن پنجر فایل اجرایی رو چک کنید

    با آرزوی سر بلندی

  6. #6

    نقل قول: یک سوال درباره Shell و Feedback آن

    1 - اگر قرار بود با فایل اجرایی در ارتباط باشم که روشهای خیلی بهتری هم هست
    2 - اسم یا عنوان پنجره فایل اجرایی رو ندارم
    3 - نمی خوام حتی تایمرهای نرم افزار کار کنه
    4 - فایل اجرایی یک فایل نصبی هستش که باید یک فایل مورد نیاز رو نصب کنه



    ASP.NET MVC / Entity Framework / Design Pattern
    XCode Objective-C IOS Developer



  7. #7
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: یک سوال درباره Shell و Feedback آن

    پس از فايل exe چه چيزي در اختيار دارين تا بتونين از طريق اون كنترل رو دست بگيرين؟
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  8. #8
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: یک سوال درباره Shell و Feedback آن

    اين دقيقا همون چيزي كه شما مي خوان:
    بدون نياز به تايمر.

    اين كد رو داخل ماژول قرار بديد:


    Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
    End Type

    Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
    End Type

    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
    Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    Private Const NORMAL_PRIORITY_CLASS = &H20&
    Private Const INFINITE = -1&

    Public Sub ExecCmd(cmdline$)
    Dim proc As PROCESS_INFORMATION
    Dim start As STARTUPINFO
    start.cb = Len(start)
    ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
    ret& = WaitForSingleObject(proc.hProcess, INFINITE)
    ret& = CloseHandle(proc.hProcess)
    End Sub


    حالا اونجايي كه مي خواين اون فايل exe رو به اين صورت اجرا كنيد:


    ExecCmd "c:\windows\system32\calc.exe"



    اينجا برنامه ماشين حساب ويندوز رو در نظر مي گيريم كه تا زماني كه ماشين حساب بسته نشود نمي توانيم از برنامه استفاده كنيم.

    موفق باشيد
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •