PDA

View Full Version : پیرامون تابع sendmessage



aisuda
چهارشنبه 01 شهریور 1391, 13:51 عصر
سلام
من می خوام از طریق برنامم با IE ارتباط برقرار کنم و 2 تا کار رو می خوام انجام بدم:
اول اینکه می خوام بین تب ها حرکت کنم. کدش رو نوشتم ولی کار نمی کنه (البته چون کلید ctrl+tab رو می خوام بفرستم مشکل دارم و کلیدهای ساده رو می تونم بفرستم) اینم کد من:
hnp := FindWindow('IEFrame', nil);
if hnp > 0 then
begin
chldwndw := FindWindowEx(hnp, 0, 'frame tab', nil);
chldwndw := FindWindowEx(chldwndw, 0, 'tabwindowclass', nil);
chldwndw := FindWindowEx(chldwndw, 0, 'shell docobject view', nil);
chldwndw := FindWindowEx(chldwndw, 0, 'internet explorer_server', nil);

SendMessage(chldwndw,WM_KEYDOWN ,VK_CONTROL , 0);
SendMessage(chldwndw,WM_KEYDOWN ,VK_TAB , 0);
end;
مشکل من تو دو خط آخره، چطوری یک کلید ترکیبی رو با sendmessage بفرستم؟
دوم اینکه می خوام دو تا تکست باکس که نام کاربری و رمز عبور است رو در یک صفحه وب (صفحه وب جاری) پر کنم و بعد submit. اینم براش کد نوشتم اما نمی دونم هندل تکست رو چطوری به دست بیارم؟
ممنون می شم اگه یه کدی یا راهنمایی چیزی بکنین. مخصوصا از مدیران تالار خواهش می کنم که جواب بدن.
(ضمناً کلی هم در تالار سرچ کردم، چیز به درد من بخوره در این مورد پیدا نکردم)

بهروز عباسی
چهارشنبه 01 شهریور 1391, 23:42 عصر
درود

دوم اینکه می خوام دو تا تکست باکس که نام کاربری و رمز عبور است رو در یک صفحه وب (صفحه وب جاری) پر کنم و بعد submit. اینم براش کد نوشتم اما نمی دونم هندل تکست رو چطوری به دست بیارم؟
شما باید از HTTP استفاده کنی .
HTTP رو جستجو کن در این مورد قبلاً چیزای دیدم.

موفق باشید.

aisuda
پنج شنبه 02 شهریور 1391, 07:42 صبح
درود
شما باید از HTTP استفاده کنی .
HTTP رو جستجو کن در این مورد قبلاً چیزای دیدم.
موفق باشید.
از HTTP استفاده کنم؟ من برنامه تحت ویندوز دارم، یه وب اپلیکیشن دیگه هم داریم که خرابی های شبکه رو گزارش می کنه. منتها باید به صفحه وب login کرد. من می خوام این login از طریق برنامه باشه، یعنی username، pass از داخل برنامه وارد بشه، نمی خوام خودم صفحه رو load کنم (یعنی نمی خوام از webbrowser استفاده کنم، چون نمی خوام درگیر این موارد الکی شم) و بعد بین تب ها حرکت کنه. برای اینکار باید handle اشیا رو به دست آورد و بقیه مسائل. حالا من این استفاده از http رو نفهمیدم یعنی چی و کاربردش اینجا چیه

عقاب سیاه
پنج شنبه 02 شهریور 1391, 07:49 صبح
فکر کنم منظور اقای عباسی این بود که می تونید داخل برنامه هم همین کارا انجام بدید یعنی ارسال پارامتر های login با post یا همچین چیزایی از طریق مثلا کامپونتت TIdHTTP

aisuda
پنج شنبه 02 شهریور 1391, 09:09 صبح
چطور میشه با http از داخل برنامه روال submit رو صدا کنم؟ در موقع submit کردن خیلی کنترل ها و چک ها انجام میشه و در نهایت post میشه و من نمی تونم مستقیم post کنم. کلاً با تجربه ای که دارم فکر می کنم این کار با Sendmessage بشه ولی مهم پیدا کردن هندل اون تکست باکس ها و دکمه سابمیت است. من موردم همینه/

