الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية إرسال أوامر الى انترنت اكسبلورر

مغلق
بدأه nobleman في 28 سبتمبر 2006 · 6 رد · 2,068 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعطيكم الف عافية ياشباب

بس عندي سؤال حيرني

البرنامج عبارة عن فورم وبداخلة WebBrowser

أريد فتح صفحة انترنت داخل WebBrowser و إرسال البيانات من الدلفي إلى ال EDIT داخل ال WebBrowser

يعني اريد التحكم الكامل بهذه الصفحة بمافيها ال Button الموجود داخل صفحة WebBrowser

هل يوجد طريقة ,,,,, شكراً مقدماً

تحياتي

#2

لم أفهم ما تريده بالضبط

وعلى ما أعتقد يجب عليك أن تغير طلبك لمستوى أقل لأنه عندما تتحدث عن صفحة وب ضمن Explorer فهذا يعني أن لها مفسرها الخاص الذي يتحكم بها

«طبعا بإمكانك برمجة مفسر صفحات وب عندها تتحكم بما تريد!»

#3

بالنسبة لاستخدام محتويات الصفحة ضمن البرنامج عليك باستخدام ( BeforeNavigate2 ) :

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  Cancel := true;
  // ضع ما يناسبك من الأكواد هنا
end;

يعني عندما تنقر على رابط أو botton ضمن webbrowser تستطيع تنفيذ أي أكواد delphi تريدها .

أما بالنسبة لفتح webbrowser لمحتويات أنت تحددها سواء من ملف أو من دفق

http://www.delphidabbler.com/articles?article=14

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 30 سبتمبر 2006 في 10:45

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#4

أخي انا فهمت عليك تماما

تريد التحكم بصفحة على النت من دلفي مثل ارسال بوست او جت

او ان تضع بمربع النص القيمة بواسطة دلفي وان تضغط الزر بواسطة دلفي وووووووووو

انا شاغل بهيك مواضيع بس اخذت على قدي ما احتاج

ممكن هذا يساعدك

uses
  mshtml;


procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var iDoc: IHtmlDocument2;
 i: integer; 
 ov: OleVariant;
 iDisp: IDispatch;
 iColl: IHTMLElementCollection; 
 iInputElement: IHTMLInputElement;

begin
 WebBrowser1.ControlInterface.Document. QueryInterface(IHtmlDocument2, iDoc);
 if not assigned(iDoc) then begin
   ShowMessage(' !!!??? Aucun chargement ... ');
   Exit;
 end;
 ov := 'INPUT';
 IDisp := iDoc.all.tags(ov);
 if assigned(IDisp) then begin
   IDisp.QueryInterface(IHTMLElementCollection, iColl);
   if assigned(iColl) then begin
	 for i := 1 to iColl.Get_length do begin
	   iDisp := iColl.item(pred(i), 0);
	   iDisp.QueryInterface(IHTMLInputElement, iInputElement);
	   if assigned(iInputElement) then begin
		 Memo1.Lines.Add(iInputElement.Get_name);//my comment to know what is name of this component
		 if iInputElement.Get_name = 'login'
		  // Champ de saisie d'un login ,nommé login en javascript
		 then iInputElement.Set_value(Edit2.Text);
		 if iInputElement.Get_name = 'passwd'
		   // Champ de saisie d'un pass ,nommé passwd en javascript
		 then iInputElement.Set_value(Edit3.Text);
		   //Déclenchement d'un bouton nommé save qui balance un submit
		 if iInputElement.Get_name = '.save'
		   then iInputElement.Get_form.submit;

		   //  Envoie le titre de la page courante dans la barre de titre
		   Caption := Webbrowser1.OleObject.Document.Title
	   end;
	 end;
   end;
 end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate(Edit1.Text);
end;

أرجو ان أكون قد أفدت

هذا الكود للادخال يدويا من دلفي لكن ربما بعض العناصر بالصحة لا يكون لها id

بالتالي لو تفتح السورس لصفحة الhtml وتشوف طلبك يكون افضل

والافضل من كل ذلك (حسب ما أتوقعه منك انك تريد التحكم بالصفحة من دلفي ) عمل post و get من دلفي

وهما تابعان php

اي مثلا عندك صفحة html بها مربعي حوار وراديو بتن وزرللارسال

تستطيع الكتابة بمربعي الحوار واختيار الراديو بتن ومن ثم الارسال بواسطة المنهج post او get وانا افضل post

بس يجب ان تفتح السورس للصفحة لترى اسماء هالعناصر

وهذا كود يوضح البوست:

procedure SendSMS(ToMobile, FinalSMS: String);
var
  i: Integer;
  EncodedDataString: WideString;
  PostData: OleVariant;
  Headers: OleVariant;
begin
  // First, create a URL encoded string of the data
  EncodedDataString := 'To='+ HTTPEncode(ToMobile)+ '&'+ //to mobile number
					   'sms='+ HTTPEncode(FinalSMS); //sms we typed it
  // The PostData OleVariant needs to be an array of bytes as large
  // as the string (minus the NULL terminator)
  PostData := VarArrayCreate([0, Length(EncodedDataString) - 1], varByte);
  // Now, move the Ordinal value of the character into the PostData array
  for I := 1 to Length(EncodedDataString) do
	PostData[I-1] := Ord(EncodedDataString);
  Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
  // Finally, we just Navigate to the URL. Note that you may have to modify
  // the path to your ASP page's location.
  fmMain.WebBrowser1.Navigate('http://www.website.com', EmptyParam, EmptyParam, PostData, Headers);
end;

طبعا فقط عليك تغيير to و sms وغيرها من اسماء العناصر بالصفحة

put_user_and_pass_in_html.zip

#5

شكراً على مساعدتكم

أريد فتح صفحة الانترنت ضمن الدلفي

وأريد من الدلفي أن يقوم بإرسال نصوص إلى ضمن هذه الصفحة

" يعني تعبئة البيانات من الدلفي إلى صفحة الإنترنت"

#6

عزيزي

انا فهمان عليك تماما

والاجابة اللي حطيتها شاااافية تماما

انا اضع webbrowser في مشروعي وارسل النصوص له وليس الى internet explorer

اذا حبيت هالطريقة فالكود اللي حاطه مفيد جدا

مع اني ما استوعبته كثيرا بس عامل عليه شي خمس مشاريع

#7

حتي هذا الانتي فيرس اوقفه

هذا الموضوع مغلق.

مواضيع مشابهة