'분류 전체보기'에 해당되는 글 159건

  1. 2008.10.28 C# 기초시리즈 Method(메소드)
  2. 2008.10.17 후킹 표
  3. 2008.10.17 C# 후킹
  4. 2008.10.14 슬라이드 ^^
  5. 2008.10.13 Round Rectangle 처리하기
  6. 2008.10.09 Oracle DB C# Parameter 이용
  7. 2008.10.01 컨트롤 다중으로 관리 하기 #1
  8. 2008.10.01 숨겨진 폴더 지울려면.. ^^
  9. 2008.09.29 최범균님 발표작
  10. 2008.09.23 Eclipse 단축키
2008/C#2008. 10. 28. 15:05
영처리 교육 내용
메소드(Method)
Posted by penguindori
카테고리 없음2008. 10. 17. 17:18
WA_ACTIVE 1
WA_CLICKACTIVE 2
WA_INACTIVE 0
WM_ACTIVATE 6
WM_ACTIVATEAPP 28
WM_AFXFIRST 864
WM_AFXLAST 895
WM_APP 32768
WM_ASKCBFORMATNAME 780
WM_CANCELJOURNAL 75
WM_CANCELMODE 31
WM_CAPTURECHANGED 533
WM_CHANGECBCHAIN 781
WM_CHAR 258
WM_CHARTOITEM 47
WM_CHILDACTIVATE 34
WM_CLEAR 771
WM_CLOSE 16
WM_COMMAND 273
WM_COMMNOTIFY 68
WM_COMPACTING 65
WM_COMPAREITEM 57
WM_CONTEXTMENU 123
WM_COPY 769
WM_COPYDATA 74
WM_CREATE 1
WM_CTLCOLORBTN 309
WM_CTLCOLORDLG 310
WM_CTLCOLOREDIT 307
WM_CTLCOLORLISTBOX 308
WM_CTLCOLORMSGBOX 306
WM_CTLCOLORSCROLLBAR 311
WM_CTLCOLORSTATIC 312
WM_CUT 768
WM_DEADCHAR 259
WM_DELETEITEM 45
WM_DESTROY 2
WM_DESTROYCLIPBOARD 775
WM_DEVICECHANGE 537
WM_DEVMODECHANGE 27
WM_DISPLAYCHANGE 126
WM_DRAWCLIPBOARD 776
WM_DRAWITEM 43
WM_DROPFILES 563
WM_ENABLE 10
WM_ENDSESSION 22
WM_ENTERIDLE 289
WM_ENTERMENULOOP 529
WM_ENTERSIZEMOVE 561
WM_ERASEBKGND 20
WM_EXITMENULOOP 530
WM_EXITSIZEMOVE 562
WM_FONTCHANGE 29
WM_GETDLGCODE 135
WM_GETFONT 49
WM_GETHOTKEY 51
WM_GETICON 127
WM_GETMINMAXINFO 36
WM_GETOBJECT 61
WM_GETTEXT 13
WM_GETTEXTLENGTH 14
WM_HANDHELDFIRST 856
WM_HANDHELDLAST 863
WM_HELP 83
WM_HOTKEY 786
WM_HSCROLL 276
WM_HSCROLLCLIPBOARD 782
WM_ICONERASEBKGND 39
WM_IME_CHAR 646
WM_IME_COMPOSITION 271
WM_IME_COMPOSITIONFULL 644
WM_IME_CONTROL 643
WM_IME_ENDCOMPOSITION 270
WM_IME_KEYDOWN 656
WM_IME_KEYLAST 271
WM_IME_KEYUP 657
WM_IME_NOTIFY 642
WM_IME_REQUEST 648
WM_IME_SELECT 645
WM_IME_SETCONTEXT 641
WM_IME_STARTCOMPOSITION 269
WM_INITDIALOG 272
WM_INITMENU 278
WM_INITMENUPOPUP 279
WM_INPUTLANGCHANGE 81
WM_INPUTLANGCHANGEREQUEST 80
WM_KEYDOWN 256
WM_KEYFIRST 256
WM_KEYLAST 264
WM_KEYUP 257
WM_KILLFOCUS 8
WM_LBUTTONDBLCLK 515
WM_LBUTTONDOWN 513
WM_LBUTTONUP 514
WM_MBUTTONDBLCLK 521
WM_MBUTTONDOWN 519
WM_MBUTTONUP 520
WM_MDIACTIVATE 546
WM_MDICASCADE 551
WM_MDICREATE 544
WM_MDIDESTROY 545
WM_MDIGETACTIVE 553
WM_MDIICONARRANGE 552
WM_MDIMAXIMIZE 549
WM_MDINEXT 548
WM_MDIREFRESHMENU 564
WM_MDIRESTORE 547
WM_MDISETMENU 560
WM_MDITILE 550
WM_MEASUREITEM 44
WM_MENUCHAR 288
WM_MENUCOMMAND 294
WM_MENUDRAG 291
WM_MENUGETOBJECT 292
WM_MENURBUTTONUP 290
WM_MENUSELECT 287
WM_MOUSEACTIVATE 33
WM_MOUSEFIRST 512
WM_MOUSEHOVER 673
WM_MOUSELEAVE 675
WM_MOUSEMOVE 512
WM_MOUSEWHEEL 522
WM_MOVE 3
WM_MOVING 534
WM_NCACTIVATE 134
WM_NCCALCSIZE 131
WM_NCCREATE 129
WM_NCDESTROY 130
WM_NCHITTEST 132
WM_NCLBUTTONDBLCLK 163
WM_NCLBUTTONDOWN 161
WM_NCLBUTTONUP 162
WM_NCMBUTTONDBLCLK 169
WM_NCMBUTTONDOWN 167
WM_NCMBUTTONUP 168
WM_NCMOUSEMOVE 160
WM_NCPAINT 133
WM_NCRBUTTONDBLCLK 166
WM_NCRBUTTONDOWN 164
WM_NCRBUTTONUP 165
WM_NEXTDLGCTL 40
WM_NEXTMENU 531
WM_NOTIFY 78
WM_NOTIFYFORMAT 85
WM_NULL 0
WM_PAINT 15
WM_PAINTCLIPBOARD 777
WM_PAINTICON 38
WM_PALETTECHANGED 785
WM_PALETTEISCHANGING 784
WM_PARENTNOTIFY 528
WM_PASTE 770
WM_PENWINFIRST 896
WM_PENWINLAST 911
WM_POWER 72
WM_POWERBROADCAST 536
WM_PRINT 791
WM_PRINTCLIENT 792
WM_QUERYDRAGICON 55
WM_QUERYENDSESSION 17
WM_QUERYNEWPALETTE 783
WM_QUERYOPEN 19
WM_QUEUESYNC 35
WM_QUIT 18
WM_RBUTTONDBLCLK 518
WM_RBUTTONDOWN 516
WM_RBUTTONUP 517
WM_RENDERALLFORMATS 774
WM_RENDERFORMAT 773
WM_SETCURSOR 32
WM_SETFOCUS 7
WM_SETFONT 48
WM_SETHOTKEY 50
WM_SETICON 128
WM_SETREDRAW 11
WM_SETTEXT 12
WM_SETTINGCHANGE 26
WM_SHOWWINDOW 24
WM_SIZE 5
WM_SIZECLIPBOARD 779
WM_SIZING 532
WM_SPOOLERSTATUS 42
WM_STYLECHANGED 125
WM_STYLECHANGING 124
WM_SYNCPAINT 136
WM_SYSCHAR 262
WM_SYSCOLORCHANGE 21
WM_SYSCOMMAND 274
WM_SYSDEADCHAR 263
WM_SYSKEYDOWN 260
WM_SYSKEYUP 261
WM_TCARD 82
WM_TIMECHANGE 30
WM_TIMER 275
WM_UNDO 772
WM_UNINITMENUPOPUP 293
WM_USER 1024
WM_USERCHANGED 84
WM_VKEYTOITEM 46
WM_VSCROLL 277
WM_VSCROLLCLIPBOARD 778
WM_WINDOWPOSCHANGED 71
WM_WINDOWPOSCHANGING 70
WM_WININICHANGE 26

Posted by penguindori
카테고리 없음2008. 10. 17. 17:17
[C#] 메시지 후킹하는 방법
조회 (144)
 
메시지 필터를 이용하여 F1, F2, F3 .. 키 입력을 후킹하기.
 
 
public class MessageFilter : System.Windows.Forms.IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {
        switch(m.Msg)
        {
            case 256 : // WM_KEYDOWN     <==== windows message 를 C# 형태로 쓰고 싶었지만.. 딱히 만들어져있는게 없더군요 그래서
                            //                                    인터넷에서 windows.h 파일을 검색해서 찾았습니다. WM_KETDOWN = 256 번이더군요.
                System.Console.WirteLine(m.LParam.ToInt32());        // 이걸로 F1 부터 여러가지 키를 차례데로 눌러본 값들이
                if( m.LParam.ToInt32() == 3866625 ) // F1 Key            // <===  이 값들입니다. 3866625 가 F1 이군요.. 이런식으로 Key 값을 찾아서
                {                                                                            // 계속 추가하면 키보드 후킹.. 그다지 어려운건 아닐거 같군요 ^^;;
                    System.Console.WriteLine("F1 Press");
                    return true;
                }
                else if( m.LParam.ToInt32() == 3932161 )    // F2 Key
                {
                    System.Console.WriteLine("F2 Press");
                    return true;
                }
                else if( m.LParam.ToInt32() == 3997697 )    // F3 Key
                {
                    System.Console.WriteLine("F3 Press");
                    return true;
                }
                break;
        }
        return false;
    }
}
 
//
//     만들어 놓은 MessageFilter 는 반드시 AddMessageFilter 메서드를 통해 추가해줘야 합니다.
//    static void Main 함수는 기본 Form 에 포함되어 있습니다.  :) 아시죠?
 
static void Main()
{
    Application.AddMessageFilter(new MessageFilter());
    Application.Run(new JapExamples());
}
 
 
아래 있는 것은 windows.h 파일에 정의된 windos message 들입니다. windows.h 파일은 visual studio 안에 INCLUDE_ROOT 에 있습니다.
어딘지는 아시죠?
 
 

Posted by penguindori
2008/C#2008. 10. 14. 16:51

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Threading;

namespace Login
{
    public partial class LoginForm : Form
    {
        private int index = 12;
        private int index2 = 12;

        bool isSleep = false;

        Thread t1;

        System.Windows.Forms.Timer timer1;
        System.Windows.Forms.Timer timer2;


        public LoginForm()
        {
            InitializeComponent();       
           
        }

        private void LoginForm_Load(object sender, EventArgs e)
        {
            axWebBrowser1.Navigate(Application.StartupPath + @"\0_main.swf");

            timer1 = new System.Windows.Forms.Timer();
            timer2 = new System.Windows.Forms.Timer();

            timer1.Tick += new EventHandler(timer1_Tick);
            timer2.Tick += new EventHandler(timer2_Tick);

            timer1.Interval = 10;
            timer2.Interval = 10;

            timer1.Enabled =true;
            timer2.Enabled =true;   
        }

        void timer2_Tick(object sender, EventArgs e)
        {
            index2++;

            if (index2 == 60) index2 = 12;

            button2.Location = new Point(index2, 183);


        }

        void timer1_Tick(object sender, EventArgs e)
        {
            // isSleep(bool)변수가 false일때만 실행

            if (!isSleep)
            {

                index++;

 

                // index가 30이면 isSleep을 true로 바꾸고

                // 쓰레드를 실행합니다.

                if (index == 30)
                {

                    isSleep = true;

                    t1 = new Thread(new ThreadStart(TimerStart));

                    t1.Start();

                }

 

                // index가 60이면 12로(앞으로) 되돌리고 애니메이션~!

                if (index == 60) index = 12;

                button2.Location = new Point(index, 12);

            }


        }

        private void TimerStart()
        {

            // 간단하게 0.5초를 쉬고 isSleep변수값을 바꿉니다.

            Thread.Sleep(500);

            isSleep = false;

      }
      
    }
}

Posted by penguindori
2008/C#2008. 10. 13. 15:10

[C#] Round Rectangle 처리하기

사용자 삽입 이미지

RoundPanel 클래스를 제작했습니다.
Panel을 상속해서 처리 했습니다.

Round 하는 코드는 아래의 코드를 참조 하시면 됩니다.       

        static public GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)
        {
            int diameter = 2 * radius;
            Rectangle arcRect =
                new Rectangle(rect.Location, new Size(diameter, diameter));

            GraphicsPath path = new GraphicsPath();

            path.AddArc(arcRect, 180, 90);

            arcRect.X = rect.Right - diameter;
            path.AddArc(arcRect, 270, 90);

            arcRect.Y = rect.Bottom - diameter;
            path.AddArc(arcRect, 0, 90);

            arcRect.X = rect.Left;
            path.AddArc(arcRect, 90, 90);

            path.CloseFigure();

            return path;
        }

Panel 함수에서 드로잉 하는 코드 입니다.
       

        private void roundPanel_title_Paint(object sender, PaintEventArgs e)
        {
            RoundPanel panel = (RoundPanel)sender;

            Graphics g = e.Graphics;
            g.SmoothingMode = SmoothingMode.HighQuality;

            int width = panel.ClientRectangle.Width;
            int height = panel.ClientRectangle.Height;

            Rectangle rect = new Rectangle(0, 0, width-1, height-1);
            using (GraphicsPath path = RoundPanel.GetRoundedRectPath(rect, 8))
            {
                using (Brush brush = new LinearGradientBrush(
                                            new Rectangle(0, 0, panel.ClientRectangle.Width, panel.ClientRectangle.Height),
                                            Color.FromArgb(panel.Opcity, 102, 102, 102),
                                            Color.FromArgb(panel.Opcity, 0, 0, 0),
                                            90.0f))
                {
                    //graphics.FillRectangle(brush, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
                    g.FillPath(brush, path);
                }

                //g.FillPath(Brushes.Yellow, path);
                Pen pen = new Pen(Color.FromArgb(panel.Opcity, 255, 255, 255));
                g.DrawPath(pen, path);
            }
        }

이걸 처리 하다 보면 화면을 전환 하거나 리프레쉬할때 플리커 현상이 생기기도 합니다.
이걸 해결하기 위해서 RoundPanel에 더블버퍼링 처리 코드를 추가 했습니다.

        public RoundPanel()
        {
            ...
            this.SetStyle(  ControlStyles.UserPaint |
                            ControlStyles.AllPaintingInWmPaint |
                            ControlStyles.DoubleBuffer, true);
        }

출처 : http://iamgsi.com/374
Posted by penguindori
2008/C#2008. 10. 9. 16:18



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;

namespace Login
{
    public partial class Form2 : Form
    {
        OracleConnection oConn;
        OracleCommand oComm;
        OracleParameter[] oPar;

        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            oConn = new OracleConnection("Data Source=mi;User ID=midas;Password=midas123");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder sbSql = new StringBuilder();
            oConn.Open();

            try
            {
                sbSql.Append(" select userid,userpwd,username  ");
                sbSql.Append("  from midas_user ");
                sbSql.Append("  WHERE userid  = :userid ");
                sbSql.Append("  AND userpwd  = :userpwd ");

                oPar = new OracleParameter[2];
                oPar[0] = new OracleParameter(":userid", textBox1.Text);
                oPar[1] = new OracleParameter(":userpwd", textBox2.Text);

                oComm = new OracleCommand(sbSql.ToString(), oConn);

                oComm.Parameters.Add(oPar[0]);
                oComm.Parameters.Add(oPar[1]);

                OracleDataReader dr = oComm.ExecuteReader(CommandBehavior.CloseConnection);
                oComm.Parameters.Clear();

                dr.Read();

                MessageBox.Show(dr["USERNAME"].ToString());
                MessageBox.Show(dr["userid"].ToString());
              

            }
            catch (Exception ex) { string ok = ex.Message.ToString(); }


        }
    }
}

Posted by penguindori
2008/C#2008. 10. 1. 09:44
Posted by penguindori

With an instance of a DirectoryInfo class in hand that references the directory you want to make hidden in, you need only examine/set the Attributes property with the FileAttributes.Hidden flag ala:

            DirectoryInfo di = new DirectoryInfo(@"C:\SomeDirectory");

            //See if directory has hidden flag, if not, make hidden

            if( (di.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)

            {

                //Add Hidden flag

                di.Attributes = di.Attributes | FileAttributes.Hidden;

            }

 

            //See if directory has hidden flag, if not, make visible

            if ((di.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)

            {

                //Remove Hidden flag

                di.Attributes = di.Attributes ^ FileAttributes.Hidden;
            }

Posted by penguindori
카테고리 없음2008. 9. 29. 13:02
<embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=ss-1222561154204913-8&stripped_title=ss-presentation-622211" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed>
Posted by penguindori
Common Tip/Tool2008. 9. 23. 12:05

Ctrl + F6
Microsoft Visual Studio의 Ctrl + Tab과 동일하다.

이클립스에서는 Ctrl + Tab으로 열려진 파일간 이동을 할 수는 없고 대신 이 단축키를 사용하면 된다. Ctrl + F6과 동일하고 방향만 반대인 Ctrl + Shift + F6 단축키도 존재한다.



Ctrl + F7
각종 '보기' 사이를 이동한다. 예를 들어 편집기에서 콘솔창으로 이동하거나 편집기에서

아웃라인으로 이동할 때 사용할 수 있다. 역시 방향만 반대인 Ctrl + Shift + F7 단축키도 존재한다.



Ctrl + F8
다음 'Perspective'로 이동한다. 역시 방향만 반대인 Ctrl + Shift + F8 단축키도 존재하다.



Ctrl + L
특정 줄번호로 이동할 때 사용한다.



Ctrl + Shift + F
자동으로 소스 코드를 정리해 준다.

팀프로젝트시 개인별로 코딩 스타일이 다르다면, 일단 각자 자기 스타일대로 소스를 작성하고

이 단축키를 사용하여 코딩 스타일을 일치시켜주면 좋을 것 같다.



Ctrl + F11
저장, 컴파일 및 실행



===== 실행 =====
1. Ctrl + F11 : 바로 전에 실행했던 클래스 실행


 
===== 소스 네비게이션 =====
1. Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
2. Alt + ->, Alt + <- : 이후, 이전
3. Ctrl + o : 해당 소스의 메소드 리스트를 확인하려 할때
4. F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.



===== 문자열 찾기 =====
1. Ctrl + k : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
2. Ctrl + Shift + k : 역으로 찾고자 하는 문자열을 찾아감.
3. Ctrl + j : 입력하면서 찾을 수 있음.
4. Ctrl + Shift + j : 입력하면서 거꾸로 찾아갈 수 있음.
5. Ctrl + f : 기본적으로 찾기


 
===== 소스 편집 =====
1. Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.
2. F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
3. Ctrl + l : 원하는 소스 라인으로 이동
   로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
4. Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
5. 한줄 삭제 CTRL + D
6. 파일 닫기 : CTRL+W
7. 들여쓰기 자동 수정. (3.0 NEW) : CTRL+I
8. 블록 주석(/*..*/) 추가.(3.0 NEW): CTRL+SHIFT+/
  8.1 Ctrl + / 해주면 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 됨.
9. 위(아래)줄과 바꾸기 : ALT+UP(DOWN)
10. 블록 선택하기.  : ALT+SHIFT+방향키
11. 메소드의 파라메터 목록 보기. : CTRL+SHIFT+SPACE
12. 자동으로 import 하기 : CTRL+SHIFT+O
13. 열린 파일 모두 닫기 : CTRL + SHIFT + F4
14. 블록 주석 제거 : CTRL+SHIFT+\
15. 전체화면 토글 : CTRL+M
16. 한줄(블럭) 복사 : Ctrl + Alt + 위(아래)
17. 다음 annotation(에러, 워닝, 북마크 가능)으로 점프 : Ctrl + , or .
18. 퀵 픽스 : Ctrl + 1 
19. 메소드 정의부로 이동 : F3
20. 하이어라키 팦업 창 띄우기(인터페이스 구현 클래스간 이동시 편리) : Ctrl + T 
21. 메소드나 필드 이동하기 CTRL + O 

Posted by penguindori