عقاب سیاه
پنج شنبه 02 شهریور 1391, 09:15 صبح
خوب بلاخره اون اطلاعات پست میشه! اون کنترل ها و چک ها هم برای خود اون فرم هست که در نهایت به پست منجر میشه
حالا شما ببین به کجا پست میشه در اخر و بجاش خودتون پستشون کنید!

بهروز عباسی
پنج شنبه 02 شهریور 1391, 10:35 صبح
درود
لینک های زیرو نگاه کن
پر کردن یک ادیت در سایت (http://barnamenevis.org/showthread.php?155679-%D9%BE%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%DB%8C%DA%A9-%D8%A7%D8%AF%DB%8C%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%A7%DB%8C%D8%AA&highlight=TIdHTTP)

ارسال مقدار به روش post (http://barnamenevis.org/showthread.php?162386-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%A8%D9%87-%D8%B1%D9%88%D8%B4-post&highlight=TIdHTTP)

ارتباط با صفحات وب در يك برنامه تحت ويندوز (http://barnamenevis.org/showthread.php?166252-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%88%D8%A8-%D8%AF%D8%B1-%D9%8A%D9%83-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AA%D8%AD%D8%AA-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2&highlight=TIdHTTP)



موفق باشی.

aisuda
پنج شنبه 02 شهریور 1391, 10:58 صبح
خیلی ممنون که جواب دادید، من نمی خواستم سایت را داخل برنامه خودم باز کنم، می خواستم روی مرورگر باز شده کار کنم، هدفم هم اینه که بدونم چطوری با sendmessage اینکارو بکنمريال یعنی چطوری هندل اشیا داخل کلاس 'internet explorer_server' به دست بیارم، چون به نظرم اصلاً هندل ندارند و بعد فرستادن کلیدهای ترکیبی مثل ctrl+n یا ctrl+tab با تابع sendmessage است. اگه تو این موردا یه جوری کمکم کنید خیلی ممنون می شم.

aisuda
یک شنبه 05 شهریور 1391, 07:41 صبح
جسارت نشه خدمت دوستان، ولی سطح سایت برنامه نویس یکم که چه عرض کنم، دو سه کم اومده پایین. قبلاً وضعیت خیلی بهتر بود مخصوصاً تو بخش دلفی. مدیرا می اومدن کمک می کردن ولی الان هیچ خبری نیست

Felony
یک شنبه 05 شهریور 1391, 08:55 صبح
اول اینکه می خوام بین تب ها حرکت کنم. کدش رو نوشتم ولی کار نمی کنه (البته چون کلید ctrl+tab رو می خوام بفرستم مشکل دارم و کلیدهای ساده رو می تونم بفرستم) اینم کد من:
کدت اشتباه هست ، شبیه سازی فشار داده شدن کلید رو باید با تابع Keybd_Event انجام بدی ، در موردش بارها تو همین بخش بحث شده .


دوم اینکه می خوام دو تا تکست باکس که نام کاربری و رمز عبور است رو در یک صفحه وب (صفحه وب جاری) پر کنم و بعد submit. اینم براش کد نوشتم اما نمی دونم هندل تکست رو چطوری به دست بیارم؟
هندل برای اشیاء Win32 هست ، صفحه وب و آبجکت های اون هندل ندارن !
بارها در مورد پر کردن فرم اینترنتی در بخش شبکه در دلفی بحث شده .


جسارت نشه خدمت دوستان، ولی سطح سایت برنامه نویس یکم که چه عرض کنم، دو سه کم اومده پایین. قبلاً وضعیت خیلی بهتر بود مخصوصاً تو بخش دلفی. مدیرا می اومدن کمک می کردن ولی الان هیچ خبری نیست
دلیلش همین پرسیدن سوالات تکراری هست !