PDA

View Full Version : How To Exclusive Open in Shellexecute



combat1964
سه شنبه 14 شهریور 1385, 06:42 صبح
سلام دوستان میخواستم بدونم چطوری میتونم فایل خودم رو که به عنوان پارامتر برنامه در ShellExecute استفاده میکنم Exclusive Open باشه؟؟؟؟
مثلا
ShellExecuet(test_hwnd,pansichar('MSpaint.exe'),pa nsichar('c:\test.bmp'),'',''SW_Shownormal
مثلا این فایل Bmp رو میخام بعداز اجرای دستور Exclusive Open باشه

shobair
سه شنبه 14 شهریور 1385, 11:55 صبح
سلام دوستان میخواستم بدونم چطوری میتونم فایل خودم رو که به عنوان پارامتر برنامه در ShellExecute استفاده میکنم Exclusive Open باشه؟؟؟؟
مثلا
ShellExecuet(test_hwnd,pansichar('MSpaint.exe'),pa nsichar('c:\test.bmp'),'',''SW_Shownormal
مثلا این فایل Bmp رو میخام بعداز اجرای دستور Exclusive Open باشه

سلام
فکر نمیکنم بتونی با ShellExecute اینکار رو بکنی. چون خودش هم از شل ویندوز کمک میگیره دیگه کنترلی روی فایل نداره.
اگر کسی میدونه من رو هم از غفلت در بیاره

شبیر

vcldeveloper
چهارشنبه 15 شهریور 1385, 11:32 صبح
می تونی اول ShellExecute را اجرا کنی تا فایل بوسیله برنامه مربوطه باز بشه، بعد از باز شدن فایل با ShellExecute، با استفاده از CreateFile یا OpenFile فایل رو بصورت Exclusive بازش کن تا process های دیگه نتونند به فایل دسترسی داشته باشند. در آخر هم با CloseHandle فایل رو ببند تا دسترسی بهش آزاد بشه.

shobair
چهارشنبه 15 شهریور 1385, 14:19 عصر
می تونی اول ShellExecute را اجرا کنی تا فایل بوسیله برنامه مربوطه باز بشه، بعد از باز شدن فایل با ShellExecute، با استفاده از CreateFile یا OpenFile فایل رو بصورت Exclusive بازش کن تا process های دیگه نتونند به فایل دسترسی داشته باشند. در آخر هم با CloseHandle فایل رو ببند تا دسترسی بهش آزاد بشه.

سلام
اونوقت برنامه باز شده هم قادر به تغییر یا دسترسی دوباره به فایل نیست. اصولا برنامه ای که نوشتیم دسترسی انحصاری پیدا میکنه، نه نرم افزار باز شده توسط ShellExecute .

شبیر

vesal
چهارشنبه 15 شهریور 1385, 19:04 عصر
یکم غیر عادی. احتمالا مثالی که زدی کاملا مربوط نبود. میشه یه کم دقیق تر توضیح بدی که چکار میخوای بکنی؟

combat1964
چهارشنبه 15 شهریور 1385, 22:05 عصر
میخوام فایلی که با برنامه ای که باز میکنم توسط برنامه دیگری قابل دسترسی نباشه یعنی Lock بشه

vesal
چهارشنبه 15 شهریور 1385, 22:09 عصر
خوب اگه فایل رو تو برنامه خودت باز کنی دستور ShellExecute کجاش استفاده داره؟
آخه وقتی از ShellExecute استفاده می کنی فایلی که صدا می کنی در برنامه تو باز نمی شه.
حالا یکم کامل تر توضیح بده که چه فایلی رو می خوای باز کنی و چه جور استفاده ای می خوای بکنی

combat1964
چهارشنبه 15 شهریور 1385, 23:47 عصر
عزیز فکر کنم اشتباه متوجه شدی یک باره دیگه به نمنو کدی که نوشتم ببین منظور یک برنامه غیر دلفی هستش که میخوام اون فایل واسه پروسس دیگه ای Read نشه

vesal
چهارشنبه 15 شهریور 1385, 23:49 عصر
دلیل اشتباه متوجه شدن من غیر عادی بودن چیزی که میخوای فکر کنم shobair جواب درست رو داده

combat1964
چهارشنبه 15 شهریور 1385, 23:56 عصر
بله درسته Shobair درست جواب داده آخه پروسس اون برنامه تا لودینگ کامل مدت زمانی طول میکشه وقتی بلافاصله بعد از ShellExecute فایل رو باز کنم برنامه که بطور کامل لود میشه قادر به خواندن فایل نیست!!!