Скопируйте и Измените выделенный текст в другом приложении

Еще одна возможность, аналогичная Тиму, но требует только одного CTE:

with numbered as (
   select name, gender, row_number() over (partition by gender order by name) as rn
   from the_table
)
select f.name as "Female", m.name as "Male"
from numbered f 
  full outer join numbered m on m.rn = f.rn and m.gender = 'Male'
where f.gender = 'Female';

При использовании полного внешнего объединения это также работает, если имеется разное количество строк на пол.

Онлайн пример

10
задан jezrael 17 July 2015 в 12:56
поделиться

3 ответа

Ваш вопрос имеет два ответа

Как мое приложение может установить глобальную горячую клавишу

Необходимо назвать API funcion названным RegisterHotKey

BOOL RegisterHotKey(
    HWND hWnd,         // window to receive hot-key notification
    int id,            // identifier of hot key
    UINT fsModifiers,  // key-modifier flags
    UINT vk            // virtual-key code
);

Более подробная информация: http://www.codeproject.com/KB/system/nishhotkeys01.aspx

Как получить выделенный текст от активного окна

Самый легкий путь состоит в том, чтобы отправить crl-C в окно и затем получить содержание буфера обмена.

[DllImport("User32.dll")] 
private static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
static public extern IntPtr GetForegroundWindow();

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


.....

private void SendCtrlC(IntPtr hWnd)
    {
    uint KEYEVENTF_KEYUP = 2;
    byte VK_CONTROL = 0x11;
    SetForegroundWindow(hWnd);
    keybd_event(VK_CONTROL,0,0,0);
    keybd_event (0x43, 0, 0, 0 ); //Send the C key (43 is "C")
    keybd_event (0x43, 0, KEYEVENTF_KEYUP, 0);
    keybd_event (VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);// 'Left Control Up

}

Отказ от ответственности: Код Marcus Peters отсюда: http://bytes.com/forum/post1029553-5.html
Отправленный здесь для Вашего удобства.

13
ответ дан 3 December 2019 в 23:15
поделиться

Используйте класс Буфера обмена для копирования содержания в буфер обмена, затем вставьте в блокноте.

Вы могли также записать содержание в текстовый файл и открыть его с блокнотом путем запуска приложения notepad.exe с путем текстового файла как параметр командной строки.

1
ответ дан 3 December 2019 в 23:15
поделиться

Я думаю, что можно использовать функцию SendInput для отправки текста в целевое окно или просто команду для вставки его при помещении его в буфер обмена прежде.

0
ответ дан 3 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: