程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#模擬鍵盤操作,向另一個窗體輸入值

C#模擬鍵盤操作,向另一個窗體輸入值

編輯:C#入門知識

我公司使用U8,由於各種原因BOM未使用起來,導致采購部不得不手工錄入采購單,這些采購單本身有Excel電子格式,如何將這些Excel自動導入到U8呢?考慮到開發接口不可能,那麼就另辟蹊徑,能不能模擬手工錄入呢?

很幸運,這種思路可行。

1、首先向另一個程序寫入值

a.確保當前程序窗體不能獲得焦點


[css] 
private const int WS_EX_TOOLWINDOW = 0x00000080; 
private const int WS_EX_NOACTIVATE = 0x08000000; 
 
protected override CreateParams CreateParams 

    get 
    { 
        CreateParams cp = base.CreateParams; 
        cp.ExStyle |= (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW); 
        cp.Parent = IntPtr.Zero; // Keep this line only if you used UserControl 
        return cp; 
    } 

b.獲得活動單元格所在窗體句柄

[csharp] 
[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
public static extern bool GetGUIThreadInfo(uint idThread, ref GUITHREADINFO lpgui); 
[DllImport("user32.dll")] 
public static extern IntPtr GetForegroundWindow(); 
[DllImport("user32.dll", SetLastError = true)] 
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); 
 
                IntPtr hWnd = GetForegroundWindow(); 
                uint processId; 
                uint threadid = GetWindowThreadProcessId(hWnd, out processId); 
                GUITHREADINFO lpgui = new GUITHREADINFO(); 
                lpgui.cbSize = Marshal.SizeOf(lpgui); 

c.模擬鍵盤輸入值

[csharp] view plaincopy
[DllImport("user32.dll")] 
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo); 
 
                keybd_event(keycode["LEFT"], 0, 0, 0); 

2、循環讀取Excel,寫入值
本例中,我將鍵值寫入private Dictionary<string, byte> keycode;這樣就可以方便轉換。


[csharp] 
keycode = new Dictionary<string, byte>(); 
keycode.Add("A", 65); 
keycode.Add("B", 66); 
keycode.Add("C", 67); 
keycode.Add("D", 68); 
keycode.Add("E", 69); 
keycode.Add("F", 70); 
keycode.Add("G", 71); 
keycode.Add("H", 72); 
keycode.Add("I", 73); 
keycode.Add("J", 74); 
keycode.Add("K", 75); 
keycode.Add("L", 76); 
keycode.Add("M", 77); 
keycode.Add("N", 78); 
keycode.Add("O", 79); 
keycode.Add("P", 80); 
keycode.Add("Q", 81); 
keycode.Add("R", 82); 
keycode.Add("S", 83); 
keycode.Add("T", 84); 
keycode.Add("U", 85); 
keycode.Add("V", 86); 
keycode.Add("W", 87); 
keycode.Add("X", 88); 
keycode.Add("Y", 89); 
keycode.Add("Z", 90); 
keycode.Add("0", 48); 
keycode.Add("1", 49); 
keycode.Add("2", 50); 
keycode.Add("3", 51); 
keycode.Add("4", 52); 
keycode.Add("5", 53); 
keycode.Add("6", 54); 
keycode.Add("7", 55); 
keycode.Add("8", 56); 
keycode.Add("9", 57); 
keycode.Add(".", 0x6E); 
keycode.Add("LEFT", 0x25); 
keycode.Add("UP", 0x26); 
keycode.Add("RIGHT", 0x27); 
keycode.Add("DOWN", 0x28); 
keycode.Add("-", 0x6D); 

效果圖


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved