Copiar (para a área de transferência) da tabela (lista) em um programa no Windows

0

Estou usando um programa (Comsol) que calcula uma fórmula inserida em uma célula em uma tabela e coloca o resultado em outra célula. A primeira célula é editável, e eu posso copiar dela para a área de transferência com Ctrl + C, mas a segunda célula não é editável e Ctrl + C não faz nada. O que significa que eu tenho que reimplantar o cálculo sozinho ou digitar os dígitos da resposta numérica manualmente.

Eu usei o utilitário Window Spy do AutoHotkey (do menu de contexto em um script de execução do AHK na bandeja do sistema) para ver que o controle que implementa a tabela é um controle ListView (chamado SysListView3217 ou SysListView3218 ou semelhante), portanto, é um controle padrão do Windows, exatamente o mesmo usado no Windows Explorer para exibir arquivos e pastas. Isso não é surpreendente porque o GUI do Comsol é obviamente construído com o SWT, que usa controles nativos do Windows.

Isto está a meio caminho. Qual seria uma maneira elegante de usar o AutoHotkey para pegar o texto do SysListView?

    
por Evgeni Sergeev 22.09.2014 / 06:05

1 resposta

1

Coletando exemplos de várias fontes ( especialmente este , e também this ), aqui está um script que eu criei:

#SingleInstance Force
#NoEnv

#c::
MouseGetPos, , , , ListView_hwnd, 2     ;2 means return HWND
ControlGet, selected_row_text, List, Selected, , ahk_id %ListView_hwnd%
Gui, +ToolWindow +AlwaysOnTop -Caption
Gui, Add, Edit, unused_variable x11 y15 w950 h66, %selected_row_text%
Gui, Add, Button, x62 y84 w140 h30 +Center, Close
Gui, Show, ,
return

ButtonClose:
Gui, Destroy
return

Coloque isso em um arquivo AHK para ser executado. Selecione uma linha no controle SysListView e, em seguida, pressione Win + C, e você deverá obter uma janela como esta (familiarizado com o Windows Explorer como exemplo):

O texto pode ser copiado para a área de transferência a partir dessa janela com o Ctrl + C normal.

(A linha MouseGetPos seleciona o SysListView atualmente sob o cursor do mouse e a linha depois disso obtém o texto da linha da tabela selecionada. Todas as outras linhas estão lá para exibir a janela com uma caixa de texto contendo o texto.)

    
por 22.09.2014 / 06:05