Torna as janelas todas em maiúsculas para aplicação específica

3

Existe um método em que posso definir janelas de forma transparente para caps preferencialmente quando uma aplicação específica é executada. Para pontos de bônus, eu deveria ser capaz de voltar ao normal (modo não capslock) quando o aplicativo for finalizado.

Eu pesquisei e passei por SO / SF, mas nem sei por onde começar a encontrar a resposta.

Obrigado

    
por SteveMustafa 04.02.2014 / 17:28

2 respostas

6

Você pode alternar facilmente o CAPS LOCK usando o PowerShell, apenas importe alguma mágica do teclado virtual de user32.dll :

$importDef = @"
using System.Runtime.InteropServices;

public class CapsControls 
{

enum virtKeys : int 
{
    vkCaps = 0x14 
}

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

[DllImport("user32.dll")] 
static extern short GetKeyState(virtKeys nVirtKey);

public static void ToggleCaps() 
{
    keybd_event(virtKeys.vkCaps, 0x45, 0x1, 0);
    keybd_event(virtKeys.vkCaps, 0x45, 0x3, 0); 
}

public static void EnableCaps() 
{

    if((GetKeyState(virtKeys.vkCaps) % 2) == 0)
    {
        ToggleCaps();
    } 
}

public static void DisableCaps() 
{

    if((GetKeyState(virtKeys.vkCaps) % 2) != 0)
    {
        ToggleCaps();
    } 
}

} 
"@

Add-Type -TypeDefinition $importDef

Agora você pode controlar o caps lock em uma sessão do PowerShell:

[CapsControls]::ToggleCaps() # simulate a CAPS key press
[CapsControls]::EnableCaps() # if disabled, CAPS key press
[CapsControls]::DisableCaps() # if enabled, CAPS key press

Se possível, invoque-o a partir do aplicativo, mas você pode usar uma tarefa agendada para executar o comando toda vez que o aplicativo for iniciado

    
por 05.02.2014 / 01:56
3

Não, você não pode usar ferramentas do sistema. Pode haver algumas ferramentas de terceiros para isso.

Você pode tentar alterar as configurações de Cor e Aparência do Windows para alterar as fontes de exibição do sistema e pode alterá-las para uma fonte que seja apenas maiúscula. Isso não funcionará em todos os aplicativos, no entanto.

Que tal você definir o problema que está resolvendo, em vez de nos pedir ajuda com a solução que está procurando? Por que você marcou isso como "lote" e "powershell"? Esses não parecem estar relacionados a nada em sua pergunta como está escrito.

    
por 04.02.2014 / 17:48