PostMessage用法請教各位先進! |
答題得分者是:axsoft
|
ss0510
一般會員 ![]() ![]() 發表:6 回覆:11 積分:3 註冊:2002-06-19 發送簡訊給我 |
|
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: HWND Handle1=FindWindow(0,"小算盤"); if(Handle1!=NULL) { PostMessage(Handle1,WM_CHAR,VK_NUMPAD6,0) } 請問各位在以上程式裡傳送數字6到小算盤裡!但....小算盤卻沒動作? 為何會這樣啊? 還是我的方法錯誤! 感謝你的教導!改成這樣試試 |
ss0510
一般會員 ![]() ![]() 發表:6 回覆:11 積分:3 註冊:2002-06-19 發送簡訊給我 |
|
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: HWND Handle1=FindWindow(0,"未命名 - 記事本"); if(Handle1!=NULL) { ShowMessage("1"); //測試是否有進來用! PostMessage(Handle1,WM_KEYDOWN,VK_S,0); } 不好意思!版主!在請問一下! 換成以上時!BCB會說,VK_S未下定義! 我把WM_KEYDOWN 換成WM_CHAR也一樣也! 麻煩你幫幫忙~ |
ss0510
一般會員 ![]() ![]() 發表:6 回覆:11 積分:3 註冊:2002-06-19 發送簡訊給我 |
|
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: 版主大大: 我有照你說的一樣,去WINUSER.H裡面去定義了! 但是還是無法傳數字或是A到Z的文字到記事本裡面去, 請問這是為何呢? 拜託!拜託! 幫幫忙啦! |
Cooky Kid
初階會員 ![]() ![]() 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
引言: 我有照你說的一樣,去WINUSER.H裡面去定義了! 但是還是無法傳數字或是A到Z的文字到記事本裡面去, 請問這是為何呢? PS:真是奇怪!小算盤就可以!記事本不行?複製文魁一本API書的範例, 應該可以給你一點幫助.... //--------------------------------------------------------------------------- //目的:開啟另一程式,並模擬鍵盤輸入多行字串 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { //搜尋<記事本>有無開啟 HWND Npad = ::FindWindow(NULL, "未命名 - 記事本"); //若<記事本>在開啟中,即帶到最前面 if(::ShowWindow(Npad,SW_SHOWNORMAL)) { ::BringWindowToTop(Npad); } else //若沒開啟,則開啟<記事本> { //取得Window目錄位置 char WinDir[MAX_PATH]; ::GetWindowsDirectory(WinDir, MAX_PATH); AnsiString sysdir = AnsiString(WinDir) "\\Notepad.exe"; //開啟<記事本> ::ShellExecute(NULL,"open",sysdir.c_str(),NULL,NULL,SW_SHOWNORMAL); } //完全開啟<記事本>後,才送出特定文字 Sleep(100); int x=0; while(x<10) { for(int i = 'A'; i <= 'Z'; i ) { //從 a 至 z keybd_event((char)i, 0, 0, 0); keybd_event((char)i, 0, KEYEVENTF_KEYUP, 0); //從 ! 至 ) int c = x '0'; keybd_event(VK_SHIFT, 0, 0, 0); keybd_event((char)c, 0, 0, 0); keybd_event((char)c, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); } //每完成A至Z 一次循環,則換新一行 keybd_event(VK_RETURN, 0, 0, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); x ; } } //--------------------------------------------------------------------------- |
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
這是C++ Builder & Windows API一書中的範例,可以買一本當參考書,挺不錯的喔! 以下程式碼歸文魁資訊股份公司所有
//--------------------------------------------------------------------------- //目的:開啟另一程式,並模擬鍵盤輸入多行字串 //--------------------------------------------------------------------------- #include |
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
|
Cooky Kid
初階會員 ![]() ![]() 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
引言: 換成以上時!BCB會說,VK_S未下定義! 我把WM_KEYDOWN 換成WM_CHAR也一樣也!請注意下面程式碼的 W 鍵是如何自行定義的... enjoy it!!!! //--------------------------------------------------------------------------- //目的:設定鍵盤組合鍵,即將滑鼠移至指定位置,並模擬按下滑鼠左鍵執行功能 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //將 VK_W 定義成 W 鍵值------------------------------------------------------ #define VK_W 0x57 //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { //清除Memo1中文字 Memo1->Text = ""; //在Memo1中新增150行文字 char a[26]; for(int x=65;x<91;x ) a[x-65] = char(x); for(int i=1; i<151; i ) Memo1->Lines->Add("第 " AnsiString(i) " 行_ " AnsiString(a)); } //--------------------------------------------------------------------------- void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key) { //當組合鍵相等於Ctrl W 鍵是按下狀態 //則可進行相關功能改變 if(::GetKeyState(VK_CONTROL) && ::GetKeyState(VK_W)) { //將滑鼠移至Memo1的右下角ScrollBar位置 POINT p = { Memo1->Left Memo1->Width-10, Memo1->Top Memo1->Height-10}; p = ClientToScreen(p); ::SetCursorPos(p.x,p.y); //模擬按下滑鼠左鍵一次 ::mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 ); ::mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ); } } //--------------------------------------------------------------------------- |
Cooky Kid
初階會員 ![]() ![]() 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
|
ss0510
一般會員 ![]() ![]() 發表:6 回覆:11 積分:3 註冊:2002-06-19 發送簡訊給我 |
|
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: 呵~~~~~~ axsoft版主大大, 小弟手頭上正好翻著© "C++ Builder & Windows API範例辭典"範例... 順手就C & P 了.....您也是嗎? 再次聲明: 小弟所post程式碼『以上程式碼歸文魁資訊股份公司所有』 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |