PDA

View Full Version : سوال: چگونگي به دست آوردن ليست تمامي فايل هايي كه باز هستند ؟



BORHAN TEC
شنبه 30 آبان 1388, 23:04 عصر
منظورم تمامي فايل هايي است كه ممكن است توسط برنامه هاي ديگر باز شده باشد كه اين فايل ميتوان هر نوع فايلي باشد jpg يا txt و يا ... (به همراه مسير فايلها)

در ضمن چگونه مي توان اين فايلها را بست؟

با تشكر فراوان ....:قلب:

tdkhakpur
یک شنبه 01 آذر 1388, 00:38 صبح
منظورم تمامي فايل هايي است كه ممكن است توسط برنامه هاي ديگر باز شده باشد كه اين فايل ميتوان هر نوع فايلي باشد jpg يا txt و يا ... (به همراه مسير فايلها)

در ضمن چگونه مي توان اين فايلها را بست؟

با تشكر فراوان ....:قلب:
خب ساده ترين راه اينه كه فايلها را پيدا كرده و با استفاده از كلاس TFileStream آنها را باز كنيد كه در صورت error فايل توسط ساير برنامه ها باز شده است.
ولي بطور كلي نحوه باز شدن فايلها به نرم افزاري بستگي دارد كه فايل را باز كرده است يعني ممكن هست فايل را بصورت اشتراكي باز نموده باشد كه در اينصورت روش فوق كار ساز نخواهد بود.
ولي در مورد اينكه چگونه ميتوان فايل را بست همانطور كه شما هم ميدانيد براي هر فايل به هنگام باز شدن شماره واحد بنام handle تعلق ميگيرد كه شما در صورت پيدا نمودن اين هندل ميتوانيد آنرا با استفاده از توابع مربوط به فايل ببنديد.

vcldeveloper
یک شنبه 01 آذر 1388, 04:03 صبح
با استفاده از تابع NtQuerySystemInformation می تونید لیست هندل های باز را بدست بیارید. با استفاده از تابع NtQueryObject هم می تونید اسم شی را بر اساس هندل داده شده به دست بیارید. برای اطلاعات بیشتر:

http://www.codeproject.com/KB/shell/OpenedFileFinder.aspx
http://forum.sysinternals.com/forum_posts.asp?TID=14268