كيف يمكنني الحصول على حق الوصول الحصري إلى الحافظة لأغراض الاختبار؟

StackOverflow https://stackoverflow.com/questions/1822996

  •  10-07-2019
  •  | 
  •  

سؤال

لدي تطبيق يستخدم، باختصار، الحافظة لجزء من تشغيله.

بالرغم من ذلك، في بعض الأحيان، ولأسباب لم أتمكن من تحديدها بنسبة 100%، أحيانًا لا تكون الحافظة متاحة.في بعض الأحيان يقوم عميل RDC بحظره، وفي بعض الأحيان لا يقوم بذلك.وهي واحدة من تلك الأمور التي يصعب إعادة إنتاجها عندما تحتاج حقًا إلى نوع من الصفقات.

هل يمكن للمرء أن يكتب برنامج اختبار صغير، أثناء تشغيله، لا يسمح لأي برامج أخرى بالوصول إلى الحافظة؟

هل كانت مفيدة؟

المحلول

أفترض أنه يمكنك الاتصال بـ OpenClipboard وEmptyClipboard، ثم إبقائه مفتوحًا والاتصال بـ CloseClipboard فقط عند خروج تطبيق الاختبار، أو شيء من هذا القبيل...

تحرير من SCHNAPPLE

هذا ما فعلته بشكل أساسي ووجدت كود C# للقيام بذلك ... ذلك الموقع الآخر

[ DllImport( "user32.dll" ) ]
extern static bool OpenClipboard( IntPtr hWnd );

[ DllImport( "user32.dll" ) ]
extern static bool CloseClipboard();

[ DllImport( "user32.dll" ) ]
extern static IntPtr GetClipboardData( uint uFormat );

public static void GetSomeDib()
{
      OpenClipboard( System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle );

      IntPtr img = GetClipboardData(8);

      MessageBox.Show("Clipboard Locked");

      CloseClipboard();

      MessageBox.Show("Clipboard Unlocked");
}

نصائح أخرى

وربما يكون الحل السهل فقط يدويا تكوين RemDesk لعدم مراقبة الحافظة. انه خيار في RemDesk ... ولكن نعم، والحفاظ على الحافظة مفتوحة يجب أن يكون لها الأثر المطلوب، وسوف تبقى كذلك WM_DrawClipboard إخطارات من إرسالها إلى الحافظة المشاهدين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top