PDA

View Full Version : سوال: تشخیص پایان کار برنامه ها



good_boy
پنج شنبه 01 اسفند 1387, 20:28 عصر
سلام دوستان
سوال من اینه که فرض کنید دارید یه فایل حجیمی رو از یه جایی به یه جای دیگه کپی می کنید آیا راهی داره بشه فهمید کپی به اتمام رسیده یا نه؟
یه مثال دیگه فرض کنید دارید با Clone cd یه کاری انجام میدید آیا راهی هست که بشه یه برنامه نوشت که هر وقت کارش تموم شد سیستم مثلا خاموش کنه یا هر چیز دیگه
چیزی که مهمه اینه که میشه پایان کار برنامه ها رو تشخیص داد

xxxxx_xxxxx
پنج شنبه 01 اسفند 1387, 21:11 عصر
براي سوال اول بستگي داره به نحوه كپي كردن فايل.
اگر از دستورات كپي خود VB يا API استفاده كنيد، نه نميشه. براي اين كار بايد بايت به بايت فايل رو خودتون كپي كنيد تا بفميد كه كي تمام فايل به مقصد كپي شده.
سوال دوم:
اگر خود برنامه هم با به اتمام رسيدن كارش پايان پيدا كنه ميشه از ليست پروسس هاي درحال اجرا اين رو فهميد. پس اگر نام برنامه مورد نظر تو ليست نبود سيستم shutdown يا هر كار ديگه اي بشه.

good_boy
جمعه 02 اسفند 1387, 08:36 صبح
سلام دوست مهربان
در مورد جواب اول چطور میشه بایت به بایت کپی کرد سورسی هست در این باره
ببخشید که منظور درست بیان نکردم وقتی کاربری در ویندوز یه فایلی رو کپی میکنه هیچ پروسه ای باز نمیشه
چون Explorer.exe هست که داره این کارو میکنه زمانی هم که پایان پیدا می کنه ٌwindows explorer بسته نمیشه که بشه تشخیص داد کار کپی پایان یفته

xxxxx_xxxxx
جمعه 02 اسفند 1387, 12:50 عصر
من فكر كردم شما تو برنامه اي كه مي نويسيد مي خوايد از زمان پايان كپي شدن فايل مطلع بشيد.
خب درست مي فرماييد. براي كردن تو ويندوز پروسه اي كه ليست باشه وجود نداره.
تنها چيزي كه به ذهنم مي رسه اينه كه شما بيايد از طريق عنوان پنجره ها اونها رو چك كنيد، مثلاً تو يك تايمر هر يك ثانيه چك كنيد ببينيد آيا پنجره اي وجود داره كه عنوانش ...Copying باشه يا نه. اگر بود كه هنوز عمل كپي تموم نشده اگر هم نيست كه يعني كپي كردن تموم شده.
به نمونه زير دقت كنيد:


Private Declare Function FindWindowA Lib "user32.dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Command1_Click()
a = FindWindowA(vbNullString, "Copying...")
If a <> 0 Then MsgBox "There is ..."
End Sub

در مورد پنجره هاي ديگه هم به همين صورت.
مثلاً نصب يك برنامه يا رايت كردن سي دي، يك زماني عنوان پنجره يا تغيير مي كنه يا پنجره موردنظر بسته ميشه.

موفق باشيد/