全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2343
推到 Plurk!
推到 Facebook!

取得別的程式的classname和handle後,如何輸入字串

答題得分者是:taishyang
maplefog
一般會員


發表:16
回覆:24
積分:13
註冊:2008-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-17 23:18:17 IP:140.118.xxx.xxx 訂閱

我目前的需求是想要由程式開啟一個已經加密的pdf檔
也就是打開時需要輸入密碼才行
現在的進度已經到可以取得那個輸入密碼edit的classname了,
但是不知道如何由程式輸入字串到那個edit,請教各位先進,謝謝

以下是我目前的程式碼


[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(Handle,"open","c:\\a.pdf",NULL,NULL,SW_MAXIMIZE);
Sleep(2000);

HWND h = ::FindWindow(NULL,"密碼");
if (h != 0)
EnumChildWindows(h, reinterpret_cast (EnumChildProc), 0);
}
//---------------------------------------------------------------------------

HANDLE hArray[10];
int Count = 0;

bool CALLBACK EnumChildProc(HWND h, LPARAM a)
{
char classname[128];
ZeroMemory(classname,128);
GetClassName(h,classname,128);

if (AnsiString(classname) == "RICHEDIT50W")
hArray[Count ] = h;

return true;
}
//---------------------------------------------------------------------------
[/code]
編輯記錄
maplefog 重新編輯於 2009-04-17 23:21:29, 註解 無‧
maplefog 重新編輯於 2009-04-17 23:21:49, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-19 23:23:47 IP:218.168.xxx.xxx 訂閱
PostMessage or SendMessage可以嗎?
maplefog
一般會員


發表:16
回覆:24
積分:13
註冊:2008-11-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-08-23 23:24:55 IP:140.118.xxx.xxx 訂閱
先取得Handle 再使用PostMessage就可以解決了 


[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(Handle,"open","c:\\a.pdf",NULL,NULL,SW_MAXIMIZE);
Sleep(1000);

HWND LastEditHandle = ::GetForegroundWindow();
AttachThreadInput(GetCurrentThreadId(), GetWindowThreadProcessId
(LastEditHandle, NULL), true);
HWND hFocusWin = GetFocus();
AttachThreadInput(GetCurrentThreadId(), GetWindowThreadProcessId
(LastEditHandle, NULL), false);

int i;
Byte ch;
AnsiString str = "參考看看";

for( i = 1; i <= str.Length(); i )
{
ch = Byte(str[i]);

if( IsDBCSLeadByte(ch) )
PostMessage(hFocusWin, WM_IME_CHAR, MAKEWORD(Byte(str[ i]), ch), 0);
else
PostMessage(hFocusWin, WM_IME_CHAR, WORD(ch), 0);
}
}

[/code]
系統時間:2017-10-17 21:14:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!