Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
1,339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.10 KB | None | 0 0
  1. // https://teratail.com/questions/115871
  2. using System;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Runtime.InteropServices;
  6.  
  7. namespace ConsoleApp1
  8. {
  9.     class Program
  10.     {
  11.         [DllImport("user32.dll")]
  12.         static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
  13.  
  14.         [DllImport("user32.dll")]
  15.         static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
  16.  
  17.         // 送信するメッセージ
  18.         const uint WM_KEYDOWN = 0x100;
  19.         const uint WM_LBUTTONDOWN = 0x0201;
  20.         const uint WM_LBUTTONUP = 0x0202;
  21.         const uint None = 0;
  22.         const uint MK_LBUTTON = 0x0001;
  23.  
  24.         /// <summary>
  25.         /// メモ帳にaと入力する
  26.         /// </summary>
  27.         static void Test1()
  28.         {
  29.             // https://www.papy.in/bbs/vc/200609/06090004.html
  30.             var hwnd = Process.GetProcessesByName("notepad").First().MainWindowHandle;
  31.             hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Edit", null);
  32.  
  33.             // aと入力
  34.             PostMessage(hwnd, WM_KEYDOWN, (IntPtr)0x41, IntPtr.Zero);
  35.         }
  36.  
  37.         /// <summary>
  38.         /// ペイントでクリックする
  39.         /// </summary>
  40.         static void Test2()
  41.         {
  42.             // https://social.msdn.microsoft.com/Forums/ja-JP/90258227-a820-4de3-ae71-4bbf88076dd2/wpfc?forum=wpfja
  43.             var hwnd = Process.GetProcessesByName("mspaint").First().MainWindowHandle;
  44.             hwnd = FindWindowEx(hwnd, IntPtr.Zero, "MSPaintView", null);
  45.             hwnd = FindWindowEx(hwnd, IntPtr.Zero, null, null);
  46.  
  47.             UInt16 x = 300;
  48.             UInt16 y = 300;
  49.             UInt32 pos = ((UInt32)y << 16) | (UInt32)x;
  50.  
  51.             // クリックする
  52.             PostMessage(hwnd, (uint)WM_LBUTTONDOWN, new IntPtr((int)MK_LBUTTON), new IntPtr(pos));
  53.             PostMessage(hwnd, (uint)WM_LBUTTONUP, new IntPtr((int)None), new IntPtr(pos));
  54.         }
  55.  
  56.         static void Main(string[] args)
  57.         {
  58.             Test1();
  59.             Test2();
  60.         }
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement