๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ‘จ๐Ÿผ‍๐Ÿ’ป๊ฐœ๋ฐœ/C#

C# - ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ๋ฉ”์‹œ์ง€(string) ์ „๋‹ฌํ•˜๊ธฐ(SendMessage)

by Janger 2022. 8. 24.
728x90
๋ฐ˜์‘ํ˜•
์ˆ˜์‹ 
const int WM_COPYDATA = 0x4A;
 
        public struct COPYDATASTRUCT
        {
            public IntPtr dwData;
            public int cbData;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpData;
        }
 
        protected override void WndProc(ref Message m)
        {
            try
            {
                switch (m.Msg)
                {
                    case WM_COPYDATA:
                        COPYDATASTRUCT cds = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));
                        MessageBox.Show(cds.lpData);
                        break;
                    default: 
                        base.WndProc(ref m); 
                        break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 

์†ก์‹ 
const int WM_COPYDATA = 0x4A;
  
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, ref COPYDATASTRUCT lParam);
 
        public struct COPYDATASTRUCT
        {
            public IntPtr dwData;
            public int cbData;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpData;
        }
 
        private void OnButtonSendClick(object sender, EventArgs e)
        {
            string msg = this.tbMsg.Text.Trim();
 
            if (string.IsNullOrEmpty(msg))
            {
                MessageBox.Show("๋ฉ”์„ธ์ง€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”");
                return;
            }
 
           Process []pro  =  Process.GetProcessesByName("HowToPostMessage");
           if(pro.Length > 0)
            {
                byte[] buff = System.Text.Encoding.Default.GetBytes(msg);
 
                COPYDATASTRUCT cds = new COPYDATASTRUCT();
                cds.dwData = IntPtr.Zero;
                cds.cbData = buff.Length+1;
                cds.lpData = msg;
 
                SendMessage(pro[0].MainWindowHandle, WM_COPYDATA, 0, ref cds);
            }
        }

 

 

 

์ถœ์ฒ˜: 

https://kimkitty.net/archives/2324

 

Kim Kitty's Blog

๊น€ํ‚คํ‹ฐ์˜ ์•„์ˆ˜๋ผ์žฅ - C#,PC๊ฒŒ์ž„,์ด์Šˆ,ํŠธ๋ Œ๋“œ

kimkitty.net

 

https://ehdrn.tistory.com/295

 

C# Process๊ฐ„ ๋ฉ”์„ธ์ง€ ์ „์†ก SendMessage

ํƒ€ ํ”„๋กœ์„ธ์Šค์— ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ, 2๊ฐœ์˜ Winform ํ”„๋กœ๊ทธ๋žจ์—์„œ SendMessage ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํƒ€ ํ”„๋กœ์„ธ์Šค์— ๋ฌธ์ž์—ด ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌ์ŠคํŒ…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. WM_COPYDATA

ehdrn.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•