F11 tuşunu çalıştıracak komut dizini - Çözüldü

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Rulemaster
Byte1
Byte1
Mesajlar: 31
Kayıt: 25 Tem 2013, 11:22

F11 tuşunu çalıştıracak komut dizini - Çözüldü

Mesaj gönderen Rulemaster » 07 May 2018, 01:45

Sayın Arkadaşlar,

Ben bir adet bilgisayarın açıldığı zaman benim belirlediğim resimleri tam ekran olarak otomatik açmasını ve slayt modunda devamlı döndürmesini istiyorum. Bu sorunumu çözmek için aşağıda paylaştığım batch file komutlarını yazdım ve düzgün çalıştığını kontrol ettim.

Kod: Tümünü seç

@echo off
set file=C:\Users\user\Pictures\slaytfolder\a1.jpg
start %SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %file%
exit 
Bunu çalıştırınca; resim açılıyor ama slayt moduna geçmesi için F11 tuşunun tetiklenmesi lazım.
Sizler bu konuda bir tecrübe edindiniz mi? Slayta geçmesi için ne yapmak lazım.

Teşekkürler.



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

Re: F11 tuşunu çalıştıracak komut dizini

Mesaj gönderen BlueLife » 07 May 2018, 11:59

@Rulemaster

PhotoViewer.dll komutlarına baktım lakin slide showu başlatmak için bir girdi göremedim. Slide showu başlattıktan sonra otomatik F11 tuşuna bastırarak istediğini yapabilirsin. Autoit ile bir şeyler karaladım. Resim konumunu exeye parametre olarak giriyorsun. Resmi çalıştırdıktan sonra, 1-2 saniye içinde F11 tuşuna basıyor. Kurcalarsın. Kolay gelsin...

http://bluelife.sordum.com/Autoit/slideshow.zip

Kullanıcı avatarı
HaYTo
Byte3
Byte3
Mesajlar: 125
Kayıt: 19 Nis 2013, 19:00
cinsiyet: Erkek

Re: F11 tuşunu çalıştıracak komut dizini

Mesaj gönderen HaYTo » 07 May 2018, 14:04

BlueLife yazdı:
07 May 2018, 11:59
@Rulemaster

PhotoViewer.dll komutlarına baktım lakin slide showu başlatmak için bir girdi göremedim. Slide showu başlattıktan sonra otomatik F11 tuşuna bastırarak istediğini yapabilirsin. Autoit ile bir şeyler karaladım. Resim konumunu exeye parametre olarak giriyorsun. Resmi çalıştırdıktan sonra, 1-2 saniye içinde F11 tuşuna basıyor. Kurcalarsın. Kolay gelsin...

http://bluelife.sordum.com/Autoit/slideshow.zip
sağolasın
Steam : http://steamcommunity.com/id/HaYTo
Youtube : https://www.youtube.com/haytokoraz

Rulemaster
Byte1
Byte1
Mesajlar: 31
Kayıt: 25 Tem 2013, 11:22

Re: F11 tuşunu çalıştıracak komut dizini

Mesaj gönderen Rulemaster » 08 May 2018, 01:53

BlueLife yazdı:
07 May 2018, 11:59
@Rulemaster

PhotoViewer.dll komutlarına baktım lakin slide showu başlatmak için bir girdi göremedim. Slide showu başlattıktan sonra otomatik F11 tuşuna bastırarak istediğini yapabilirsin. Autoit ile bir şeyler karaladım. Resim konumunu exeye parametre olarak giriyorsun. Resmi çalıştırdıktan sonra, 1-2 saniye içinde F11 tuşuna basıyor. Kurcalarsın. Kolay gelsin...

http://bluelife.sordum.com/Autoit/slideshow.zip

Sayın BlueLife,
Zamanınızı ayırıp, yardımcı olduğunuz için size teşekkür ederim. Gönderdiğiniz exe çaşıyor. Gayet güzel olmuş elinize sağlık.
Aslında bunu yapabilen 3.party uygulamalar da vardı ama ben script yolu ile çözerim diye düşünmüştüm.

Bende gündüz bununla ilgili olarak ne yapabilirim diye düşündüm. Sordum'da bakınırken, Velociraptor'un buradaki makalesini gördüm.
https://www.sordum.net/3023/vbs-de-klav ... asyonlari/

