Re: [問題] 請問如何對"背景程式" 下按鍵指令?

看板C_and_CPP作者 (Damnit)時間15年前 (2009/09/01 13:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
最後選擇用C#來撰寫,不過程式一直沒有出現我要的效果 目前測試用的流程為: 取得前景視窗之handle -> 開啟timer -> 定時對指定的視窗送出模擬按鍵按下數字1的動作 以下為程式碼: IntPtr hWnd; private const int WM_KEYDOWN = 0x100; private const int WM_KEYUP = 0x101; //定義按鍵按下/放開 private const int VK_F2 = 0x71; [DllImport("user32.dll")] private static extern short GetAsyncKeyState(int vKey); //取得按鍵之狀態 [DllImport("user32.dll")] private static extern IntPtr GetActiveWindow(); //也試過 IntPtr GetForegroundWindow() //但一樣沒有要的效果 [DllImport("user32.dll", EntryPoint = "SendMessageA")] private static extern int SendMessage( IntPtr hwnd, int wMsg, int wParam, IntPtr lParam); //另外有看過另一種參數是將 IntPtr lParam 寫成 Int lParam //不過使用起來都沒有效果 private void button2_Click(object sender, EventArgs e) { while (GetAsyncKeyState(VK_F2) == 0) ; timer2.Enabled = true; hWnd = GetActiveWindow(); } private void timer2_Tick(object sender, EventArgs e) { SendMessage(hWnd, WM_KEYDOWN, 0x31, new IntPtr()); SendMessage(hWnd, WM_KEYUP, 0x31, new IntPtr()); //另有試過將 new IntPtr() 換成 IntPtr.zero //不過都沒有效果 } 請問我的問題出在哪裡?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.33.178 ※ 編輯: jkdncv 來自: 140.125.33.178 (09/01 13:10)
文章代碼(AID): #1AdAnAAz (C_and_CPP)
文章代碼(AID): #1AdAnAAz (C_and_CPP)