دنیای دلفی
جمعه 12 تیر 1388, 18:08 عصر
سلام
من با استفاده از اين كد به راحتي به پنجره هاي مورد نظرم كلمات عبور را ارسال مي كنم و كليد Enter را فشار مي دهم .
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
NextHandle: Hwnd;
NextTitle: array[0..260] of char;
begin
// Get the first window
NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
while NextHandle > 0 do
begin
// retrieve its text
GetWindowText(NextHandle, NextTitle, 255);
if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
begin
Result := NextHandle;
Exit;
end
else
// Get the next window
NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
end;
Result := 0;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
hnp:HWND;
begin
hnp:= FindWindowByTitle('Application requires password to start');//FindWindow('Form1',nil);
if hnp>0 then
begin
hnp:=FindWindowEx(hnp,0,'Edit',nil);
if hnp>0 then
begin
SendMessage(hnp, WM_CHAR, Ord('s'),0); // Send 'H' letter.
SendMessage(hnp, WM_CHAR, Ord('a'),0); // Send 'i' letter.
SendMessage(hnp, WM_CHAR, Ord('l'),0); // Send '!' letter.
SendMessage(hnp, WM_CHAR, Ord('a'),0); // Send '!' letter.
SendMessage(hnp, WM_CHAR, Ord('m'),0); // Send '!' letter.
PostMessage(hnp, WM_KEYDOWN, VK_RETURN,0); // Send ENTER key.
end;
end;
end;
معمولا وقتي برنامه جزء محصولات مايكرو سافت باشد كلمه Edit را در كد زير بكار مي برم .
hnp:=FindWindowEx(hnp,0,'Edit',nil);
معمولا وقتي برنامه جزء محصولات بورلند باشد كلمه TEdit را در كد زير بكار مي برم .
hnp:=FindWindowEx(hnp,0,'TEdit',nil);
حالا در برنامه اي كه ضميمه كرده هم نه با TEdit نه با Edit نه با Mask نه با TextBox نمي دانم بايد چه عبارتي بگذارم تا Handle اين جعبه متن را بدست بياورم آيا كسي مي تواند كمك كند ممنون مي شوم .
رمز فايل اجرايي salam است و با پروتكتور Enigma رمز گذاري شده است
من با استفاده از اين كد به راحتي به پنجره هاي مورد نظرم كلمات عبور را ارسال مي كنم و كليد Enter را فشار مي دهم .
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
NextHandle: Hwnd;
NextTitle: array[0..260] of char;
begin
// Get the first window
NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
while NextHandle > 0 do
begin
// retrieve its text
GetWindowText(NextHandle, NextTitle, 255);
if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
begin
Result := NextHandle;
Exit;
end
else
// Get the next window
NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
end;
Result := 0;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
hnp:HWND;
begin
hnp:= FindWindowByTitle('Application requires password to start');//FindWindow('Form1',nil);
if hnp>0 then
begin
hnp:=FindWindowEx(hnp,0,'Edit',nil);
if hnp>0 then
begin
SendMessage(hnp, WM_CHAR, Ord('s'),0); // Send 'H' letter.
SendMessage(hnp, WM_CHAR, Ord('a'),0); // Send 'i' letter.
SendMessage(hnp, WM_CHAR, Ord('l'),0); // Send '!' letter.
SendMessage(hnp, WM_CHAR, Ord('a'),0); // Send '!' letter.
SendMessage(hnp, WM_CHAR, Ord('m'),0); // Send '!' letter.
PostMessage(hnp, WM_KEYDOWN, VK_RETURN,0); // Send ENTER key.
end;
end;
end;
معمولا وقتي برنامه جزء محصولات مايكرو سافت باشد كلمه Edit را در كد زير بكار مي برم .
hnp:=FindWindowEx(hnp,0,'Edit',nil);
معمولا وقتي برنامه جزء محصولات بورلند باشد كلمه TEdit را در كد زير بكار مي برم .
hnp:=FindWindowEx(hnp,0,'TEdit',nil);
حالا در برنامه اي كه ضميمه كرده هم نه با TEdit نه با Edit نه با Mask نه با TextBox نمي دانم بايد چه عبارتي بگذارم تا Handle اين جعبه متن را بدست بياورم آيا كسي مي تواند كمك كند ممنون مي شوم .
رمز فايل اجرايي salam است و با پروتكتور Enigma رمز گذاري شده است