با سلام
کد زیر رو مطالعه بفرمایید.
var
H: THandle;
begin
H:= FindWindow(nil, 'My Computer');
H:= FindWindowEx(H,0,'Edit',0);
SendMessage(h, WM_SETTEXT, 0, Integer(Edit1.Text));
end;
چرا متن آدرسبار عوض نمیشه؟
با سلام
کد زیر رو مطالعه بفرمایید.
var
H: THandle;
begin
H:= FindWindow(nil, 'My Computer');
H:= FindWindowEx(H,0,'Edit',0);
SendMessage(h, WM_SETTEXT, 0, Integer(Edit1.Text));
end;
چرا متن آدرسبار عوض نمیشه؟
یعنی واقعا این سوال اینقدر سخته؟
دوستان یه مرحمتی کنند لا اقل این سوالات آماتوری رو زمین نمونه.
من از کد زیر استفاده کردم و به راحتی متن title bar مربوط به My Computer رو عوض کردم.
var
H: THandle;
begin
H := FindWindow(nil, 'My Computer');
SendMessage(H, WM_SETTEXT, 0, Integer(Edit1.Text));
برادر عزیز ممنون.
اینو میدونم.
چرا متن آدرسبار عوض نمیشه؟
من XP ندارم تا تست کنم ولی احتمال زیاد ترتیب گرفتن هندل ها رو رعایت نکردید ، قبل از خط آخر که متن رو به هندل ارسال میکنید یک ShowMessage بزارید ببینید اصلا هندلی پیدا شده .
مگه xp و 7 فرقی میکنه؟
تست کردم . صفر بر میگردونه.
سوالم اینه که چیکار کنم که مشکل رفع بشه؟
آخرین ویرایش به وسیله Mask : شنبه 08 مهر 1391 در 17:25 عصر
H:= FindWindowEx(H,0,'Edit',0);
از کجا میدونید که کنترل مربوطه از کلاس Edit است؟؟؟
ممنون از جوابتون.
اگه edit نیست پس به نظرتون چیه؟
من یه برنامه spy دارم که با اون اسمش و نوع کلاسش و ... رو دیدم.
شما اگر اول کلاس پنجره مربوطه را پیدا کنید بهتر می توانید Caption آنرا هم بگیرید.
این تاپیک مشکل شما را حل میکنه
https://barnamenevis.org/showthread.p...A7%D8%B1%D9%85
آخرین ویرایش به وسیله AliReza Vafakhah : سه شنبه 05 بهمن 1389 در 02:15 صبح
بله ؛ تو 7 خیلی از کلاس ها تغییر نام پیدا کردن .مگه xp و 7 فرقی میکنه؟
تریب به دست آوردن هندل ها باید به ترتیب پنجره ها باشه ، با همون Spy یا ... به ترتیب از بیرونی ترین قسمت فرم شروع کنید و بیاید داخل و ببینید چه اشیائی وجود داره و به ترتیب هندلشون رو بگیرید و به عنوان والد پنجره بعدی استفاده کنید .تست کردم . صفر بر میگردونه.
سوالم اینه که چیکار کنم که مشکل رفع بشه؟
ای کاش یه نمونه میزاشتید.
حتی برای 7.
اگر هم نمونه داشته باشد که در پنجره run بشه متنی رو فرستاد کفایت میکنه.
کد ادرسبار عوض نمیشه چون شما هندل Edit اون رو بدست نیاوردین
var
Adwnd:hwnd;
begin
FindWindow('CabinetWClass',nil);
Adwnd:=FindWindowEx(Adwnd,0,'WorkerW',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ReBarWindow32',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ComboBoxEx32',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ComboBox',nil);
Adwnd:=FindWindowEx(Adwnd,0,'Edit',nil);
SendMessage(Adwnd, WM_SETTEXT, 0, Integer(Edit1.Text));
end;
ممنون از جوابتون.
یکی از دوستان خوبم در سایت شبگرد دیروز جوابم رو دادند.
http://shabgard.org/forums/showthrea...169#post143169