برگزیده های پرشین تولز

مينيمايز شدن پنجره هنگام اجراي برنامه ها

sylvester

Registered User
تاریخ عضویت
26 مارس 2007
نوشته‌ها
526
لایک‌ها
89
محل سکونت
ترکیه
با اجازه مديران من تاپيك جاي اشتباه زده بودم آوردمش اينجا!
.................
سلام! من يه فرم دارم كه دو تا كامند باتم داره. مثلا كامند يك برنامه calculator ويندوز رو ران ميكنه و دومي nopad رو
ميخوام فرمم طوري باشه كه وقتي هر يك ازاين دو برنامه ران ميشن خودش minimize بشه؟ چطوري كدش رو بنويسم؟؟؟
البته فكر كنم بايد ار api كامنده
Private Declare Function WaitForSingleObject Lib "kernel32.dll" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
بالا استفادم كنم. ولي بازم نميدونم كد رو چطور بنويسم
 

Shine

Registered User
تاریخ عضویت
3 ژوئن 2007
نوشته‌ها
150
لایک‌ها
12
Form1.WindowState = vbMinimized
 

sylvester

Registered User
تاریخ عضویت
26 مارس 2007
نوشته‌ها
526
لایک‌ها
89
محل سکونت
ترکیه
Form1.WindowState = vbMinimized
سلام!
با اضافه كردن اين كد در هر commant bottom درسته كه پنجره فرم ما minimize ميشه و اون برنامه اجرا ولي..
من ميخوام كه وقتي اون برنامه close ميشه پنجره فرم ما دوباره restore بشه كه اين كد جوابگو نيست. اميدوارم متوجه مشكل من شده باشيد:(
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
سلام.
یه راهش اینه که با استفاده از CreateProcess برنامه ی مورد نظر رو اجرا کنیم. با این کار تا وقتی برنامه مورد نظر اجرا میشه برنامه ما موقف میشه و کاری نمیتونه انجام بده , در واقع تابع WaitForSingleObject هست که برنامه ی ما رو منتظر میگذاره تا وقتی که برنامه ای که اجرا شده بسته بشه :

کد:
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 CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Sub Command1_Click()
    
    Dim si As STARTUPINFO
    Dim pi As PROCESS_INFORMATION
    Dim AppPath As String
    
    
    Me.WindowState = vbMinimized
    
    AppPath = "c:\windows\notepad.exe"
    si.cb = Len(si)
        
    If (CreateProcess(AppPath, _
        AppPath, ByVal 0&, _
        ByVal 0&, _
        False, _
        0, _
        ByVal 0&, _
        vbNullString, _
        si, _
        pi) = False) Then
      
        MsgBox "Unable to execute " & AppPath
        Exit Sub
        
    End If

    
    Call WaitForSingleObject(pi.hProcess, -1)

    Call CloseHandle(pi.hProcess)
    Call CloseHandle(pi.hThread)

    Me.WindowState = vbNormal
    
End Sub
 

sylvester

Registered User
تاریخ عضویت
26 مارس 2007
نوشته‌ها
526
لایک‌ها
89
محل سکونت
ترکیه
سلام!
دست شما درد نكنه. كار داد
خيلي مخلصيم:blush:
 
بالا