PDA

View Full Version : سوال: تغییر متن آدرسبار My Computer



Mask
جمعه 01 بهمن 1389, 23:15 عصر
با سلام
کد زیر رو مطالعه بفرمایید.

var
H: THandle;
begin
H:= FindWindow(nil, 'My Computer');
H:= FindWindowEx(H,0,'Edit',0);
SendMessage(h, WM_SETTEXT, 0, Integer(Edit1.Text));
end;
چرا متن آدرسبار عوض نمیشه؟

Mask
یک شنبه 03 بهمن 1389, 11:46 صبح
یعنی واقعا این سوال اینقدر سخته؟:گیج:
دوستان یه مرحمتی کنند لا اقل این سوالات آماتوری رو زمین نمونه.:خجالت:

BORHAN TEC
یک شنبه 03 بهمن 1389, 18:02 عصر
من از کد زیر استفاده کردم و به راحتی متن title bar مربوط به My Computer رو عوض کردم.

var
H: THandle;
begin
H := FindWindow(nil, 'My Computer');
SendMessage(H, WM_SETTEXT, 0, Integer(Edit1.Text));

Mask
یک شنبه 03 بهمن 1389, 22:23 عصر
برادر عزیز ممنون.
اینو میدونم.
چرا متن آدرسبار عوض نمیشه؟

Felony
دوشنبه 04 بهمن 1389, 06:09 صبح
من XP ندارم تا تست کنم ولی احتمال زیاد ترتیب گرفتن هندل ها رو رعایت نکردید ، قبل از خط آخر که متن رو به هندل ارسال میکنید یک ShowMessage بزارید ببینید اصلا هندلی پیدا شده .

Mask
دوشنبه 04 بهمن 1389, 12:15 عصر
مگه xp و 7 فرقی میکنه؟
تست کردم . صفر بر میگردونه.
سوالم اینه که چیکار کنم که مشکل رفع بشه؟

BORHAN TEC
دوشنبه 04 بهمن 1389, 15:22 عصر
H:= FindWindowEx(H,0,'Edit',0);
از کجا میدونید که کنترل مربوطه از کلاس Edit است؟؟؟ :متفکر:

Mask
دوشنبه 04 بهمن 1389, 18:22 عصر
ممنون از جوابتون.
اگه edit نیست پس به نظرتون چیه؟
من یه برنامه spy دارم که با اون اسمش و نوع کلاسش و ... رو دیدم.

AliReza Vafakhah
دوشنبه 04 بهمن 1389, 23:31 عصر
شما اگر اول کلاس پنجره مربوطه را پیدا کنید بهتر می توانید Caption آنرا هم بگیرید.

این تاپیک مشکل شما را حل میکنه
http://barnamenevis.org/showthread.php?268435-%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%D9%85%DB%8C%D8%AA%D9%88%D9%86%D9%85-%D8%AA%D9%86%D9%87%D8%A7-%D8%A8%D8%A7-%D8%AF%D8%A7%D8%B4%D8%AA%D9%86-%D9%87%D9%86%D8%AF%D9%84-%DB%8C%D9%87-%D9%BE%D9%86%D8%AC%D8%B1%D9%87-caption-%D9%88-classNmae-%D8%A7%D9%88%D9%86%D9%88-%D8%A8%D9%87-%D8%AF%D8%B3%D8%AA-%D8%A8%DB%8C%D8%A7%D8%B1%D9%85

Felony
سه شنبه 05 بهمن 1389, 11:23 صبح
مگه xp و 7 فرقی میکنه؟
بله ؛ تو 7 خیلی از کلاس ها تغییر نام پیدا کردن .


تست کردم . صفر بر میگردونه.
سوالم اینه که چیکار کنم که مشکل رفع بشه؟
تریب به دست آوردن هندل ها باید به ترتیب پنجره ها باشه ، با همون Spy یا ... به ترتیب از بیرونی ترین قسمت فرم شروع کنید و بیاید داخل و ببینید چه اشیائی وجود داره و به ترتیب هندلشون رو بگیرید و به عنوان والد پنجره بعدی استفاده کنید .

Mask
سه شنبه 05 بهمن 1389, 12:36 عصر
ای کاش یه نمونه میزاشتید.
حتی برای 7.
اگر هم نمونه داشته باشد که در پنجره run بشه متنی رو فرستاد کفایت میکنه.

lord_viper
چهارشنبه 06 بهمن 1389, 10:07 صبح
کد ادرسبار عوض نمیشه چون شما هندل 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;

Mask
چهارشنبه 06 بهمن 1389, 12:47 عصر
ممنون از جوابتون.
یکی از دوستان خوبم در سایت شبگرد دیروز جوابم رو دادند.
http://shabgard.org/forums/showthread.php?p=143169#post143169