Код: Выделить всё
Process [] ps = Process.GeyProcessByName("taskmgr");
Process p = Process.GetProcessById(ps[0].Id);
Console.WriteLine(GetKeyboardLayout(pid)>>16);
Раскладку в своем окне GetKeyboardLayout(0) определяет исправно .
Модераторы: Duncon, Hawk, Romeo, Eugie
Код: Выделить всё
Process [] ps = Process.GeyProcessByName("taskmgr");
Process p = Process.GetProcessById(ps[0].Id);
Console.WriteLine(GetKeyboardLayout(pid)>>16);
Код: Выделить всё
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace Sample
{
class Program
{
[DllImport("user32.dll")]
public static extern IntPtr GetKeyboardLayout(uint idThread);
static void Main(string[] args)
{
Console.Write("Имя процесса: ");
string pname = Console.ReadLine();
Process[] ps = Process.GetProcessesByName(pname);
foreach (Process p in ps)
{
Console.WriteLine("Process instance Id: {0}", p.Id);
foreach (ProcessThread pt in p.Threads)
{
uint tid = (uint)pt.Id;
Console.WriteLine(" ThreadId: {0} KeyboardLayoutId: {1}", tid, GetKeyboardLayout(tid).ToInt32() >> 16);
}
}
}
}
}