سؤال

ولدي برنامج ويندوز يعمل في الخلفية. أنا لها وظائف في هذه التطبيقات المعينة لمفاتيح التشغيل السريع. كما لو أنني وضعت مربع رسالة إلى هذه الوظيفة وإعطاء الساخن مفتاح ك البديل + السيطرة + D . ثم على الضغط على البديل ، السيطرة و D معا مربع الرسالة تأتي. وطلبي تعمل الغرامة حتى هذه النقطة.

والآن أريد أن أكتب رمز داخل هذه الوظيفة بحيث عندما أستخدمه تطبيق آخر مثل المفكرة، وتحديد خط معين من النص ثم اضغط على مفتاح ساخنة البديل + السيطرة + D من المفترض أن نسخ النص المحدد إلحاقها مع "_copied" ولصقه إلى المفكرة.

ولأي شخص الذي حاول تطبيق مماثل الرجاء مساعدتي مع المدخلات القيمة الخاصة بك.

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

المحلول

وسؤالك له إجابتان

كيف بلدي التطبيق تعيين هوتكي العالمي

لديك للدعوة الى funcion API يسمى RegisterHotKey

BOOL RegisterHotKey(
    HWND hWnd,         // window to receive hot-key notification
    int id,            // identifier of hot key
    UINT fsModifiers,  // key-modifier flags
    UINT vk            // virtual-key code
);

ومزيد من المعلومات هنا: http://www.codeproject.com/KB/system/ nishhotkeys01.aspx

كيفية الحصول على النص المحدد من الإطار الأمامي

وأسهل طريقة هي أن ترسل CRL-C إلى الإطار ومن ثم التقاط محتوى الحافظة.

[DllImport("User32.dll")] 
private static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
static public extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);


.....

private void SendCtrlC(IntPtr hWnd)
    {
    uint KEYEVENTF_KEYUP = 2;
    byte VK_CONTROL = 0x11;
    SetForegroundWindow(hWnd);
    keybd_event(VK_CONTROL,0,0,0);
    keybd_event (0x43, 0, 0, 0 ); //Send the C key (43 is "C")
    keybd_event (0x43, 0, KEYEVENTF_KEYUP, 0);
    keybd_event (VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);// 'Left Control Up

}

تنويه: كود ماركوس بيترز من هنا: http://bytes.com/forum/post1029553 -5.html
نشرت هنا لراحتك.

نصائح أخرى

استخدم الطبقة الحافظة لنسخ محتويات ل الحافظة، ثم لصق في المفكرة.

هل يمكن أيضا كتابة المحتويات إلى ملف نصي وفتحه مع المفكرة عن طريق تشغيل التطبيق NOTEPAD.EXE مع مسار الملف النص كمعلمة سطر الأوامر.

واعتقد انه يمكن استخدام SendInput وظيفة لإرسال النص إلى إطار الهدف أو مجرد الأمر لصقه إذا كنت قد وضعت في الحافظة من قبل.

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