PDA

View Full Version : اجرای فایلهای اجرایی و نمایش آن درون فورم خود



R_BABAZADEH
شنبه 12 اردیبهشت 1383, 01:31 صبح
آیا کسی می دونه چطور می تونییم یک فایل اجرایی رو درون فورم خود به نمایش در اورده و از ان استفاده کرد

ساران سافت
شنبه 12 اردیبهشت 1383, 16:34 عصر
یعنی چی؟
منظورت دستور ("نام فایل اجرایی")Shell می باشد؟ :wink:

(سیدشریفی)
شنبه 12 اردیبهشت 1383, 17:43 عصر
فکر کنم منظورشان این باشد که فایل اجرایی نه در پنجره جداگانه بلکه در پنجره فرم مورد نظر اجرا شود .
:(

linux
شنبه 12 اردیبهشت 1383, 18:32 عصر
می تونی یه ویندوز جدید بنویسی!

M-Gheibi
شنبه 12 اردیبهشت 1383, 18:50 عصر
دقیقا نمیشه ولی با استفاده از OLE تا خدودی برای بعضی از برنامه ها ، بله.

rezaTavak
شنبه 12 اردیبهشت 1383, 18:54 عصر
سلام

بستگی به برنامه ای که می خواهید استفاده کنید داره. مثلا msgraph تما باید از برنامه دیگری کنترل شود.

linux
یک شنبه 13 اردیبهشت 1383, 18:57 عصر
من فکر می کنم پس هستم.

ولی خدا میگه!
من هستم پس هستم

Best Programmer
سه شنبه 15 اردیبهشت 1383, 12:39 عصر
البته شدنی هست ولی شرایطی دارد و مقدار زیادی کار. اولا باید From اصلی تون که میخواهید پنجره فایل اجرایی در ان قرار بگیرد از نوع MIDI باشد .یک مقداری API بازی داره که اگه بخواهی میتوانم توضیح بیشتری بدهم(با کمک دوستان). اگر هم سورس اماده ایی پیدا کردم میزارم همین جا تا در دسترس همه باشد.

R_BABAZADEH
چهارشنبه 16 اردیبهشت 1383, 00:43 صبح
Best Programmer عزیز از شما متشکرم
این برنامه رو من قبلا داشتم ولی گم کرده ام
منتظر کمک شما هستم :)

Best Programmer
پنج شنبه 24 اردیبهشت 1383, 11:33 صبح
ببخشید که کمی دیر دیر سرک میزنم.
اولا کمی درباره کاری که میخواهید انجام بهید توضیح بدهید:
1: آیا میخواهید کنترل رویدادهای پروسس رو هم در دست داشته باشد؟
2: ابا می خواهید نتایج یه پروسس شما انتقال پیدا بکند؟
3: آیا نوع فورم مورد نظزتان از نوع دیالوگ است؟

R_BABAZADEH
جمعه 25 اردیبهشت 1383, 14:25 عصر
به طور مثال اجرا ماشین حساب ویندوز یا not pad یا هر برنامه دیگر درون فرم خود و نمایش فرم آن درون فورم خود چه به صورت کامل و چه به صورت mdi فورم

Best Programmer
یک شنبه 27 اردیبهشت 1383, 01:56 صبح
ببخشید شما به سوالای من جواب ندادید . اجرای یک برنامه آسون هست ولی کارای بالا اصل هست که نفرمودید. مگه نه با تابع
CreateProcess میشود به راحتی هر فایلی را اجرا کرد. و با یک تابع دیگه caption رو هم عوض میکنی و یک hook میزاری که ....

R_BABAZADEH
چهارشنبه 06 خرداد 1383, 21:12 عصر
به طور مثال من میخواهم یک برنامه اجرایی را درون یک فورم اجراکنم و caption آنرا عوض کرده و حتی یک منوی آنرا
غیر فعال یا حذف کنم.
نتایج پروسس و رویدادهای پروسس زیاد برایم احمیت ندارد
:mrgreen:

Best Programmer
سه شنبه 12 خرداد 1383, 13:12 عصر
کارهای لازم برای این کار :
1: بدست آوردن Hwnd(Handle of Window) .


Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnameMSWord = "OpusApp"
Const gcClassnameMSExcel = "XLMAIN"
Const gcClassnameMSIExplorer = "IEFrame"
Const gcClassnameMSVBasic = "wndclass_desked_gsk"
Const gcClassnameNotePad = "Notepad"
Const gcClassnameMyVBApp = "ThunderForm"
Private Sub Form_Load()
Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
'Ask for a Window title
Ret = InputBox("Enter the exact window title:" + Chr$(13) + Chr$(10) + "Note: must be an exact match")
'Search the window
WinWnd = FindWindow(vbNullString, Ret)
If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
'Show the window
ShowWindow WinWnd, SW_SHOWNORMAL
'Create a buffer
lpClassName = Space(256)
'retrieve the class name
RetVal = GetClassName(WinWnd, lpClassName, 256)
'Show the classname
MsgBox "Classname: " + Left$(lpClassName, RetVal)
'Post a message to the window to close itself
PostMessage WinWnd, WM_CLOSE, 0&, 0&
End Sub

2: تغییز عنوان پنجره :


Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Sub Form_Activate()
Dim MyStr As String
'Create a buffer
MyStr = String(100, Chr$(0))
'Get the windowtext
GetWindowText Me.hwnd, MyStr, 100
'strip the rest of buffer
MyStr = Left$(MyStr, InStr(MyStr, Chr$(0)) - 1)
'Triple the window's text
MyStr = MyStr + MyStr + MyStr
'Set the new window text
SetWindowText Me.hwnd, MyStr
End Sub

R_BABAZADEH
پنج شنبه 14 خرداد 1383, 14:17 عصر
Best Programmer عزیز از راهنمایی شما متشکرم در صورت امکان یک نومنه برنامه برای اطلاعات بالا در اختیار من قرار دهید :oops:

Best Programmer
پنج شنبه 14 خرداد 1383, 15:50 عصر
مراجعه شود به تاپیک " Win 32 API "

coral
چهارشنبه 12 اسفند 1383, 08:14 صبح
http://www.barnamenevis.org/forum/viewtopic.php?t=10418

این هم لینک تاپیک بالا