Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
7 / 7 / 6
Регистрация: 22.04.2011
Сообщений: 73

Буфер обмена и подключение к БД

08.11.2016, 10:40. Показов 789. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Произвожу перехват вот таким методом, но при попытке подключения к БД, снова происходит перехват и он не дает выполнить запрос. Как можно подключиться к БД перехватив буфер обмена? Спасибо.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
 
namespace ClipShow
{
    public partial class frmMain : Form
    { 
        [DllImport("user32.dll")]
        static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
 
        [DllImport("user32.dll")]
        static extern IntPtr GetClipboardViewer();
 
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
 
        IntPtr hWndNextWindow;
 
        public frmMain()
        {
            InitializeComponent();
        }
 
        protected override void WndProc(ref Message m)
        {
            switch(m.Msg)
            {
                case (0x0001): // WM_CREATE
                    hWndNextWindow = SetClipboardViewer(this.Handle);
                    break;
                case (0x0002): // WM_DESTROY
                    ChangeClipboardChain(this.Handle, hWndNextWindow);
                    break;
                case (0x030D): // WM_CHANGECBCHAIN
                    if (m.WParam == hWndNextWindow)
                        hWndNextWindow = m.LParam;
                    else if (hWndNextWindow != IntPtr.Zero)
                        SendMessage(hWndNextWindow, m.Msg, m.WParam, m.LParam);
                    break;
                case (0x0308): // WM_DRAWCLIPBOARD
                    {
                        //здесь открываю подключение к БД (postgres), далее происходит перехват этого события 
                       //и дальше код не исполнятся, соответственно запрос выполнить не получается
 
 
 
                    }
                    SendMessage(hWndNextWindow, m.Msg, m.WParam, m.LParam);
                    break;
            }
 
            base.WndProc(ref m);
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2016, 10:40
Ответы с готовыми решениями:

Запись таблицы в буфер обмена
Всем доброго дня! Суть проблемы такова : - нужно записать данные с таблицы в буфер обмена; - для последующей вставки в Excel; -...

Буфер обмена
Доброго всем! У меня такой вопрос: Как сделать так что бы при нажатии на кнопку очищался буфер обмена

Буфер обмена
собственно стоит такая задача, нужно что при нажатии "ctrl+C" выделенные данные копировались в программу(буфер), и при нажатии на кнопочку...

2
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
08.11.2016, 11:08
Цитата Сообщение от Lucifer91 Посмотреть сообщение
при попытке подключения к БД,
в коде этой попытки не видать...
0
7 / 7 / 6
Регистрация: 22.04.2011
Сообщений: 73
08.11.2016, 12:00  [ТС]
//подключение создается при запуске программы
NpgsqlConnection conn = new NpgsqlConnection(param);
//если производить выборку сразу после объявления команды, то все работает.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
case (0x0308): // WM_DRAWCLIPBOARD
                    {
                        //здесь открываю подключение к БД (postgres), далее происходит перехват этого события 
                       //и дальше код не исполнятся, соответственно запрос выполнить не получается
 
       conn.Open(); //здесь происходит переброска на перехват и код дальше не выполняется (переход происходит на case(0x0001))
 
       NpgsqlCommand(query,conn); //сюда уже не доходит(ошибок никаких не выдает)
        try
       {
                 command.ExecuteReader();
        }
        catch(Exception ex)
       {
             MessageBox.Show(ex.Message);
        }
        conn.Close();
 
                    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2016, 12:00
Помогаю со студенческими работами здесь

Буфер обмена (возможно winapi)
доброго времени суток. задача следующая: в каком либо приложении я выделяю текст. далее, я нажимаю комбинацию клавиш (допустим Ctrl +...

Как программно очистить буфер обмена
using System.Runtime.InteropServices; public static extern int SystemParametersInfo(int uAction, int uParam,...

dataGridView: копирование русских шрифтов в буфер обмена
Доброго времени суток! Проблема заключается в следующем. В dataGridView выплевываются данные из БД. При попытке копирования содержимого...

Необходимо из Excel через буфер обмена скопировать в datatable пять столбцов
Добрый день. Есть dataset, есть datatable с пятью столбцами и datagridview. Необходимо из Excel через буфер обмена скопировать в datatable...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru