1

Konu: aktif internet explorer penceresine veri yazmak

selam arkadaşlar
foxpro programında cursor içindeki verileri hazırda bekleyen internet explorer'a veri nasıl yazabiliriz.

yardımlarınız için teşekkürler

2

Re: aktif internet explorer penceresine veri yazmak

internet explorere veri yazıldığını bilmiyorum.
Eğer IEye XML ekleyeceksen: CURSORTOXML("cursorAd", "XMLdosyaDizinVeAd")

kuleflili yazdı:

selam arkadaşlar
foxpro programında cursor içindeki verileri hazırda bekleyen internet explorer'a veri nasıl yazabiliriz.

yardımlarınız için teşekkürler

umarım oldu ya da Çetin'i bekle

VFP9 SP2

3

Re: aktif internet explorer penceresine veri yazmak

çetin abi ne zaman gelir acaba

4

Re: aktif internet explorer penceresine veri yazmak

Coktan geldim de sorunu bile tam anlamadigimdan herhangi bir yorumda bulunmaktan kacindim.

5

Re: aktif internet explorer penceresine veri yazmak

Sanırım eğitim sisteminden kaynaklanıyor: Tamamen ezbere dayandığı için ve yoruma, fikir alışverişe ve tartışmaya izin verilmediği için, insanlar artık sorunlarını soruya transforme etmesini beceremiyor.

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

6

Re: aktif internet explorer penceresine veri yazmak

mehmet bey beceriksizlik ve eğitimsizlik çok ağır olmuş
tamamen uğraştığım prg'de heyecan verici olduğu için sanırım hızlı bir şekilde yazmış olabilirim.
ozaman şöyle diyelim

cursor içindeki verileri internet explorer sayfasında mesala bir forum sayfasına  cursordaki verileri uygun yerlere yazmak ve internet explorer sayfasını post etmek

7

Re: aktif internet explorer penceresine veri yazmak

kuleflili yazdı:

mehmet bey ...


Hazır konu eğitimden açılmışken: isim ve hitap büyük harf ile başlar.

Asıl konuya gelince: çok basit değil, ama mümkün.
Benim yaptığım uygulamada İE'yi Vfp içinden açıyor ve istediğim sayfaya gidiyorum. Ama mevcut açılmış IE bulmakda mümkün.
Google'da "vfp internet explorer automation" arama yaparsan, epey düzgün bilgi göreceksin.
Örneğin: http://fox.wikis.com/wc.dll?Wiki~IEAutomationExample

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

8

Re: aktif internet explorer penceresine veri yazmak

Raporlamada html seçeneği olması lazım. VFP Help bölümünde vardır. Sanırım işini görür.

kuleflili yazdı:

mehmet bey beceriksizlik ve eğitimsizlik çok ağır olmuş
tamamen uğraştığım prg'de heyecan verici olduğu için sanırım hızlı bir şekilde yazmış olabilirim.
ozaman şöyle diyelim

cursor içindeki verileri internet explorer sayfasında mesala bir forum sayfasına  cursordaki verileri uygun yerlere yazmak ve internet explorer sayfasını post etmek

9

Re: aktif internet explorer penceresine veri yazmak

yardımlarınız için teşekkürler
hemen örnekleri deneyeceğim

10

Re: aktif internet explorer penceresine veri yazmak

declare Sleep in kernel32 integer nmilliseconds

WebMain = CREATEOBJECT("InternetExplorer.application")
WebMain.navigate("http://www.deneme.com")
WebMain.visible = .t.

DO WHILE WebMain.busy .OR. WebMain.readystate#4
   Sleep(300)
ENDDO

*WebMain.Document.Forms("LogonForm").jenis_id.selectedindex = 1
WebMain.Document.Forms("LoginForm").j_username.Value = "deneme"
WebMain.Document.Forms("LoginForm").j_password.Value = "deneme"
webmain.Document.Forms(0).Submit()

yukarıdaki komut ile siteye logon olabiliyorum

site içerisindeki bir linke tıklamak için hangi komutu kullanmalıyım

örnek olarak hotmail sitesine girip gelen kutusuna tıklamak için hangi komutu kullanmalıyım

yardımlarınız için teşekkürler

11

Re: aktif internet explorer penceresine veri yazmak

O tür sayfalar javascript kullanıyorlar.
Firefox'un bir AddOn'u var: Firebug. Onunla bulunduğun sayfanın tüm html ve javascript komutlarını görebiliyorsun.
O tıklamak istediğin komutunu bul. Sonra, örnek olarak:

Visual Fox Pro
THIS.oIE.DOCUMENT.getelementbyid('username').VALUE  = cUsar

THIS.oIE.DOCUMENT.getelementbyid('password2').VALUE = cPwd
THIS.oIE.DOCUMENT.parentWindow.EXECSCRIPT('javascript:EnterForm()')
Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

12

Re: aktif internet explorer penceresine veri yazmak

mehmet bey yardımların için tekrar çok teşekkür ederim.
<li id="mx105_165427" ctype="tab" aria-selected="true" role="presentation">
<a id="mx105_anchor_3" class="text tablabelon on" onfocus="setCurrentfocusId(event, this);" onkeypress="if(event.keyCode==KEYCODE_SPACEBAR){sendEvent('changesc','mx105','165427')}" title="Varlık Yönetimi - Saha Varlıkları" href="Javascript: sendEvent('changesc','mx105','165427')" nowrap="nowrap" tabindex="0" role="tab" onkeydown="itemAKey(event,this)"> Varlık Yönetimi - Saha Varlıkları</a>
</li>

tıklamak istediğim link yukarıda firebug'tan buldum

nasıl bir komut yazmamız gerekiyor

13

Re: aktif internet explorer penceresine veri yazmak

O işi çözmek için epey bir deneme-yanılma ile zaman harcadım. Çünkü her sayfa farklı.
Bu sürünmeden seni maalesef kurtaramam.
Şunu bir denesene:

Visual Fox Pro
THIS.oIE.DOCUMENT.parentWindow.EXECSCRIPT('javascript:sendEvent("changesc","mx105","165427")')
Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

14

Re: aktif internet explorer penceresine veri yazmak

mehmet bey hata veriyor
oleidispatch exception 0 hatası veriyor

15

Re: aktif internet explorer penceresine veri yazmak

Hangi sayfa bu? Girip bakmam mümkünmü?

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

16 Son düzenleyen, kuleflili (25.01.2014 12:49:06)

Re: aktif internet explorer penceresine veri yazmak

yok mehmet bey
intranet üzerinden çalışıyor.
tablo içinde bir link var ona tıklamam gerekiyor kodu yukarıda verdiğim şekilde
sizede çok zahmet verdim

17

Re: aktif internet explorer penceresine veri yazmak

Benim verdiğim örnek benim kodlardan copy&past yapılmış örnekler.
Yani

Visual Fox Pro
THIS.oIE.DOCUMENT.parentWindow.EXECSCRIPT('javascript:sendEvent("changesc","mx105","165427")')

senin için şöyle veya benzer olması lazım:

Visual Fox Pro
webmain.Document.EXECSCRIPT('javascript:sendEvent("changesc","mx105","165427")')

  veya
  webmain.Document.parentWindow.EXECSCRIPT('javascript:sendEvent("changesc","mx105","165427")')

Biraz denemen lazım. Bende Web uzmanı değilim. Çok üf-püf ile yol almışdım.

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

18

Re: aktif internet explorer penceresine veri yazmak

yabancı kaynaklarada baktım ama bir türlü beceremedim

çetin hocamdan rica ettim ama sanırım müsait değil sanırım

bu konu hakkında kimden yardım alabilirim

19 Son düzenleyen, cetinbasoz (27.01.2014 15:45:54)

Re: aktif internet explorer penceresine veri yazmak

kuleflili yazdı:

yabancı kaynaklarada baktım ama bir türlü beceremedim

çetin hocamdan rica ettim ama sanırım müsait değil sanırım

bu konu hakkında kimden yardım alabilirim

Ne zaman, nerede? Buradakini diyorsan, arada "yerim senin transforme"unu gibi gereksiz yorum yapan Cihan beni soguttu, donup de birsey yazmak gelmedi icimden.

Bir linke tiklaman gerekmiyor aslinda. Linklerin tiklaninca yaptiklari is, submit islemi. Neyse kafan karismasin Click()'le.

O linkin bir ID'si var. Sayfayi kaynak kod olarak incelersen o ID"yi alirsin. elinde webmain.Document var. O da "document" objesi. getElementByID( 'linkID' ) ile linkin referansini al ve Click() kodunu cagir:

Visual Fox Pro
loLink = webmain.Document.getElementByID( 'linkID' ) 

loLink.Click()

Bu kadar basit olmayabilir. Karsina alip, degisik seyler denemek gerekebilir. Sanirim username ve password gizli:)

Not: Click() dedigime bakma metod Click() olmayabilir. Submit() olabilir.

20

Re: aktif internet explorer penceresine veri yazmak

Visual Fox Pro
Public oForm

oForm = Createobject('htmlSample', GetHTML())
oForm.Show()
 
oForm.ClickUpdateButton()
 
Function GetHTML
  *Return HTMLShowerx()
  Local myVar
  TEXT to myVar noshow
<html>
<head>
<title>New User Sign Up</title>
<script language="JScript">
function LoadTreeView()
{
    var TreeView1 = document.all('Tree001');
    var oNode = TreeView1.Nodes.Add(null,0,"top","My Tree");
    TreeView1.Nodes.Add("top",4,"root0","Main node 0");
    TreeView1.Nodes.Add("top",4,"root1","Main node 1");
    TreeView1.Nodes.Add("top",4,"root2","Main node 2");
    TreeView1.Nodes.Add("root1",4,"child11","Child11");
    TreeView1.Nodes.Add("root1",4,"child12","Child12");
    TreeView1.Nodes.Add("root2",4,"child21","Child21");
    TreeView1.Nodes.Add("child11",4,"child111","child111");
    TreeView1.Nodes.Add("child11",4,"child113","child113");
    TreeView1.Nodes.Add("child113",3,"child112","child112");
    oNode.Expanded = true;
 
    var TreeView2 = document.all('Tree002');
    var oNode = TreeView2.Nodes.Add(null,0,"top","My Tree");
    TreeView2.Nodes.Add("top",4,"root0","Main node 0");
    TreeView2.Nodes.Add("top",4,"root1","Main node 1");
    TreeView2.Nodes.Add("top",4,"root2","Main node 2");
    TreeView2.Nodes.Add("root1",4,"child11","Child11");
    TreeView2.Nodes.Add("root1",4,"child12","Child12");
    TreeView2.Nodes.Add("root2",4,"child21","Child21");
    TreeView2.Nodes.Add("child11",4,"child111","child111");
    TreeView2.Nodes.Add("child11",4,"child113","child113");
    TreeView2.Nodes.Add("child113",3,"child112","child112");
    oNode.Expanded = true;
 
}
function CheckTable(dbcPath,dbfName)
{
  var strCn = "Provider=VFPOLEDB;Data Source=" + dbcPath;
  var strSQL = "select * from " + dbfName;
 
  var oConn = new ActiveXObject("Adodb.Connection");
  oConn.ConnectionString = strCn;
  oConn.Open;
  var oRS = oConn.Execute(strSQL);
 
  var lst="<TABLE border='1'><TR>";
  var Maxfields=5;
  var MaxRows=20;
 
  for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
  {
    lst += "<TH>";
    lst += oRS.Fields(i).Name;
    lst += "</TH>";
  }
  lst += "</TR>";
 
  var counter=0;
  while (!oRS.eof && counter < MaxRows)
  {
    lst += "<TR>";
    for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
    {
      lst += "<TD>";
      lst += oRS.Fields(i).Value;
      lst += "</TD>";
    }
    lst += "</TR>";
    oRS.MoveNext();
    counter++;
  }
  lst += "</TABLE>";
  oConn.Close();
  tablelist.innerHTML = lst;
  return true;
}
</script>
</head>
<body bgcolor=Turquoise onload="LoadTreeView();">
<h1 align="Center"><font color="#000080">New User Sign Up</font></h1>
<form method="GET" action="empty.htm" target="_self" name="myForm">
    <table border="0" cellspacing="1">
      <tr><td>ID</td><td><input type="text" name="ID" ID="SSNNumber" size="16" maxlength="16"></td></tr>
      <tr><td>First Name</td><td><input type="text" name="First" size="30" maxlength="15"></td></tr>
      <tr><td>Last Name</td><td><input type="text" name="Last" size="30" maxlength="20"></td></tr>
   <td>Gender?</td>
   <td>
     <select name="Selection1">
       <option value="0">- Gender -</option>
       <option value="1">Female</option>
       <option value="2">Male</option>
     </select></td></tr>
<tr>
   <td>Multi Selection</td>
   <td>
     <select multiple name="MulSelection">
       <option value="0">- Sports you watch -</option>
       <option value="1">Basketball</option>
       <option value="2">Soccer</option>
       <option value="3">Football</option>
       <option value="4">Volleyball</option>
       <option value="5">Formula1</option>
       <option value="6">Nascar</option>
     </select></td></tr>
    </table>
<TEXTAREA ID=txtComments STYLE="overflow:scroll; width:70%; height:150">
Sometimes an HTML based VFP form can be cool.
Think you could have syntax coloring on a form :)
Play flash movie (better play "Need For Speed" - post me too if you find a flash version), have a calendar etc.
</TEXTAREA>
  <p>
<A HREF="newpage.htm" TARGET="_self">Go to New Page.</A>
<input type=submit name=sub1 value="Write" onclick='document.all("submitter").value="writeButton";'>
<input type=submit name=sub2 value="Update" onclick='alert("Clicked update");document.all("submitter").value="updateButton";'>
<input type=submit name=sub3 value="Clear" onclick='document.all("submitter").value="clearButton";'>
 
<p>
<object name="Treeview" classid="clsid:C74190B6-8589-11D1-B16A-00C0F0283628"
  id="Tree001" width="242" height="159">
  <param name="_ExtentX" value="6403">
  <param name="_ExtentY" value="4207">
  <param name="_Version" value="393217">
  <param name="HideSelection" value="0">
  <param name="Indentation" value="1000">
  <param name="LabelEdit" value="0">
  <param name="LineStyle" value="0">
  <param name="PathSeparator" value="/">
  <param name="Sorted" value="0">
  <param name="Style" value="7">
  <param name="Checkboxes" value="0">
  <param name="FullRowSelect" value="0">
  <param name="HotTracking" value="0">
  <param name="Scroll" value="1">
  <param name="SingleSel" value="0">
  <param name="ImageList" value>
  <param name="BorderStyle" value="0">
  <param name="Appearance" value="1">
  <param name="MousePointer" value="0">
  <param name="Enabled" value="1">
  <param name="OLEDragMode" value="0">
  <param name="OLEDropMode" value="0">
</object>
</p>
<p>
<object name="Treeview" classid="clsid:C74190B6-8589-11D1-B16A-00C0F0283628"
  id="Tree002" width="242" height="159">
  <param name="_ExtentX" value="6403">
  <param name="_ExtentY" value="4207">
  <param name="_Version" value="393217">
  <param name="HideSelection" value="0">
  <param name="Indentation" value="1000">
  <param name="LabelEdit" value="0">
  <param name="LineStyle" value="0">
  <param name="PathSeparator" value="/">
  <param name="Sorted" value="0">
  <param name="Style" value="7">
  <param name="Checkboxes" value="0">
  <param name="FullRowSelect" value="0">
  <param name="HotTracking" value="0">
  <param name="Scroll" value="1">
  <param name="SingleSel" value="0">
  <param name="ImageList" value>
  <param name="BorderStyle" value="0">
  <param name="Appearance" value="1">
  <param name="MousePointer" value="0">
  <param name="Enabled" value="1">
  <param name="OLEDragMode" value="0">
  <param name="OLEDropMode" value="0">
</object>
</p>
</form>
<input type=hidden name="submitter" value=0>
<p>Browse a VFP table</p>
<table>
<TR><TD>Locate DBC</TD><TD><input type='file' size='80' name='DBCLOCATION'></TD></TR>
<TR><TD>TableName</TD><TD><input type='text' size='80' name='TABLENAME'></TD></TR>
</TABLE><HR>
<input type='button' value='List' onClick="CheckTable(DBCLOCATION.value,TABLENAME.value);return;">
<div id='tablelist'></div>
</body>
</html>
  ENDTEXT
  Return myVar
 
Define Class htmlSample As Form
  Top = 0
  Left = 0
  Height = 600
  Width = 800
  DoCreate = .T.
  Caption = "HTML sample"
  cHTML = "<html><body></body></html>"
  cHTMFile = ''
  DoNotErase = .T.
 
  Add Object htmlviewer As OleControl With ;
    Top = 0, ;
    Left = 0, ;
    Height = 600, ;
    Width = 800, ;
    Visible = .T., ;
    Name = "HTMLViewer", ;
    OleClass = 'Shell.Explorer'
 
Procedure ClickUpdateButton
loLink = this.htmlviewer.object.Document.getElementByID('sub2')
loLink.Click()
endproc
 
  Procedure Destroy
    If !This.DoNotErase And !Empty(This.cHTMFile) And File(This.cHTMFile)
      Erase (This.cHTMFile)
    Endif
  Endproc
 
  Procedure Init
    Lparameters tcHTML, tlIsFile
    If m.tlIsFile And !Empty(m.tcHTML) And File(m.tcHTML)
      This.cHTMFile = m.tcHTML
      This.DoNotErase = .T.
 
      With Thisform.htmlviewer
        .Navigate2('file://'+This.cHTMFile)
        Do While .ReadyState # 4 && Wait for ready state
        Enddo
      Endwith
    Else
      If !Empty(m.tcHTML)
        This.cHTMFile = Forcepath(Sys(2015)+'.htm',Sys(2023))
        This.DoNotErase = .F.
        Strtofile(m.tcHTML, This.cHTMFile)
 
        With Thisform.htmlviewer
          .Navigate2('file://'+This.cHTMFile)
          Do While .ReadyState # 4 && Wait for ready state
          Enddo
        Endwith
      Else
        With This.htmlviewer
          .Navigate2("about:blank")
          .Document.Write(This.cHTML)
        Endwith
      Endif
    Endif
  Endproc
 
  Procedure htmlviewer.NavigateError
    Lparameters pdisp, url, frame, statuscode, Cancel
    TEXT to m.lcParamList textmerge noshow
  pdisp = pdisp
  url = <<url>>
  frame = <<frame>>
  statuscode = <<statuscode>>
  Cancel = <<Cancel>>
    ENDTEXT
    Messagebox(m.lcParamList)
    Cancel = .T.
  Endproc
 
 
  Procedure htmlviewer.BeforeNavigate2
    Lparameters pdisp, url, Flags, targetframename, postdata, headers, Cancel
    TEXT to m.lcParamList textmerge noshow
  pdisp = pdisp
  url = <<url>>
  flags = <<flags>>
  targetframename = <<targetframename>>
  postdata = <<postdata>>
  headers = <<headers>>
  Cancel = <<Cancel>>
    ENDTEXT
    Messagebox(m.lcParamList)
 
    *  oFrm = This.Object.Document.myForm
    lcVals = ""
    If This.Object.Document.Forms.Length > 0
      For Each oFrm In This.Object.Document.Forms
        lcVals = lcVals + oFrm.Name + Chr(13)
        If oFrm.elements.Length > 0
          For Each oElem In oFrm.elements
            If oElem.Name = "Treeview"
              lcVals = lcVals + "Name :" + oElem.Name + '::'+ oElem.Id +  '::'+ "/Value:"+;
                Iif(!Isnull(oElem.SelectedItem),;
                oElem.SelectedItem.Key,"NULL") + Chr(13)
            Else
              If oElem.Type = "select-multiple"
                lcList=''
                For ix=0 To oElem.Length-1
                  If oElem.Item(ix).Selected
                    lcList = lcList + Iif(Empty(lcList),'',',')+oElem.Item(ix).Value
                  Endif
                Endfor
                lcVals = lcVals + "Name :" + oElem.Name +  '::'+ oElem.Id +  '::'+ "/Value:"+lcList + Chr(13)
              Else
                lcVals = lcVals + "Name :" + oElem.Name + '::'+ oElem.Id +  '::'+ "/Value:"+oElem.Value + Chr(13)
              Endif
            Endif
            oElem = .Null.
          Endfor
        Endif
        oFrm = .Null.
      Endfor
    Endif
    Cancel = .T.  && prevents actual navigation
    lcVals = lcVals + Chr(13)+Chr(10)+;
      'Submitted by:'+Transform(This.Object.Document.All("submitter").Value)
    Messagebox(lcVals)
  Endproc
 
  Procedure htmlviewer.Refresh
    Nodefault
  Endproc
Enddefine