|
سلام هموطن
بعضی ها میخوان وقتی برنامه اجرایی در حال اجرا هست یه کاری بکنه که در زمان طراحی و اجرا از داخل وی بی نشه در این بخش میخوام بگم که چطوری تشخیص بدید برنامه در حال اجرا از داخل ویژوال بیسیک هست یا اینکه فایل اجرایی برنامه هستش
وی
بی یه شی به نام App داره که خاصیتی به اسم EXENAME داره. هنگامی که
برنامه به صورت فایل اجرایی در حال اجرا باشد App.EXENAME نام فایل اجرایی
را مشخص می کند اما در محیط ویژوال بیسیک نام پروژه را برمیگرداند. اگر
برای نام پروژه و فایل اجرایی از نام های مختلفی استفاده کنید می توانید
از این خاصیت برای تشخیص استفاده نمایید.
علاوه بر این روش روش بهتری وجود دارد که توسط توابع API می توان تشخیص داد. هنگامی
که برنامه در محیط ویژوال بیسیک اجرا می شود نام ماژول برنامه VB هست ولی
زمانی که برنامه به صورت فایل اجرایی کامپایل شده اجرا شود نام ماژول
برنامه نام فایل اجرایی برنامه هست
برای پیدا کردن ماژول برنامه از توابع GetCurrentTask و TaskFindHandle استفاده می کنیم.
برنامه نمونه : برای برنامه یک بس ماژول اضافه کنید و کد زیر را در آن قرار دهید
Type TASKENTRY dwSize As Long hTask As Integer hTaskParent As Integer hInst As Integer hModule As Integer wSS As Integer wSP As Integer wStackTop As Integer wStackMinimum As Integer wStackBottom As Integer wcEvents As Integer hQueue As Integer szModule As String * 10 wPSPOffset As Integer hNext As Integer End Type ' The following declare must be entered on a single line Declare Function TaskFindHandle Lib "Toolhelp" (lpte As TASKENTRY, ByVal hTask As Integer) As Integer Declare Function GetCurrentTask Lib "Kernel" () As Integer Function VBDesignEnvironment () As Integer Dim TE As TASKENTRY Dim ModuleName As String Dim hTask As Integer Dim r hTask = GetCurrentTask() TE.dwSize = Len(TE) r = TaskFindHandle(TE, hTask) ModuleName = Left(TE.szModule, InStr(TE.szModule, Chr(0)) - 1) If ModuleName = "VB" Then VBDesignEnvironment = True Else VBDesignEnvironment = False End If End Function
و کد زیر را در Form_Load
Sub Form_Load () Me.Show If VBDesignEnvironment() Then Print "Design Environment" Else Print "Executable" End If End Sub
برنامه را در هر دو حالت اجرا کنید و نتیجه را ببینید و لذت ببرید.
|