خب مختصر و مفيد خدمتتون توضيح ميدم. همون طور که گفتم من در اين نمونه از دو مدل Command Line و Clipboard استفاده کردم. اول Clipboard رو توضيح ميدم. در اين مدل همانند حالتي که شما توسط دستور کپي يک متن يا عکس را به حافظه منتقل مي کنيد و در جايي که مد نظرتون هست اون رو Paste ميکنين، عمل شده. يعني از ساير برنامه هايي که قرار هست با برنامه اصلي ارتباط داشته باشن مقاديري در clipboard ريخته ميشه و از اونجايي که همه به کليپ برد دسترسي دارن ميشه مکانيزمي ( حلقه) رو تدارک ديد تا مدام اين کليپ برد رو پايش ( Scan) کنه تا به محض ورود مقداري جديد وارد عمل بشه. البته اين مدل روش ساده ترين مدل برقراري ارتباط بين موجوديت هاست. هنگامي که تعداد موجوديت ها زياد بشه و قرار باشه از اين مدل استفاده بشه تداخل به وجود مياد و بايد راهي انديشيده بشه تا هر موردي که مياد و ميره شناسه اي منحصر به فرد داشته باشه تا بشه مبداش رو تشخيص داد. خب ما به همون مدل سادش بسنده کرديم. البته بايد هوشمندي به خرج بديم و به هنگامي که از مقادير ارسالي استفاده شد Clipboard رو با فرستادن يک مقدار تهي خالي کنيم. همانند آن چيزي که در نمونه مي بينيد.
در متد دوم که موسوم به Command Line هست از يک آرايه سراسري ( قابل دسترس در همه جا) به نام [CmdLineParam$[n استفاده ميشه. به اين ترتيب که برنامه مقصد به همراه پارامترهاي لازم همانند مثال فراخواني ميشه و در برنامه مقصد توسط همين آرايه سراسري [CmdLineParam$[n دريافت ميشه.
برای نمونه کد زیر دو پارامتر رو که توسط Space از هم جدا شدن رو به برنامه MyApp.exe ارسال میکنه :
خب حالا برای اینکه برنامه MyApp بتونیه این مقادیر رو دریافت کنه یک شی اسکریپت به نام CBK_CMDLINE در Master Top Layer قرار میدیم و کدهای پردازشی لازم رو درش قرار میدیم. مثل زیر:
کد:
n=VAL(CmdLineParam$[0])
** if number of parameters is > 0 then...
If (n>0) Then
** This loop simply enumerate the passed parameters
For i=1 To n
** ..and show the obtained parameters in message box (or do anything you want)
Message("Command line parameter:","CmdLineParam$[i]")
Next i
End
اندیس صفر آرایه رشته ای [CmdLineParam$[0 همیشه تعداد پارامترهای ارسال شده رو نگه میداره که در اینجا میشه 2 تا. به همین ترتیب و توسط حلقه ای که می بینین میشه در آرایه پیمایش کرد و مقادیر رو دریافت کرد. به این نکته توجه کنید که وقتی میخای به برنامه ای مقادیری رو به این ترتیب ارسال کنید و نیاز دارید که تنها یک نسخه از برنامه در آن واحد در حالت اجرا باشه باید موقع کامپایل گزینه Allow only one instance رو انتخاب کنید.
بنده در استفاده از تکنیک Command Line از ثابت CBK_CMDLINE استفاده نکردم. دلیل خاصی نداشته. اما شما میتونین بر اساس چیزی که گفتم ازش استفاده کنید.