PDA

View Full Version : مدیریت کپی کردن در ویندوز با ویبی 6



farboodj1375
جمعه 11 شهریور 1390, 23:43 عصر
سلام.
خسته نباشید.
آیا این امکان وجود داره که در ویبی 6 بر کپی های ویندوز مدیریت داشته باشیم؟
مثلا هر فایل در ویندوز کپی شد نام فایل در برنامه ما ثبت شود و یا در زمان اجرای برنامه ما امکان کپی کردن فایل در ویندوز از بین برود؟
و آخرین سوال آیا این امکان وجود دارد که بر Paste کردن در ویندوز مدیریت کنیم؟مثلا وقتی برنامه در حال اجراست,هر فایلی میخواست کپی شود قبل از پیست کردن فایل برنامه پسورد بگیره و اگه پسورد درست بود بعد فایل Paste بشه.

ممنون.

farboodj1375
جمعه 11 شهریور 1390, 23:46 عصر
ببخشید در مورد جلوگیری از کپی این راه به نظرم میرسه که تو یه تایمر با اینتراول 1 کد Clipboard.clear رو بنویسیم.
اما این روش اصلا روش خوبی نیست و مشکلات زبادی رو به دنبال داره.

ممنون.

setroyd
شنبه 12 شهریور 1390, 01:50 صبح
بله شدنی هست ولی کد نویسیش وقت گیره این کارو میشه با استفاده از handle و مدیریت clipboard و ........... انجام داد ولی کد نویسیش حوصله میخواد شما خودت با کمی اطلاعات تو زمینه ی api میتونی این کارو بکنی .

farboodj1375
شنبه 12 شهریور 1390, 11:07 صبح
میشه یه منبع یا یه نمونه معرفی کنین؟
نمونه ای چیزی ندارین؟
ممنون.

محسن واژدی
شنبه 12 شهریور 1390, 22:32 عصر
سلام علیکم
نمونه ای است در برنامه API-Guide که تغییرات ریجستری را مانیتورینگ میکند، میتوانید از آن برای جلوگیری از کپی استفاده کنید
کد زیر را در یک ماژول کپی کرده:

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SetClipboardViewer Lib "user32" (ByVal hwnd As Long) As Long
Public Const WM_DRAWCLIPBOARD = &H308
Public Const GWL_WNDPROC = (-4)
Dim PrevProc As Long
Public Sub HookForm(F As Form)
PrevProc = SetWindowLong(F.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(F As Form)
SetWindowLong F.hwnd, GWL_WNDPROC, PrevProc
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
If uMsg = WM_DRAWCLIPBOARD Then
Clipboard.Clear
MsgBox "Clipboard cleared..."
End If
End Function


و کد زیر را دماژول فرم کپی کنید:

Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Subclass this form
HookForm Me
'Register this form as a Clipboardviewer
SetClipboardViewer Me.hwnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Unhook the form
UnHookForm Me
End Sub


موفق باشید

farboodj1375
یک شنبه 13 شهریور 1390, 09:41 صبح
با سلام و خسته نباشید.
خیلی ممنون.

درسته این کدکار میکنه... ولی این کد بعد از کپی کردن یک فایل عمل میکنه...
نمونه ای ندارین که قبل از پیست کردن اون فایل کلیپبرد رو خالی کنه؟

بازهم تشکررر...

محسن واژدی
یک شنبه 13 شهریور 1390, 09:59 صبح
خب این هم کلیپبرد را خالی میکند، البته خیلی متوجه منظورتون نشدم، یعنی میخواهید در زمان کپی کلیپ برد بدون تغییر باقی بماند و تا زمانی که گزینه Paste فشرده شد کلیپ برد خالی شود؟

farboodj1375
یک شنبه 13 شهریور 1390, 10:07 صبح
بله...درسته...
در واقع من میخوام هنگام فشرده شدن کلید پیست برنامم باز شه و پسورد بگیره و اگه پسورد درست بود عملیات کپی انجام شه و اگه درست نبود کپی انجام نشه و کلیپبرد خالی شه...

setroyd
یک شنبه 13 شهریور 1390, 13:22 عصر
عزیزم میشه خوب شما یه کاری کن بگو clip board اگه data گرفت برنامه با timer داره کار میکنه اینو دریافت میکنه و بلافاصله فرم شما ظاهر میشه و handle فرم copy بسته میشه و از شما میخواد پسورد بزنی و اگر پسورد رو زدی طرف اجازه ی پست کردن داره که شما میتونی path مقصد و path پایان رو بخونی و با خود vb6 بعد از زدن پسورد این کارو بکنی . این فقط در حد یک راهنمایی بود .

farboodj1375
یک شنبه 13 شهریور 1390, 13:45 عصر
ممنون.
میشه بگین چجوری میشه به رویدادهای کلیپبرد دسترسی پیداکرد؟(مثل GetData)
در ضمن من میخواستم بدون استفاده از تایمر اینکارو بکنم...البته اگه راه دیگه ای نیست از همون استفاده میکنم...
ممنون/