PDA

View Full Version : مشکل ارسال key به webbrowser دلفی



SReza1
دوشنبه 14 مهر 1382, 18:29 عصر
سلام
من یک مشکل دارم اینکه میخوام در webbrowser که کامپوننت اون در دلفی هست این کارها را بکنم
1- بتونم صفحه به صفحه(Page page) حرکت کنم مثلا همون کاری رو که دکمه pagedown میکنه رو انجام بدم
بنظر من اگه میشددکمه page down رو به اون پاس بدیم تقریبا حل میشد ولی متاسفانه handle اون بدردم نخورده!یک hwnd هم داره که هر وقت استفاده میکنم error میده من این کار را روی memo انجام دادم جواب گرفتم و روی این object جواب نگرفتم!
این کد هم جوابمو نداد
SendMessage(WebBrowser1.Handle,WM_CHAR,32,1);
32 برای این است که زدن space نیز کار pagedown رو انجام میده(همون کد space)
بطور خلاصه بگم که میخوام دکمه pagedown رو با زدن یک دکمه انجام بدم!!
توابعی هم که با scroll کار میکنند جواب نداده! چون اون handle که مال webbrowser است به هیچ درد نمیخوره!
2- وقتی Ctrl + F رو میزنیم محیط جستجوی webbrowser ظاهر میشه.آیا میشه این کلید رو هم از بیرون صدا بزنم!! اگه بشه این محیط رو فارسی کرد هم عالیه!
من بی صبرانه منتظر جواب دوستان هستم چون دیگه هنگ کردم! هر چند میدونم یه کمی سوال سخته!!! :cry: :cry:

Kambiz
سه شنبه 15 مهر 1382, 00:10 صبح
قبل از اینکه کلید به مرورگر فرستاده بشه باید Focus روی اون قرار بگیره. ولی این کار با فراخوانی متد Webbrowser.SetFocus امکان پذیر نیست. به جای روال عادی که Focus رو روی یک کنترل می‌گذاریم٬ از تابع زیر استفاده کن.


uses
MSHTML;

function FocusDocument(WebBrowser: TWebBrowser): Boolean;
var
Document: DispHTMLDocument;
begin
Result := False;
if (WebBrowser.Document <> nil) and
(WebBrowser.Document.QueryInterface(DispHTMLDocume nt, Document) = S_OK) then
begin
(Document.parentWindow as IHTMLWindow2Disp).focus;
Result := True;
end;
end;

Kambiz
سه شنبه 15 مهر 1382, 00:14 صبح
یادم رفت بگم، بجای فرستادن Message به مرورگر٬ چون معلوم نیست که کدوم Window باید دریافت کننده Message باشه٬ بصورت زیر عمل کن:


FocusDocument(WebBrowser1);
keybd_event(VK_SPACE, 0, 0, 0);
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);

SReza1
سه شنبه 15 مهر 1382, 18:28 عصر
سلام به delphi area عزیز
بابا جدا که سلطان دلفی هستی :shock: !! نمی دونی چقدر حال کردم!!! خیلی خیلی خیلی ممنون!!خیلی عالی بود!
اگه ممکنه در خصوص ctrl + F هم یه کمکی کن که بتونم اونو به صورت فارسی نشون بدم و اینکه اصلا کلید Ctrl + F رو چطور به اون پاس بدم. باز هم از روش عالیه شما تشکر میکنم
:lol: :lol: :lol: :wink: :wink:

Kambiz
سه شنبه 15 مهر 1382, 22:57 عصر
خواهش می‌کنم. :oops:

بجای TWebBrowser بهتره از TEmbeddedWB (http://www.euromind.com/iedelphi/embeddedwb.htm) استفاده کنی. این کامپوننت از همون TWebBrowser مشتق شده با این تفاوت که قابلیتهای دیگر IE رو هم بهش اضافه کرده‌اند. برای دیالوگ جستجو هم تابع ویژه خودش رو در اختیارت می‌گذاره.

تا حالا به فارسی کردن دیالوگها فکر نکردم و چیزی به ذهنم نمی‌رسه. ولی اگر تاپیک خودش رو باز کنی٬ حتما" بقیه دوستان راهکارهایی برای پیشنهاد دارند.

Kambiz
سه شنبه 15 مهر 1382, 23:16 عصر
بازم یادم رفت که یک چیزی رو بگم. :)
نسخه اصلی رو دلفی 7 نصب نمی‌شه و توش یک Memory Leak کوچولو هم هست. برای رفع این رفع این مشکلات٬ نسخه‌ای رو که اینجا پیوست کردم با اون نسخه‌ی اصلی جایگزین کن.

متاسفانه دسترسی به نویسنده کامپوننت نیست که بشه نسخه اصلاح شده رو روی سایت اصلی قرار داد.

SReza1
چهارشنبه 16 مهر 1382, 21:41 عصر
این کامپوننت نصب نشد! یکی از doc را می گفت نمیشناسم!! البته من فقط اون آخری رو download کردما!! نمی دونم درسته یا نه؟

SReza1
چهارشنبه 16 مهر 1382, 21:45 عصر
بالاخره کدومو استفاده کنیم؟؟ :oops:

Kambiz
چهارشنبه 16 مهر 1382, 23:57 عصر
به! :)

گفتم که فایلهای کامپوننت رو از خود سایت اصلی بگیر (http://www.euromind.com/iedelphi/download/embedwb116b.zip) (سه تا یونیت تو یک فایل zip هست) و بعد این یونیتی رو که من پیوست کردم با اون یونیتی که از اونجا گرفتی عوض کن.

وقتی که این کامپوننت متدی برای فراخوانی دیالوگ جستجو در اختیار میگذاره٬ فرستادن کلید CTRL+F به مرورگر کار مناسبی نیست. اما با این حال این ترکیب کلید رو اینجوری می‌تونی بفرستی:


keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord('F'), 0, 0, 0);
keybd_event(Ord('F'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

SReza1
پنج شنبه 17 مهر 1382, 17:19 عصر
سلام
از بابت ctrl + F ممنون!! باید این کامپوننت ها رو نصب کنم ببینم چی میشه! :oops:

SReza1
پنج شنبه 17 مهر 1382, 17:41 عصر
راستی!! این کامپوننت روی یک سیستم clear که دلفی نداره براحتی کار میکنه یا نه؟
webbrowser جطور؟

Kambiz
پنج شنبه 17 مهر 1382, 20:15 عصر
به IE نیاز دارند نه دلفی.