Скопировать (в буфер обмена) из таблицы (списка) в программу на Windows

Я использую программу (Comsol), которая вычисляет формулу, введенную в одну ячейку в таблице, и помещает результат в другую ячейку. Первая ячейка редактируется, и я могу скопировать ее в буфер обмена с помощью Ctrl + C, но вторая ячейка не редактируется, а Ctrl + C ничего не делает. Это означает, что я либо должен повторно выполнить вычисление самостоятельно, либо ввести цифры численного ответа вручную.

Я использовал утилиту Window Spy из AutoHotkey (из контекстного меню сценария запуска AHK в системном трее), чтобы увидеть, что элемент управления, реализующий эту таблицу, представляет собой элемент управления ListView (называемый SysListView3217 или SysListView3218 или аналогичный), поэтому это стандартный элемент управления Windows, Точно так же, как в проводнике Windows для отображения файлов и папок. Это неудивительно, поскольку графический интерфейс Comsol, очевидно, построен с помощью SWT, который использует собственные средства управления Windows.

Это на полпути. Каким будет элегантный способ использования AutoHotkey для захвата текста из SysListView?

Сбор примеров из нескольких источников ( особенно этот , а также этот ), вот сценарий, который я придумал:

#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 

Поместите это в файл AHK для запуска. Выберите строку в элементе управления SysListView, затем нажмите Win + C, и вы должны получить окно, подобное этому (знакомый проводник Windows в качестве примера):

Сценарий выстрела

Затем текст можно скопировать в буфер обмена из этого окна с помощью обычного Ctrl + C.

(Линия MouseGetPos выбирает SysListView в настоящее время под курсором мыши, а строка после этого получает текст выбранной строки таблицы. Все остальные строки отображаются там, где отображается окно с текстовым полем, содержащим текст.)

  • Изменить параметры скорости / дуплекса NIC в сценарии?
  • Запуск файла bat при запуске в качестве администратора в Windows 7
  • Использование Wget для рекурсивного сканирования сайта и загрузки изображений
  • Как заменить один символ в именах файлов Windows с помощью командного файла?
  • Как я могу запускать веб-страницу в планировщике задач каждый день?
  • Как я могу запустить скрипт каждый день в Mac OS X?
  • Простейшая настройка в Windows для отправки HTTP-запроса, получения и применения регулярного выражения к ответу и записи соответствия (output) для вывода файла
  • Как копировать ввод-вывод, а не просто перенаправлять (Windows и Linux)
  • Как написать скрипт для подсчета файлов, измененных в течение определенного месяца?
  • SSH: выполнить команду sudo
  • Запуск пакетной команды для каждого файла в каталоге
  • Interesting Posts

    Получите вывод терминала после быстрой команды

    Почему происходит отключение функции не-void без возврата значения, не приводящего к ошибке компилятора?

    Самый быстрый способ проверить, существует ли файл с использованием стандартного C ++ / C ++ 11 / C?

    Windows 7 не может найти драйвер – деактивирует клавиатуру и мышь

    Переключение между задачами панели задач последовательно

    Как добавить закладку Firefox в качестве кнопки панели инструментов?

    Ошибка: не удалось разрешить путь к SDK для ‘macosx10.8’

    Как процитировать «* /» в JavaDocs

    constexpr инициализирует статический член, используя статическую функцию

    Представление должно выводиться из WebViewPage или WebViewPage

    Есть ли альтернатива string.Replace, которая не чувствительна к регистру?

    Отключить полное открывание папки Commander в проводнике

    Если вы вызываете ReleaseStringUTFChars, если GetStringUTFChars вернули копию?

    Как использовать dylib в Mac OS X (C ++)

    самый быстрый алгоритм ближайшего соседа

    Давайте будем гением компьютера.