Harici dosyayı kapatmak

Katılım
7 Mayıs 2005
Mesajlar
35
Ding.wav dosyasını kısa bir süre çaldırdıktan sonra kapatmak istiyorum.
Sendkeys ile kapattıramadım. Terminate process ile de yaptıramadım. (Belki openprocess ile açmadığım için terminate ile bitiremedim.

handle = ShellExecute(0, "Open", "C:\WINNT\media\ding.wav", 0, 0, 1)

3 sn sonra nasıl durdurabilirim; önerisi olan var mı?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Aşağıdaki şekilde deneyin...

[vb:1:d56f060b9b]Private Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Const MyWav As String = "C:\WINNT\media\ding.wav"
'
Sub PlayWav()
Call sndPlaySound32(MyWav, &H1 Or &H8)
Application.OnTime Now + TimeSerial(0, 0, 3), "StopWav"
End Sub
'
Sub StopWav()
Call sndPlaySound32(MyWav, 1)
End Sub
[/vb:1:d56f060b9b]
 
Katılım
7 Mayıs 2005
Mesajlar
35
Verdiğiniz kodu çalıştırdım. Nedense "StopWav" ı çalıştırıp programı durduramıyor.
Elle "StopWav" ı çalıştırabiliyorum ama aşağıdaki kod "StopWav"ı çalıştıramıyor.

Application.OnTime Now + TimeSerial(0, 0, 3), "StopWav"

Sub StopWav()
Call sndPlaySound32(MyWav, 1)
End Sub
 
Katılım
7 Mayıs 2005
Mesajlar
35
Ben de "wait" ile bekledikten sonra " Call sndPlaySound32(MyWav, 1) " olarak çalıştırıyorum ama bu durumda da tüm program müziği beklemek zorunda kalıyor.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ben herhangibir problem yaşamıyorum....

Yukarıdaki kodun hepsini yeni bir modul içine (Module1) yerleştirip, PlayWav isimli proseduru çalıştırınca, parçanın çalınması 3 saniye sonra duruyor.
 
Katılım
7 Mayıs 2005
Mesajlar
35
Yazdığınız gibi ayrı modülden çalıştırınca bende de doğru çalıştı.

Ancak "playwav" ı ayrı modülde bulunan yazdığım kod içinden çağırınca, benim kod kendi uygulamasına devam ederken "playwav" kesintiyi yapamıyor.

Uygulama benim koda geçince sanki "playwav" kendi uygulamasını unutmuş ya da vazgeçmiş oluyor.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Dosyanızı gönderin de bir bakalım...
 
Katılım
7 Mayıs 2005
Mesajlar
35
Aşağıda giriş kısmını kopyaladım. Uzunca bir program. Dikkat ederseniz "playwav" programını etkileyecek pek bir unsur yok. Problem "playwav" ı program içinden çağırmamdan kaynaklanıyor.



Sub datsrc()
'
'Dim satır As Integer, ILK As Integer, SCNK As Integer, SATR As Integer, SAYI As Integer, _
SON As Integer, STUN As Integer, LA As Integer, BAS As Integer, _
a As Integer, CVP As Integer, KZK As Integer, KZK2 As Integer, BIRIM As Integer
Dim Snt As String, isrt As String
Dim Simdi As Date, Basla As Date, Simdi2 As Date, TARIH As Date
Dim handle As Long, RN As Range


If Not WorkbookOpen("UN-D.xls") Then
Workbooks.Open "D:\UN-D.xls"
End If
Call PlayWav

On Error GoTo 888
ILK = 1
MsgBox "dosyaları kaydettiniz mi?"
Application.ScreenUpdating = False

SCNK = Int(InputBox("EN SON DURUMU YÜKLE = 1, EKSİKLERİ TAMAMLA = 2", , "2"))
If SCNK > 2 Then MsgBox "YANLIÞ GİRİÞ!": Stop
..................
...........
......
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Dosyanın tamamını görmeden birşey söylemek zor ama;

Dim handle As Long, RN As Range

satırından sonra...

doevents

komutunu yerleştirip, deneyin...
 
Katılım
7 Mayıs 2005
Mesajlar
35
İşe yaradı... Sağolun...

İki şey sormak istiyorum. "Doevents" diyerek bir şeyi açmış oluyoruz.
Bir iki satır sonra bunu kapatmak mümkün müdür? Yani "default" a nasıl
dönülüyor?

Bir de sndPlaySound32() fonksiyonu ben de iki ayrı yerden ses veriyor. Bende
windows media player - ver 9 kurulu. sndPlaySound32(), bir yandan kendi
bir şekilde sesi çaldırıyor, bir de media player (daha düşük tonda olmak üzere)
arka planda aynı sesi çalıyor. Bir uyumsuzluk mu var acaba?

Yardımlarınız için çok teşekkür ediyorum, işlerinizde kolaylıklar diliyorum...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
windows media player neden o sırada da çalışsın ki ?

sndPlaySound32 fonksiyonu zaten o programı kullanmıyor.

Ama, ilk verdiğiniz kodlarda geçen ....

handle = ShellExecute(0, "Open", "C:\WINNT\media\ding.wav", 0, 0, 1)
satırını silmediyseniz ve de, "*.wav" dosyaları eğer Media Player ile ilişkilendirildiyse (ki, öyle görünüyor..) o zaman, belirttiğiniz gibi bir durum olabilir.

Artık, ShellExecute satırına ihtiyacınız kalmamış olması lazım, onu silin....
 
Üst