2014-11-19 3 views
0

Я хочу создать программное обеспечение, такое как виртуальная клавиатура, у вас есть окно AlwaysTop и использовать это, чтобы поместить некоторые данные в другой процесс/окна. В этом случае я буду записывать все данные в буфер обмена и сравнивать, если эти данные совместимы с шаблоном (A### - это patern и A123 совместим с patern), если да, приложение будет помещать его в список, и пользователь может вставить его на другой процесс/окна (уже открыт), щелкнув по элементу списка.Как установить фоновое окно/процесс сверху

Мой вопрос о том, как поместить эту информацию на последнем используемом приложении/процессе, я уже начал прототип кода, но указанная строка неверна, в моем коде это текущий процесс и должен быть последним использованным до щелчка по моей форме.

public partial class Form1 : Form 
{ 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

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

    [DllImport("user32.dll")] 
    internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 

    [DllImport("User32.dll")] 
    static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); 


    private void button2_Click(object sender, EventArgs e) 
    { 
    Process currentProcess = Process.GetCurrentProcess(); //this line is wrong 
    IntPtr hWnd = currentProcess.MainWindowHandle;   //this line is wrong 
    if (hWnd != IntPtr.Zero) 
    { 
     SetForegroundWindow(hWnd); 
     ShowWindow(hWnd, 9); 
    SendKeys.Send("A123"); 
    } 
    } 

} 
} 

ответ

0

лажу простое решение, вместо того, чтобы получить этот процесс я просто отправить сочетание клавиш ALT + TAB и работать во всех случаях, что мне нужно. Ниже решение, если кто-нибудь понадобится в будущем:

string old_clipboard = Clipboard.GetText(); 
Clipboard.SetText("A123"); 
SendKeys.SendWait("%{Tab}"); 
SendKeys.SendWait("^V"); 
Thread.Sleep(100); 
Clipboard.SetText(old_clipboard); 

Ps .: Я положил одну задержку, потому что SendWait работает только на окнах абонентов, в качестве цели^V другой процесс подмигнули don't хорошо работать ,

С уважением. =)