Клуб Punto Switcher

Задавать раскладку для конкретного приложения

14 февраля 2011, 17:46
Предоставить возможность пользователю самому устанавливать с какой раскладкой должно запускаться приложение. Например, в cmd.exe установить английский, как начальный, в Word'e русский и т.д.
8 комментариев
Подписаться на комментарии к посту

Вы бы сначала выпрямили определение программы по текущему окну, что ли.

Мой на коленке написанный код



function _GetImagePath(Sender: TObject): AnsiString;
var
  WindowHandle: HWND;
  WindowProcId: DWORD;
  AppText: PChar;
begin
  WindowHandle := GetForegroundWindow();

  AppText := StrAlloc(512);
  GetWindowThreadProcessId(WindowHandle, @WindowProcId);
  WindowHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, WindowProcId);
  GetModuleFileNameEx(WindowHandle, 0, AppText, 512);
  CloseHandle(WindowHandle);
  Result := AppText;
  StrDispose(AppText);

end;


без единого сбоя определил все запущенные приложения по их окнам, начиная от самого себя, Оперы и Проводника, и кончая клиентами WoW и EVE Online.


Надеюсь, в ближайшем будущем Punto наконец прозреет и начнёт нормально включать/выключать автокоррекцию.

угу, порой такое ощущение, что открой код пунты, и сами пользователи напишут лучше. со всем уважением к разрабам..

 

блин а чо, мож правда написать? по крайней мере узкую версию под себя (=

Давайте без флейма и эвфемизмов  :)
Подскажите, пожалуйста, чем Вас не устраивает текущая работа этой опции?

Про "текущую работу" - это шутка такая? Если бы она ВООБЩЕ РАБОТАЛА, я бы горя не знал.


Начать с того, что программа в упор не видит ДВЕ ТРЕТИ запущенных приложений.


Ситуацию не улучшает ввод пути к программе вручную (через "Обзор...") - ибо программа их ВООБЩЕ НЕ ВИДИТ.


Вот так, по-детски. Окно видит, а программу - нет. Хотя она там есть. (Код вверху, документация на PSAPI - MSDN)

А, да... Ещё забыл сказать, что программа совершенно не в курсе, что кроме такого понятия, как заголовок, у окна есть ещё такое немаловажное понятие, как его класс.

Который с перепугу, или от недосыпу не меняется, представляя много более надёжное средство идентификации, чем заголовок. И более гибкое, чем имя файла запущенной программы. (Программа может открывать множество окон, и если в одних без большой разницы, работает ли автопереключение, то в других хотелось бы его отключить, или, наоборот, включить.)


что So?o_O