SendMessage問題-幫安裝程式自動輸入值 |
尚未結案
|
ckrl933
一般會員 發表:16 回覆:15 積分:6 註冊:2005-01-31 發送簡訊給我 |
我想由我的程式呼叫起MySQL的安裝程式,
WinExec("../mysql/bin/winmysqladmin.exe",SW_HIDE);
但執行完後, 都會跑出一個輸入User name : Password :畫面,
然後才會產生 WINDIR\my.ini
可以由我的程式幫它自動輸入我要的user name及password嗎??
用以下方式可以找到那個視窗的HWND,
HWAND hwnd_admin = FindWindow(0,"WinMySQLadmin Quick Setup")
但想在兩個Edit中, 輸入值都失敗了,
我用SendMessage WM_CHAR WM_KEYDOWN WM_SETTEXT 方式都不行
甚至WM_SETTEXT把這個視窗的Caption改成我的字串,
因為不曉得這兩個Edit的Handle, 但它執行時已經將第一個Edit SetFocus
想說靠著WM_SETTEXT或WM_CHAR來輸入值 WM_KEYDOWN來輸入TAB Enter
不曉得我觀念哪裡錯了,
例:
SendMessage(hwnd_admin, WM_CHAR, 0x63, 0);
SendMessage(hwnd_admin, WM_KEYDOWN, VK_TAB, 0);
SendMessage(hwnd_admin, WM_SETTEXT, 0, (lPARM)&CharArrary)
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
在NT4,2000,XP中
我寫了一個這樣的函數
void SendKeys(char *str)
{
LPINPUT myInput;
int i;
AnsiString AStemp(str);
wchar_t unicodeWord[512];
StringToWideChar( AStemp , unicodeWord , 512 );
myInput= new INPUT ; for( i=0 ; unicodeWord[i]!=0 ; i ){
myInput->type =INPUT_KEYBOARD;
myInput->ki.wVk =0;
myInput->ki.wScan =unicodeWord[i];
myInput->ki.dwFlags = KEYEVENTF_UNICODE;
myInput->ki.time = 1000;
myInput->ki.dwExtraInfo = GetMessageExtraInfo();
SendInput( 1, myInput , sizeof(INPUT) );
myInput->ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
SendInput( 1, myInput , sizeof(INPUT) );
} delete myInput;
} 我寫好了
這就是模擬sendkeys
應該不會有亂碼出現的情況(支援中文英文)
用法
SendKeys("今天天氣很好!!nice!") ; 會傳到前景視窗中 應該可以成功傳出字串到其他應用程式,希望對您有幫助
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。 就在快要消失的瞬間,希望能再飛高一點, 但是回神時總是慢了一步。 |
ckrl933
一般會員 發表:16 回覆:15 積分:6 註冊:2005-01-31 發送簡訊給我 |
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |