PDA

View Full Version : اجرای دوباره برنامه با یک فرم دیگه



Accidentboy
یک شنبه 25 شهریور 1386, 11:43 صبح
سلام
من می خوام اگه برنامه ای دوباره اجرا شد یک فرم دیگه ظاهر بشه ( تا اینجا شو می تونم انجام بدم ) بعد از ظاهر شدن فرم دیگه بتونم به فرم اولی دسترسی داشته باشم (مثلا Timer شو غیر فعال کنم )
جیکار کنم ؟

manvaputra
یک شنبه 25 شهریور 1386, 12:56 عصر
بعد از ظاهر شدن فرم دیگه بتونم به فرم اولی دسترسی داشته باشم

دوست عزیز این دو فرم جز یک برنامه هستند یا هر فرم مربوط به پروشه ای جداگانست؟ منظورخ اینه که مثلا فرم یک و فرم دو مربوط به یک برنامه هستند یا دو برنامه جداگانه؟

Rocker
یک شنبه 25 شهریور 1386, 13:09 عصر
فکر کنم این دوستمون میخواد یه splash بسازه درست میگم.
برای اینکار شما باید اون فرمی رو که به عنوان splash در نظر گرفتید رو به عنوان فرم اصلی (برای این کار کلید shidt+ctrl+F11 را فشار دهید و در تب forms در قسمت main form نام فرمی را که به عنوان splash در نظر گرفته اید را انتخاب کنید)تنظیم کنید و بعد از اینکه تایمر مورد نظر به حد نصاب رسید فرم های دیگر رو در زمان اجرا show کنید و فرم splash را hide دقت کنید که همه ی فرمها غیر از فرم splash را در زمان طراحی خاصیت visible آنرا برابر false کنید.
امیدوارم تونسته باشم کمکتون کنم.

Accidentboy
یک شنبه 25 شهریور 1386, 13:28 عصر
نه دوستان
ببینین من یک برنامه رو اجرا می کنم , بعد دوباره اون برنامه که در حال اجرا , با دو تا کلیک رو آیکونش اجرا می کنم الان فرم دومی رو Show می کنم .
رو فرم دومی یه دکمه هستش که Timer فرم اولی را False می کن تا اینجا درست

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

من می خوام به اجرای اولی دسترسی داشته باشم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟

Rocker
یک شنبه 25 شهریور 1386, 13:43 عصر
دقیقا بگو میخوای چی کار کنی شاید یه راه بهتری جلوی پات گذاشتیم.

Hamid_PaK
یک شنبه 25 شهریور 1386, 14:37 عصر
باید با ارسال پارامتر برنامه اول را از مقصودت باخبر کنی.
دنبال WM_COPYDATA بگردی پیداش می کنی.

یا حق ...

SYNDROME
یک شنبه 25 شهریور 1386, 14:54 عصر
با سلام

نه دوستان
ببینین من یک برنامه رو اجرا می کنم , بعد دوباره اون برنامه که در حال اجرا , با دو تا کلیک رو آیکونش اجرا می کنم الان فرم دومی رو Show می کنم .
رو فرم دومی یه دکمه هستش که Timer فرم اولی را False می کن تا اینجا درست

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

من می خوام به اجرای اولی دسترسی داشته باشم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟
دو تا متغییر از نوع TFormطر احی کن و در اول برنامه بیا و چک کن و فرمی را که باید اول نمایش بدهی در Form1 و فرمی را که باید دوم نمای دهی در Form2 بریز.

موفق باشید

Rocker
یک شنبه 25 شهریور 1386, 15:16 عصر
نه دوستان
ببینین من یک برنامه رو اجرا می کنم , بعد دوباره اون برنامه که در حال اجرا , با دو تا کلیک رو آیکونش اجرا می کنم الان فرم دومی رو Show می کنم .
رو فرم دومی یه دکمه هستش که Timer فرم اولی را False می کن تا اینجا درست

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

من می خوام به اجرای اولی دسترسی داشته باشم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟
این لازمه که برنامه بتونه چندین بار اجرا بشه خوب میتونی کاری کنی که برنامه فقط یه بار اجرا بشه اینجوری درد سر کمتری داره در ضمن استاندارد تر هستش.
فکر کنم از تابع findwindow به همراه یک تایمر بتونی استفاده کنی البته اگه روشهای بهتری سراغ داری همونا رو استفاده کن چون این یکی زیاد بهینه نیست.

Accidentboy
یک شنبه 25 شهریور 1386, 15:43 عصر
[QUOTE=Rocker;395689]این لازمه که برنامه بتونه چندین بار اجرا بشه خوب میتونی کاری کنی که برنامه فقط یه بار اجرا بشه اینجوری درد سر کمتری داره در ضمن استاندارد تر هستش.
فکر کنم از تابع findwindow به همراه یک تایمر بتونی استفاده کنی البته اگه روشهای بهتری سراغ داری همونا رو استفاده کن چون این یکی زیاد بهینه نیست.[/QUOTE

من می خواهم با اجرای دوباره Form1 خودم را مدیریت کنم .

گفتم که می خوام Timer فرم یک را فعال یا غیر فعال کنم

Accidentboy
یک شنبه 25 شهریور 1386, 15:46 عصر
با سلام

دو تا متغییر از نوع TFormطر احی کن و در اول برنامه بیا و چک کن و فرمی را که باید اول نمایش بدهی در Form1 و فرمی را که باید دوم نمای دهی در Form2 بریز.

موفق باشید

SYNDROME عزیز با اجرای دوباره برنامه دوتا Application مختلف داری من این کار کردم ولی جواب نداد

دوباره تستش می کنم شاید یجا اشتباه کردم

Hamid.Kad
یک شنبه 25 شهریور 1386, 18:49 عصر
دوست عزیز. همون جوری که جناب Hamid.Pak فرمودند باید از ارسال پیام استفاده کنید.
(با تابع SendMessage و پیام WM_COPYDATA و ...)
اگه Help دلفی رو ملاحظه کنید بیشتر کمکتون میکنه.

Will_Smith
یک شنبه 25 شهریور 1386, 20:37 عصر
ببین دوست من برای ارتباز بین دو برنامه دو راه کلی هست
یکی ارتباط مستقیم دوبرنامه بصورت مستقیم و دیگری بصورت غیر مستقیم
ارتباط مستقیم رو که استفاده از Message Passing بود رو دوستان گفتن که استفاده از WM_COPYDATA بود
راه دیگه راه حل غیر مستقیم هست به این صورت که هر دو برنامه از یه واسط برای ارتباط با هم استفاده میکنن مثل یه فایل. به این شکل مه برنامه اول هر پیغامی داره در یک فایل ذخیره میکنه و برنامه دوم از اون فایل پیغام ها رو میخونه و یا برعکس

Accidentboy
سه شنبه 27 شهریور 1386, 08:58 صبح
دوست عزیز این دو فرم جز یک برنامه هستند یا هر فرم مربوط به پروشه ای جداگانست؟ منظورخ اینه که مثلا فرم یک و فرم دو مربوط به یک برنامه هستند یا دو برنامه جداگانه؟

دوست عزیز منظورم دو اجرا از یک فایل درنتیجه هر فرم مربوط به پروشه ای جداگاهستند .

Accidentboy
سه شنبه 27 شهریور 1386, 09:03 صبح
باید با ارسال پارامتر برنامه اول را از مقصودت باخبر کنی.
دنبال WM_COPYDATA بگردی پیداش می کنی.

یا حق ...

دوست غزیز Hamid_PaK درست خیلی ممنون
راستی سورس از http://www.geocities.com/m_shahbazfar/MyFiles/SendForApp.zip گرفتم