عندما يتم التحكم في المؤشر بواسطة مؤشر ترابط آخر، لا يمكنك استخدام واجهة التطبيق GetCursor() للحصول على مقبض المؤشر. يشرح هذا المقال كيفية الحصول على مقبض المؤشر عندما يكون لدى أي مؤشر ترابط التحكم في المؤشر.
================================================================================================== =======
{
عندما يتم التحكم في المؤشر بواسطة مؤشر ترابط آخر، لا يمكنك استخدام واجهة التطبيق GetCursor() للحصول على مقبض المؤشر.
يشرح هذا المقال كيفية الحصول على مقبض المؤشر عندما يكون لدى أي مؤشر ترابط التحكم في المؤشر.
على سبيل المثال، ما يجب فعله عندما تريد وضع المؤشر في برنامج التقاط الشاشة.
}
وظيفة GetCursorHandle: HCURSOR؛
فار
نافذة: HWND؛
نقطة: نقطة؛
pIconInfo: TIconInfo;
dwThreadID، dwCurrentThreadID: DWord؛
يبدأ
// تحقق من النموذج الذي يحتوي على المؤشر
GetCursorPos(pt);
hWindow := WindowFromPoint(pt);
// احصل على معرف مؤشر الترابط لمالك المؤشر
dwThreadID := GetWindowThreadPRocessId(hWindow, nil);
// احصل على معرف الموضوع الحالي
dwCurrentThreadID := GetCurrentThreadId;
// إذا لم يكن مؤشر ترابط مالك المؤشر هو الخيط الحالي، فيجب تعيين مؤشر ترابط مالك المؤشر إلى مؤشر الترابط الحالي.
// ثم اتصل بـ GetCursor () للحصول على مقبض المؤشر الصحيح (hCursor).
إذا (dwCurrentThreadID <> dwThreadID) ثم
يبدأ
إذا كان AttachThreadInput (dwCurrentThreadID، dwThreadID، True) ثم
يبدأ
// احصل على مقبض المؤشر
النتيجة := GetCursor;
AttachThreadInput(dwCurrentThreadID, dwThreadID, False);
نهاية؛
نهاية آخر
يبدأ
النتيجة := GetCursor;
نهاية؛
نهاية؛
الإجراء TForm1.Button1Click(Sender: TObject);
فار
CurPosX، CurPoxY: عدد صحيح؛
MyCursor: TIcon؛
pIconInfo: TIconInfo;
يبدأ
MyCursor := TIcon.Create;
يحاول
MyCursor.Handle := GetCursorHandle;
// احصل على موضع المؤشر
GetIconInfo(MyCursor.Handle, pIconInfo);
CurPosX := pIconInfo.xHotspot;
CurPoxY := pIconInfo.yHotspot;
// ارسم المؤشر على النموذج
Canvas.Draw(CurPoxY, CurPoxY, MyCursor);
أخيراً
عندما يتم التحكم في المؤشر بواسطة مؤشر ترابط آخر، لا يمكنك استخدام واجهة التطبيق GetCursor() للحصول على مقبض المؤشر. يشرح هذا المقال كيفية الحصول على مقبض المؤشر عندما يكون لدى أي مؤشر ترابط التحكم في المؤشر.
================================================================================================== =======
{
عندما يتم التحكم في المؤشر بواسطة مؤشر ترابط آخر، لا يمكنك استخدام واجهة التطبيق GetCursor() للحصول على مقبض المؤشر.
يشرح هذا المقال كيفية الحصول على مقبض المؤشر عندما يكون لدى أي مؤشر ترابط التحكم في المؤشر.
على سبيل المثال، ما يجب فعله عندما تريد وضع المؤشر في برنامج التقاط الشاشة.
}
وظيفة GetCursorHandle: HCURSOR؛
فار
نافذة: HWND؛
نقطة: نقطة؛
pIconInfo: TIconInfo;
dwThreadID، dwCurrentThreadID: DWORD؛
يبدأ
// تحقق من النموذج الذي يحتوي على المؤشر
GetCursorPos(pt);
hWindow := WindowFromPoint(pt);
// احصل على معرف مؤشر الترابط لمالك المؤشر
dwThreadID := GetWindowThreadProcessId(hWindow, nil);
// احصل على معرف الموضوع الحالي
dwCurrentThreadID := GetCurrentThreadId;
// إذا لم يكن مؤشر ترابط مالك المؤشر هو الخيط الحالي، فيجب تعيين مؤشر ترابط مالك المؤشر إلى مؤشر الترابط الحالي.
// ثم اتصل بـ GetCursor () للحصول على مقبض المؤشر الصحيح (hCursor).
إذا (dwCurrentThreadID <> dwThreadID) ثم
يبدأ
إذا كان AttachThreadInput (dwCurrentThreadID، dwThreadID، True) ثم
يبدأ
// احصل على مقبض المؤشر
النتيجة := GetCursor;
AttachThreadInput(dwCurrentThreadID, dwThreadID, False);
نهاية؛
نهاية آخر
يبدأ
النتيجة := GetCursor;
نهاية؛
نهاية؛
الإجراء TForm1.Button1Click(Sender: TObject);
فار
CurPosX، CurPoxY: عدد صحيح؛
MyCursor: TIcon؛
pIconInfo: TIconInfo;
يبدأ
MyCursor := TIcon.Create;
يحاول
MyCursor.Handle := GetCursorHandle;
// احصل على موضع المؤشر
GetIconInfo(MyCursor.Handle, pIconInfo);
CurPosX := pIconInfo.xHotspot;
CurPoxY := pIconInfo.yHotspot;
// ارسم المؤشر على النموذج
Canvas.Draw(CurPoxY, CurPoxY, MyCursor);
أخيراً
MyCursor.ReleaseHandle;
MyCursor.Free;
نهاية؛
نهاية؛
// حل آخر:
الإجراء TForm1.Timer1Timer(Sender: TObject);
فار
CI:TCursorInfo;
يبدأ
CI.cbSize := SizeOf(CI);
GetCursorInfo(CI);
Image1.Picture.Icon.Handle := CI.hCursor;
نهاية؛
MyCursor.ReleaseHandle;
MyCursor.Free;
نهاية؛
نهاية؛
// حل آخر:
الإجراء TForm1.Timer1Timer(Sender: TObject);
فار
CI:TCursorInfo;
يبدأ
CI.cbSize := SizeOf(CI);
GetCursorInfo(CI);
Image1.Picture.Icon.Handle := CI.hCursor;
نهاية؛