F11 tuşunu çalıştırmak cmd komutları ile olmuyor ama vbs script ile oluyordu. Bunu üzerine Fonbir.vbs adında bir dosya yapıp, içine aşağıdaki kodu yazdım. Bu kod F11 tuşuna basılmasını sağlıyordu.

Kod: Tümünü seç

set shell = CreateObject("Wscript.Shell") 
shell.SendKeys "{F11}"
Daha sonra da ilk yazdığım Batch file kodlarını aşağıdaki şekilde değiştirdim.

Kod: Tümünü seç

@echo off
cd\
taskkill /f /IM explorer.exe

set file=C:\Users\user\Pictures\deneme\a4.jpg
start %SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %file%

timeout /t 3 /nobreak > NULL

WScript "C:\User\user\Desktop\Fonbir.vbs"

exit:
Bu şekilde yapınca tam istediğim gibi oldu. Bu tarz bir şeyler yapmak isteyenler olursa onlara örnek olması için yazdım.
Tabi sizin yaptığınız daha profesyonel olmuş. Desteğiniz için tekrar teşekkürler. Selamlar...

anxious
Byte2
Byte2
Mesajlar: 65
Kayıt: 11 Mar 2015, 07:56

Re: F11 tuşunu çalıştıracak komut dizini - Çözüldü

Mesaj gönderen anxious » 08 May 2018, 03:40

@BlueLife
SlideShow.exe kaynak kodlarını verebilirmisiniz?
Bende böyle birşey yaptım ama sizinkiyle aynımı merak ettim :)

Kod: Tümünü seç

Example()
Func Example()
	ShellExecute(@ScriptDir & "\Img\img1.jpg")
	Local $hWnd = WinWait("[CLASS:Photo_Lightweight_Viewer]", "", 10)
	WinActivate($hWnd)
	Send("{F11}")
EndFunc

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

Re: F11 tuşunu çalıştıracak komut dizini - Çözüldü

Mesaj gönderen BlueLife » 08 May 2018, 09:20

@anxious

Verdiğim exede ek olarak bir kaç kontrol vs. daha vardı. Neyse kısaltılmış versiyon aşağıdaki. Kolay gelsin arkadaşlar, iyi forumlar...

Kod: Tümünü seç

Global Const $BackSlash = Chr(92) ; \ Slash
Opt("ExpandEnvStrings", 1)
Global $WindowsDir = @WindowsDir
If StringRight($WindowsDir, 1) <> $BackSlash Then $WindowsDir &= $BackSlash
FileChangeDir($WindowsDir)

Global $ScriptDir = @ScriptDir
If StringRight($ScriptDir, 1) <> $BackSlash Then $ScriptDir &= $BackSlash

Global $CMD_PHOTO = StringReplace($CMDLINERAW, '"', '')
;~ $CMD_PHOTO = "C:\Windows\Web\Wallpaper\Architecture\img13.jpg"

If StringLen($CMD_PHOTO) <> 0 And FileExists($CMD_PHOTO) = 0 And FileExists($ScriptDir & $CMD_PHOTO) = 1 Then $CMD_PHOTO = $ScriptDir & $CMD_PHOTO
If StringLen($CMD_PHOTO) = 0 Or FileExists($CMD_PHOTO) = 0 Then
	MsgBox(64, "www.sordum.org", "Missing parameter or not found photo file" & @CRLF & @CRLF & _
			"Sample Commands:" & @CRLF & _
			@ScriptName & " C:\sapmle.jpg", 15, 0)
	Exit
EndIf

Global $RunShowPID = Run('"' & $WindowsDir & 'System32\rundll32.exe" "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll",ImageView_Fullscreen ' & $CMD_PHOTO, @WorkingDir)
If ProcessExists($RunShowPID) = 0 Then Exit

Global $WinList, $GetList[1] = [0]
For $X = 1 To 150
	Sleep(50)
	$WinList = WinList()
	For $I = 1 To $WinList[0][0]
		If StringLen($WinList[$I][0]) = 0 Or $RunShowPID <> WinGetProcess($WinList[$I][1]) Then ContinueLoop
		$GetList[0] += 1
		ReDim $GetList[$GetList[0] + 1]
		$GetList[$GetList[0]] = $WinList[$I][1]
	Next
	If $GetList[0] > 0 Then ExitLoop
Next

For $X = 1 To 15
	For $I = 1 To $GetList[0]
		ControlSend($GetList[$I], "", $GetList[$I], "{F11}")
	Next
	Sleep(100)
Next
Send("{F11}")
Exit

Cevapla