2010-08-30 4 views
1

Я пытаюсь использовать этот code sample для управления Windows XP экранной клавиатуры (OSK.exe) из C# (.NET 3.5) Winforms приложения:Поиск имени класса экранной клавиатуры?

[DllImport("User32.dll")]public static extern Int32 SetForegroundWindow(int hWnd); 
[DllImport("user32.dll")]public static extern int FindWindow(string lpClassName, string lpWindowName); 
private void BringToFront(string className,string CaptionName)   
{    
    SetForegroundWindow(FindWindow(className,CaptionName));   
} 

private void Form1_Load(object sender, EventArgs e)   
{    
    BringToFront("Notepad", "Untitled - Notepad");        
} 

Как определить точный Classname? Я предполагаю, что CaptionName - «Экранная клавиатура».

ответ

3

кажется имя_класса является: «OSKMainClass»

Вот код, который я использовал, чтобы найти это. Это всего лишь простой C# Forms приложение

[DllImport("User32.dll")] 
    public static extern Int32 SetForegroundWindow(int hWnd); 
    [DllImport("user32.dll")] 
    public static extern int FindWindow(string lpClassName, string lpWindowName); 
    [DllImport("user32.dll")] 
    public static extern int GetClassName(int hWnd, StringBuilder lpClassName, int nMaxCount); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     int hWnd = FindWindow(null, "On-Screen Keyboard"); 
     StringBuilder buffer = new StringBuilder(128); 
     GetClassName(hWnd, buffer, buffer.Capacity); 
     MessageBox.Show(buffer.ToString()); 
    } 

Получил это из следующих источников Activate Any Window With API и MSDN GetClassName function