Çözüldü - Sitedeki grafiği scripte eklemek

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
x_files_x
Bit
Bit
Mesajlar: 3
Kayıt: 17 May 2013, 11:05

Çözüldü - Sitedeki grafiği scripte eklemek

Mesaj gönderen x_files_x » 17 May 2018, 09:49

Merhaba arkadaşlar, autoit ile birşey yapmak istiyorum ama bir türlü bulamadım. Yapmak istediğim şey şudur: scipt içerisine bir web sitesindeki grafiği koymak istiyorum. içeriği ordan alacak. örnek vereyim resimle.
Resim

site linki:https://altin.in/fiyat/gram-altin

ben burdaki grafiği benim scriptime eklemek istiyorum ama autoit formlarında benzerine rastlamadım yada ben bulamadım. lütfen yardımcı olur musunuz. grafik kısmını scipte göstersem yeterli.



Kullanıcı avatarı
BlueLife
Byte3
Byte3
Mesajlar: 148
Kayıt: 29 Ağu 2014, 20:42

Re: Sitedeki grafiği scripte eklemek

Mesaj gönderen BlueLife » 18 May 2018, 10:29

@ x_files_x

Selam, sitedeki resim sabit olsaydı htlm kodlarından resmin linkni bulup indirip direk kullanabilirdin. Malesef sitenin htlm verisinde ilgili bölüm için sabit resim yok. Obj komutlarıyla sitenin belli bir kısmını gui ekranında göterebilirsin ama bu da düzgün çalışmayacaktır. Aklıma başka alternatif bir yöntem gelmiyor malesef. Obj için basit bir örnek;

Kod: Tümünü seç

Opt("GUIOnEventMode", 1)
Global $MAIN_PAGE = GUICreate("", 800, 600, -1, -1)
GUISetOnEvent(-3, "_GuiExit")

Global $MAIN_PAGE2 = GUICreate("", 650, 300, 100, 100, BitOR(0x40000000, 0x00010000, 0x00080000), 0x10000, $MAIN_PAGE)

Global $OBJ_oIE = ObjCreate("Shell.Explorer.2")
ObjEvent("AutoIt.Error", "_Obj_Error")

Global $GUI_OBJ = GUICtrlCreateObj($OBJ_oIE, -10, -350, 1024, 1024)
GUICtrlSetResizing($GUI_OBJ, 802)

$OBJ_oIE.navigate("https://altin.in/fiyat/gram-altin")

GUISwitch($MAIN_PAGE)
GUICtrlCreateButton("Test", 10, 10, 100,25)

GUISetState(@SW_SHOWNOACTIVATE, $MAIN_PAGE2) ;@SW_SHOWNOACTIVATE
GUISetState(@SW_SHOW, $MAIN_PAGE)
While 1
	Sleep(100)
WEnd

Func _GuiExit()
	Exit
EndFunc   ;==>_GuiExit

Func _IE_BUSY(ByRef $Obj, $Wait = 2500)
	While $Obj.Busy()
		Sleep(50)
		$Wait -= 50
		If $Wait < 0 Then ExitLoop ;$BLUE_OIE.stop
	WEnd
EndFunc   ;==>_IE_BUSY

Func _Obj_Error()
EndFunc   ;==>_Obj_Error

x_files_x
Bit
Bit
Mesajlar: 3
Kayıt: 17 May 2013, 11:05

Re: Sitedeki grafiği scripte eklemek

Mesaj gönderen x_files_x » 22 May 2018, 08:33

@BlueLife Hocam nerdesin sen ya, ne zamandır görüşemedik nasılsın :) beni hatırladın umarım
Hocam eğer sabit olsaydı html kodlarını nasıl eklerdik? bir örnek var mı acaba basitte olsa elimde olsun.
BlueLife yazdı:
18 May 2018, 10:29
@ x_files_x

Selam, sitedeki resim sabit olsaydı htlm kodlarından resmin linkni bulup indirip direk kullanabilirdin. Malesef sitenin htlm verisinde ilgili bölüm için sabit resim yok. Obj komutlarıyla sitenin belli bir kısmını gui ekranında göterebilirsin ama bu da düzgün çalışmayacaktır. Aklıma başka alternatif bir yöntem gelmiyor malesef. Obj için basit bir örnek;

Kod: Tümünü seç

Opt("GUIOnEventMode", 1)
Global $MAIN_PAGE = GUICreate("", 800, 600, -1, -1)
GUISetOnEvent(-3, "_GuiExit")

Global $MAIN_PAGE2 = GUICreate("", 650, 300, 100, 100, BitOR(0x40000000, 0x00010000, 0x00080000), 0x10000, $MAIN_PAGE)

Global $OBJ_oIE = ObjCreate("Shell.Explorer.2")
ObjEvent("AutoIt.Error", "_Obj_Error")

Global $GUI_OBJ = GUICtrlCreateObj($OBJ_oIE, -10, -350, 1024, 1024)
GUICtrlSetResizing($GUI_OBJ, 802)

$OBJ_oIE.navigate("https://altin.in/fiyat/gram-altin")

GUISwitch($MAIN_PAGE)
GUICtrlCreateButton("Test", 10, 10, 100,25)

GUISetState(@SW_SHOWNOACTIVATE, $MAIN_PAGE2) ;@SW_SHOWNOACTIVATE
GUISetState(@SW_SHOW, $MAIN_PAGE)
While 1
	Sleep(100)
WEnd

Func _GuiExit()
	Exit
EndFunc   ;==>_GuiExit

Func _IE_BUSY(ByRef $Obj, $Wait = 2500)
	While $Obj.Busy()
		Sleep(50)
		$Wait -= 50
		If $Wait < 0 Then ExitLoop ;$BLUE_OIE.stop
	WEnd
EndFunc   ;==>_IE_BUSY

Func _Obj_Error()
EndFunc   ;==>_Obj_Error

Kullanıcı avatarı
BlueLife
Byte3
Byte3
Mesajlar: 148
Kayıt: 29 Ağu 2014, 20:42

Re: Sitedeki grafiği scripte eklemek- Çözüldü

Mesaj gönderen BlueLife » 22 May 2018, 10:16

@ x_files_x

Teşekkür ederim iyidir, seni hatırlıyorum sen nasılsın? :)
Konuya dönersek yardım dosyasından vs. yararlanarak basit bir örnek hazırladım. Sitenin htlm dosyasını okuyup, sonra belirli etiketteki (siteye göre değişir) resmin linkini buluyoruz. Bulunca indirip kullanıyoruz...

Kod: Tümünü seç

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>

;Resimin linki sabit ise direk resimin linkini, sabit değil belli bir etiket içindeyse ise aşağıdaki gibi bir şey kullanılabilir.
Local $sData = StringStripWS(BinaryToString(InetRead("http://www.autoitscript.com")), 8)

;Belirli etiketler (sabit yazılar vs.) içindeki resmin linkini bulalalım.
Local $InStr = StringInStr($sData, '<divclass="logo_container">')
$sData = StringTrimLeft($sData, $InStr)
$InStr = StringInStr($sData, "this.src=")
$sData = StringTrimLeft($sData, $InStr + StringLen("this.src="))

$InStr = StringInStr($sData, "';")
$sData = StringLeft($sData, $InStr - 1)
If StringLen($sData) = 0 Then
	MsgBox(64, "", "Resmin Linki Alınamadı vs.")
	Exit
EndIf

MsgBox(4096, "Resimin Linki", $sData)

;Resimi Indirelim. Tabi ben basit örnek kod veriyorum.
;Yardım dosyasındaki örnek
Local $hDownload = InetGet($sData, @TempDir & "\logo.png", 0, 1)
Do
	Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.
Local $nBytes = InetGetInfo($hDownload, 0)
InetClose($hDownload) ; Close the handle to release resources.

;MsgBox(0, "", "Bytes read: " & $nBytes)

; Create GUI
Global $hGUI = GUICreate("Show PNG", 640, 480)
GUISetBkColor(0)
GUISetState()

; Load PNG image
_GDIPlus_Startup()
Global $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\logo.png")

; Draw PNG image
Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)

; Loop until user exits
Do
Until GUIGetMsg() = -3

; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

x_files_x
Bit
Bit
Mesajlar: 3
Kayıt: 17 May 2013, 11:05

Re: Sitedeki grafiği scripte eklemek- Çözüldü

Mesaj gönderen x_files_x » 22 May 2018, 11:42

Çok teşekkürler ederim. ben kurcalarım gerisini :) sizi gördüğüme sevindim. Malüm diğer tnc sitesinde defalarca yazdım ama online göremedim hiç sizi. kısmet burayaymıs :)
BlueLife yazdı:
22 May 2018, 10:16
@ x_files_x

Teşekkür ederim iyidir, seni hatırlıyorum sen nasılsın? :)
Konuya dönersek yardım dosyasından vs. yararlanarak basit bir örnek hazırladım. Sitenin htlm dosyasını okuyup, sonra belirli etiketteki (siteye göre değişir) resmin linkini buluyoruz. Bulunca indirip kullanıyoruz...

Kod: Tümünü seç

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>

;Resimin linki sabit ise direk resimin linkini, sabit değil belli bir etiket içindeyse ise aşağıdaki gibi bir şey kullanılabilir.
Local $sData = StringStripWS(BinaryToString(InetRead("http://www.autoitscript.com")), 8)

;Belirli etiketler (sabit yazılar vs.) içindeki resmin linkini bulalalım.
Local $InStr = StringInStr($sData, '<divclass="logo_container">')
$sData = StringTrimLeft($sData, $InStr)
$InStr = StringInStr($sData, "this.src=")
$sData = StringTrimLeft($sData, $InStr + StringLen("this.src="))

$InStr = StringInStr($sData, "';")
$sData = StringLeft($sData, $InStr - 1)
If StringLen($sData) = 0 Then
	MsgBox(64, "", "Resmin Linki Alınamadı vs.")
	Exit
EndIf

MsgBox(4096, "Resimin Linki", $sData)

;Resimi Indirelim. Tabi ben basit örnek kod veriyorum.
;Yardım dosyasındaki örnek
Local $hDownload = InetGet($sData, @TempDir & "\logo.png", 0, 1)
Do
	Sleep(250)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.
Local $nBytes = InetGetInfo($hDownload, 0)
InetClose($hDownload) ; Close the handle to release resources.

;MsgBox(0, "", "Bytes read: " & $nBytes)

; Create GUI
Global $hGUI = GUICreate("Show PNG", 640, 480)
GUISetBkColor(0)
GUISetState()

; Load PNG image
_GDIPlus_Startup()
Global $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\logo.png")

; Draw PNG image
Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)

; Loop until user exits
Do
Until GUIGetMsg() = -3

; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

Cevapla