PDA

View Full Version : Send Memory Stream As File to Application



combat1964
جمعه 10 شهریور 1385, 14:56 عصر
سلام
سئوالی داشتم ممنون میشو منو راهنمایی کنید
چطور میتونمیک فایل که به صورت Memory Stream هستش رو با برنامه ای که واسه EXtension اون رجیستر شده رو Open کنم؟؟!!:متفکر:

Amir Lajevardi
جمعه 10 شهریور 1385, 21:42 عصر
سلام
من فکر میکنم برای اجراش اول باید اونرو بصورت فایل دخیره کنید.
تا اساتید نظرشون چی باشه.

combat1964
شنبه 11 شهریور 1385, 12:00 عصر
اینرو میدونم عزیز منظورم مثل کاری که در Resource File میکنیم بود....
کسی هست جواب این سئوال رو بده ممنون میشم

oVERfLOW
شنبه 11 شهریور 1385, 12:48 عصر
نمی‌شه

چون خوندن از حافظه با خوندن از فایل فرق داره
و شما وقتی نمی‌دونی برنامه‌ی مقصد چیه چه جوری می‌خوای حالیش کنی که به جای فایل از حافظه بخونه؟
اگه یه برنامه‌ی خاص باشه شاید بشه اون رو کرک کرد تا عمل دلخواه ما رو انجام بده ولی اگه برنامه ناشناس باشه که کاری نمی‌شه کرد.

Inprise
شنبه 11 شهریور 1385, 13:21 عصر
اگر Stream ات حاوی کل فایل هست ، طبیعتا" میتونی بسادگی یه جائی بنویسیش و با ShellExecute اجراش کنی ؛ که برنامهء میزبان رو اجرا و فایل مزبور رو load کنه و ... . از متد WriteToFile استفاده کن ؛ یونیت ShellApi رو Use کن . برای نحوهء نوشتن استریم ها و نحوه استفاده از ShellExecute فروم رو سرچ کن .

combat1964
شنبه 11 شهریور 1385, 14:26 عصر
inprise عزیز میخواستم این کار رو بدون استفاده از WriteToFile یاهر متدی که روی هارد فایل رو بنویسه کنم . پس یک راهنمایی دیگه کنید چطور از ShellExcute رو برای Resource File اجرا کنم فرض بر این که مثلا فایل Test.bmp توی رسورس هام باشه؟؟؟؟

Inprise
شنبه 11 شهریور 1385, 14:46 عصر
Resource های یک برنامه به صورت خاصی اصطلاحا" کامپایل و به فایل باینری لینک میشن ، و نمیتونی مثل یک فایل عادی با محتویات و رکوردهای فایل ریسورست رفتار کنی . میتونی یه فایل موقتی درست کنی و بصورت Exclusive بسازیش که تا زمان در حال اجرا بودن برنامه ات کسی نتونه بازش کنه یا محتویاتش رو دستکاری کنه ، و بعد از اتمام کارت هم حذفش کنی ؛ اگر برنامه میزبان و مورد نظرت چیزی مانند مجموعهء آفیس مایکروسافت هست ، یا هر نرم افزار دیگری که OLE Aware است ، روشهای بهتری برای مبادلهء داده هم وجود داره . مثلا اگر مایل باشی سند Word مخصوص به خودت رو فقط از طریق برنامه ات توسط Word باز کنی ، میتونی بسادگی با استفاده از COM Server های مربوطه اش انجام بدی ، و نیازی به درگیر شدن با فایل و حافظه نیست ...

combat1964
شنبه 11 شهریور 1385, 18:13 عصر
ممنون inprise عزیز استفاده از Exclusive Open راه حله خوبیه ولی گفت ممکنه مثل .NET Visual Studio بشه این کارو کرد ، چون توی .NET وقتی بخوایم از Resource استفاده کنیم آدرس Resource رو میتونیم با نام فایل ارجاع بدیم به برنامه. در ضمن فایل مورداستفاده من از مجموعه آفیس نیستش

combat1964
شنبه 18 شهریور 1385, 22:08 عصر
inprise عزیز فراموش کردم به شما خبر بدم که کامپوننتی پیدا کردم که طبق ادعای خودش هر فایلی رو توی حافظه باز میکنه که شامل دو کامپوننت هست اولی واسه هر نوع فایل و دومی واسه فایلهای Wav حالا این FileStorage در مورد wav فایلها کار میکنه که فکر میکنم بخاطر وجود API SND_STREAM هستش ولی اون یکی کار نمیکنه یعنی فایل رو که به عنوان یک پارامتر به Shellexecute می فرستم باز نمیشه این کامپوننت توی سایت tory هستش. در ضمن این کامپوننت آدرس حاوی فایل تو حافظه رو بر میگردونه.
حالا به نظر شما چرا این کامپوننت کار نمیکنه؟