티스토리 뷰

======================================================

안녕하세요 Doridori 입니다.


이래 저래 힘든 시기를 보내고 있지만 세상 살면서 언제는 안힘들었나 싶기도 해서 열심히 생활하고 있습니다. 


뭔가 새로운 것을 해봐야 하나 싶기도 하지만 일단 지금 진행 하고 있는 것들은 마무리를 하는것이 


남자다잉!! 이라는 느낌으로 진행 하고 있습니다. !! 


다들 화이팅이시고 도움이 되는 부분이 있으셨으면 좋겠습니다. 

======================================================


40. User32.dll (2) (Copy&Paste)

 

 

Source UI) (지난 강의 참고 - Evnet 부분은 새로 등록해야 할 수 있습니다.)

Soruce 전체) Study_40_User32.dll 2 (Copy&Paste).zip

교재) 40. User32.dll 2 (Copy&Paste).pdf






지난 번에 Keyboard Hook에 대한 내용을 진행 했는데 아무래도 지난 번에 구현 한부분만 보면 그다지 프로그램 같이 생기지도 않았고 실제로 사용하기에도 불편함이 많습니다. 


그래서 보통 코어 로직 부분을 확인 한뒤에는 살을 붙이는 작업을 진행 하는데 그 부분들을 진행 해 보려고 합니다. 


내가 만드는 프로그램이 그럴듯한 모양이 되는걸 보는 기분은 항상 좋은 것 같습니다. ^^



진행 하다가 조금 더 그럴듯한 모양을 내기 위해서 예전에 32강에서 사용 했던 Title Bar 사용하는 부분을 가져다 쓰려고 했는데 세월이 변하면서 약간 변경 된 부분이 있어서 추가 하였습니다. 

이래서 개발자들은 평생 새로 배워야 한다고 하나 봅니다. ㅜㅠ 으아아아악!!! 


(UI)


화면을 보시면 그래도 지난번에 비해서 모양새가 많이 좋아졌다 싶은 느낌입니다. ^^;;



강의)



Source)

지난번에 사용 했던 KeyboardHook Class는 포함 시키지 않았습니다. (이전강의에서 확인해 주시면 될 것 같습니다.)


Main Form)


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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace CopyAndPaste
{
    public partial class Form1 : Form
    {
        CGlobalKeyboardHook _kbdHook = new CGlobalKeyboardHook();
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
        private void Form1_Load(object sender, System.EventArgs e)
        {
            Version oVersion = Assembly.GetEntryAssembly().GetName().Version;
            this.Text = string.Format("{0} Ver.{1}.{2} / Build Time ({3})""Copy&Paste", oVersion.Major, oVersion.Minor, GetBuildDataTime(oVersion));
 
            _kbdHook.hook();
            _kbdHook.KeyDown += _kbdHook_KeyDown;
 
 
        }
 
        // Build Time을 변환
        public DateTime GetBuildDataTime(Version oVersion)
        {
            string strVerstion = oVersion.ToString();
 
            // 날짜 등록
            int iDays = Convert.ToInt32(strVerstion.Split('.')[2]);
            DateTime refData = new DateTime(200011);
            DateTime dtBuildDate = refData.AddDays(iDays);
 
            // 초 등록
            int iSeconds = Convert.ToInt32(strVerstion.Split('.')[3]);
            iSeconds = iSeconds * 2;
            dtBuildDate = dtBuildDate.AddSeconds(iSeconds);
 
            // 시차 조정
            DaylightTime daylighttime = TimeZone.CurrentTimeZone.GetDaylightChanges(dtBuildDate.Year);
 
            if (TimeZone.IsDaylightSavingTime(dtBuildDate, daylighttime))
            {
                dtBuildDate = dtBuildDate.Add(daylighttime.Delta);
            }
 
 
            return dtBuildDate;
        }
 
 
        // 키보드 후킹 중 Key Down이 발생 했을 때
        private void _kbdHook_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.C && cboxactivation.Checked)
            {
                Thread.Sleep(400);
 
                lboxTextSave.Items.Add(Clipboard.GetData(System.Windows.Forms.DataFormats.UnicodeText).ToString());
            }
        }
 
 
        // ListBox 선택 된 Index가 변경 되었을 때
        private void LboxTestSave_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            if (lboxTextSave.SelectedIndex != -1)
            {
                Clipboard.SetData(System.Windows.Forms.DataFormats.UnicodeText, lboxTextSave.SelectedItem.ToString());
            }
        }
 
 
        // TrackBar의 Scroll이 변경 되었을 때
        private void tBar_Scroll_Change(object sender, EventArgs e)
        {
            this.Opacity = tBar.Value / 10.0;
        }
 
 
        // Button을 Click 했을 때
        private void btnAdd(object sender, EventArgs e)
        {
            DataSave();
        }
 
 
        // TextBox가 선택 된 상태에서 keyDown이 발생 했을 때
        private void tbox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                DataSave();
            }
        }
 
 
        // ListBox에 TextBox의 글자를 등록하기 위한 함수
        private void DataSave()
        {
            string strText = txtlbtextadd.Text;
 
            if (!String.IsNullOrEmpty(strText) && !lboxTextSave.Items.Contains(strText))
            {
                lboxTextSave.Items.Add(strText);
                txtlbtextadd.Text = "";
            }
        }
 
 
        // CheckBox Check Change
        private void cbox_Change(object sender, EventArgs e)
        {
            if (cboxactivation.Checked)
            {
                lblactivation.Text = "활성화 상태(Ctrl + C 가능)";
                lblactivation.Enabled = true;
 
                txtlbtextadd.Enabled = true;
                btnlbtextadd.Enabled = true;
            }
            else
            {
                lblactivation.Text = "비 활성화 상태(붙여넣기만 가능)";
                lblactivation.Enabled = false;
 
                txtlbtextadd.Enabled = false;
                btnlbtextadd.Enabled = false;
            }
        }
 
 
        // ListBox KeyDown Event
        private void lbox_keyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                if (lboxTextSave.SelectedItems.Count > 0)
                    lboxTextSave.Items.RemoveAt(lboxTextSave.SelectedIndex);
            }
        }
    }
}
 
cs



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함